User Tools

Site Tools


dr:api_sequences

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
dr:api_sequences [2005/11/06 07:51] – typos fgmdr:api_sequences [2020/11/23 17:23] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====== API Sequences: node life cycle=====
  
 +(in Drupal 4.6.x)
 +
 +... during the building of the various pages creating and editing a custom node..., as noted on a 4.6.3 installation during the development of the [[http://drupal.org/node/30947|helpdesk module]]
 +
 +
 +===== Table of hook calls seen by a module =====
 +
 +<html>
 +
 +<style type="text/css">
 +  body { font-size:small }
 +  th, td { vertical-align: top }
 +  th[scope="row"] { font-weight: normal; font-family:"Courier New", Courier, mono ; text-align: left}
 +  td { vertical-align:top; text-align:center }
 +  </style>
 +<table cellspacing="0" cellpadding="0" border="1">
 +  <tr>
 +    <th><span class="search_hit">Sequence</span> of <span class="search_hit">hooks</span> fired</th>
 +    <th>1: New</th>
 +    <th width="119">2: Preview</th>
 +    <th>3: Submit<br> 
 +    invalid new</th>
 +    <th>4: Submit <br>
 +    valid new</th>
 +    <th>5: Redirect <br>
 +    after create</th>
 +    <th>6: View node</th>
 +    <th>7: Edit node</th>
 +    <th>8: Track node </th>
 +  </tr>
 +  <tr>
 +    <th scope="row">hook_menu</th>
 +    <td>X</td>
 +    <td>X</td>
 +    <td>X</td>
 +    <td>X</td>
 +    <td>X</td>
 +    <td>X</td>
 +    <td>X</td>
 +    <td>X</td>
 +  </tr>
 +  <tr>
 +    <th scope="row">hook_access</th>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>1 per node type</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +  </tr>
 +  <tr>
 +    <th scope="row">hook_node_types</th>
 +    <td>X</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +  </tr>
 +  <tr>
 +    <th scope="row">hook_user('load')</th>
 +    <td>no uid<br>
 +      name</td>
 +    <td>no uid<br>
 +      name</td>
 +    <td>no uid<br>
 +name</td>
 +    <td>no uid<br>name</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +  </tr>
 +  <tr>
 +    <th scope="row">hook_load</th>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>valid nid</td>
 +    <td>valid nid</td>
 +    <td>valid nid</td>
 +    <td>valid nid</td>
 +  </tr>
 +  <tr>
 +    <th scope="row">hook_nodeapi ('load')</th>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>valid nid</td>
 +    <td>valid nid</td>
 +    <td>valid nid</td>
 +    <td>valid nid</td>
 +  </tr>
 +  <tr>
 +    <th scope="row">hook_menu</th>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>X</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +  </tr>
 +  <tr>
 +    <th scope="row">hook_user('load')</th>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>no uid<br>
 +      name of node owner</td>
 +    <td>&nbsp;</td>
 +  </tr>
 +  <tr>
 +    <th scope="row">hook_validate</th>
 +    <td>builtin fields</td>
 +    <td>builtin fields<br>
 +      module fields<br>
 +      no object</td>
 +    <td>builtin fields<br>
 +      module fields<br>
 +      no object</td>
 +    <td>builtin fields<br>
 +      module fields<br>
 +      no object</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>builtin fields<br>
 +        <br>
 +      loaded object</td>
 +    <td>&nbsp;</td>
 +  </tr>
 +  <tr>
 +    <th scope="row">hook_nodeapi('validate'</th>
 +    <td>X</td>
 +    <td>X</td>
 +    <td>X</td>
 +    <td>X</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>valid nid</td>
 +    <td>&nbsp;</td>
 +  </tr>
 +  <tr>
 +    <th scope="row">hook_nodeapi('fields')</th>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>X</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +  </tr>
 +  <tr>
 +    <th scope="row">hook_insert</th>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>builtin fields<br>
 +      module fields<br>
 +      no object<br>
 +      valid nid </td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +  </tr>
 +  <tr>
 +    <th scope="row">hook_nodeapi('insert')</th>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>valid nid </td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +  </tr>
 +  <tr>
 +    <th scope="row">hook_user('load')</th>
 +    <td>&nbsp;</td>
 +    <td>    no uid <br>
 +      name</td>
 +    <td>no uid <br>
 +name</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +  </tr>
 +  <tr>
 +    <th scope="row">hook_view</th>
 +    <td>&nbsp;</td>
 +    <td>builtin fields<br>
 +      module fields<br>
 +      no object</td>
 +    <td>builtin fields<br>
 +        <br>
 +      loaded object</td>
 +    <td>&nbsp;</td>
 +    <td>valid nid</td>
 +    <td>valid nid</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +  </tr>
 +  <tr>
 +    <th scope="row">hook_nodeapi('view')</th>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>X</td>
 +    <td>&nbsp;</td>
 +    <td>valid nid </td>
 +    <td>valid nid</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +  </tr>
 +  <tr>
 +    <th scope="row">hook_nodeapi('form pre')</th>
 +    <td>X</td>
 +    <td>X</td>
 +    <td>X</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>valid nid</td>
 +    <td>&nbsp;</td>
 +  </tr>
 +  <tr>
 +    <th scope="row">hook_form</th>
 +    <td>builtin fields</td>
 +    <td>builtin fields<br>
 +module fields<br>
 +no object</td>
 +    <td>builtin fields<br>
 +  module fields<br>
 +  no object</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>builtin fields<br>
 +      <br>
 +      loaded object</td>
 +    <td>&nbsp;</td>
 +  </tr>
 +  <tr>
 +    <th scope="row">hook_nodeapi('form post')</th>
 +    <td>X</td>
 +    <td>X</td>
 +    <td>X</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>valid nid</td>
 +    <td>&nbsp;</td>
 +  </tr>
 +  <tr>
 +    <th scope="row">hook_nodeapi('form admin')</th>
 +    <td>X</td>
 +    <td>X</td>
 +    <td>X</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>valid nid</td>
 +    <td>&nbsp;</td>
 +  </tr>
 +  <tr>
 +    <th scope="row">hook_nodeapi('form param')</th>
 +    <td>X</td>
 +    <td>X</td>
 +    <td>X</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>valid nid</td>
 +    <td>&nbsp;</td>
 +  </tr>
 +  <tr>
 +    <th scope="row">hook_node_name</th>
 +    <td>X</td>
 +    <td>X</td>
 +    <td>X</td>
 +    <td>valid nid </td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +    <td>&nbsp;</td>
 +  </tr>
 +  <tr>
 +    <th scope="row">hook_node_types</th>
 +    <td>X</td>
 +    <td>&nbsp;</td>
 +    <td>X</td>
 +    <td>X</td>
 +    <td>X</td>
 +    <td>X</td>
 +    <td>X</td>
 +    <td>X</td>
 +  </tr>
 +  <tr>
 +    <th scope="row">hook_block</th>
 +    <td>1 per block</td>
 +    <td>1 per block</td>
 +    <td>1 per block</td>
 +    <td>1 per block</td>
 +    <td>1 per block</td>
 +    <td>1 per block</td>
 +    <td>1 per block</td>
 +    <td>1 per block</td>
 +  </tr>
 +  <tr>
 +    <th scope="row">hook_help('node/...')</th>
 +    <td>add/&lt;node type&gt;</td>
 +    <td>add/&lt;node type&gt;</td>
 +    <td>add/&lt;node type&gt;</td>
 +    <td>add/&lt;node type&gt;</td>
 +    <td>&lt;nid&gt;</td>
 +    <td>&lt;nid&gt;</td>
 +    <td>&lt;nid&gt;/edit</td>
 +    <td>&lt;nid&gt;/track</td>
 +  </tr>
 +</table>
 +
 +</html>
 +
 +===== Notes =====
 +
 +The difference between 'modules fields' and 'loaded object' occurs if the module defines the additional fields it handles as fields as wrapped in an object [[http://blog.riff.org/index.php/2005/10/10/29-drupal-tips-hook_load-and-data-isolation|elswehere]]
 +
 +  * "Module fields" is just a set of array entries made available, intermixed with the builtin array entries
 +  * "Loaded object" refers the same, but when they are returned by core as the wrapper object.
 +
 +Basically, modules fields are returned from a HTML form, whereas a loaded object comes from the DB.
 +
 +Of course, any additional calls done by the module will appear somewhere in between these. For instance, helpdesk loads the information about a contract's customer, which is a drupal USER, so <code>hook_user('load')</code> is fired from the module.
 +
 +Similarly, any call to [[http://drupaldocs.org/api/head/function/l|l()]] causes [[http://drupaldocs.org/api/head/function/hook_link|hook_link]] to be fired too.
dr/api_sequences.txt · Last modified: 2020/11/23 17:23 by 127.0.0.1