| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313 | <?php/** * @file * This file contains no working PHP code; it exists to provide additional * documentation for doxygen as well as to document hooks in the standard * Drupal manner. *//** * @addtogroup hooks * @{ *//*** Act on profiles being loaded from the database.** This hook is invoked during profile loading, which is handled by* entity_load(), via the EntityCRUDController.** @param $entities*   An array of profile2 entities being loaded, keyed by id.** @see hook_entity_load()*/function hook_profile2_load($entities) {  $result = db_query('SELECT pid, foo FROM {mytable} WHERE pid IN(:ids)', array(':ids' => array_keys($entities)));  foreach ($result as $record) {    $entities[$record->pid]->foo = $record->foo;  }}/*** Respond when a profile is inserted.** This hook is invoked after the profile is inserted into the database.** @param profile*   The profile that is being inserted.** @see hook_entity_insert()*/function hook_profile2_insert($profile) {  db_insert('mytable')    ->fields(array(      'pid' => $profile->pid,      'extra' => $profile->extra,    ))    ->execute();}/*** Act on a profile being inserted or updated.** This hook is invoked before the profile is saved to the database.** @param $profile*   The profile that is being inserted or updated.** @see hook_entity_presave()*/function hook_profile2_presave($profile) {  $profile->extra = 'foo';}/*** Respond to a profile being updated.** This hook is invoked after the profile has been updated in the database.** @param $profile*   The $profile that is being updated.** @see hook_entity_update()*/function hook_profile2_update($profile) {  db_update('mytable')    ->fields(array('extra' => $profile->extra))    ->condition('pid', $profile->pid)    ->execute();}/*** Respond to profile deletion.** This hook is invoked after the profile has been removed from the database.** @param $profile*   The profile that is being deleted.** @see hook_entity_delete()*/function hook_profile2_delete($profile) {  db_delete('mytable')    ->condition('pid', $profile->pid)    ->execute();}/*** Act on a profile that is being assembled before rendering.** @param $profile*   The profile entity.* @param $view_mode*   The view mode the profile is rendered in.* @param $langcode*   The language code used for rendering.** The module may add elements to $profile->content prior to rendering. The* structure of $profile->content is a renderable array as expected by* drupal_render().** @see hook_entity_prepare_view()* @see hook_entity_view()*/function hook_profile2_view($profile, $view_mode, $langcode) {  $profile->content['my_additional_field'] = array(    '#markup' => $additional_field,    '#weight' => 10,    '#theme' => 'mymodule_my_additional_field',  );}/*** Alter the results of entity_view() for profiles.** @param $build*   A renderable array representing the profile content.** This hook is called after the content has been assembled in a structured* array and may be used for doing processing which requires that the complete* profile content structure has been built.** If the module wishes to act on the rendered HTML of the profile rather than* the structured content array, it may use this hook to add a #post_render* callback. Alternatively, it could also implement hook_preprocess_profile2().* See drupal_render() and theme() documentation respectively for details.** @see hook_entity_view_alter()*/function hook_profile2_view_alter($build) {  if ($build['#view_mode'] == 'full' && isset($build['an_additional_field'])) {    // Change its weight.    $build['an_additional_field']['#weight'] = -10;    // Add a #post_render callback to act on the rendered HTML of the entity.    $build['#post_render'][] = 'my_module_post_render';  }}/** * Act on profile type being loaded from the database. * * This hook is invoked during profile type loading, which is handled by * entity_load(), via the EntityCRUDController. * * @param $types *   An array of profiles being loaded, keyed by profile type names. */function hook_profile2_type_load($types) {  if (isset($types['main'])) {    $types['main']->userCategory = FALSE;    $types['main']->userView = FALSE;  }}/** * Respond when a profile type is inserted. * * This hook is invoked after the profile type is inserted into the database. * * @param $type *   The profile type that is being inserted. */function hook_profile2_type_insert($type) {  db_insert('mytable')    ->fields(array(      'id' => $type->id,      'extra' => $type->extra,    ))    ->execute();}/** * Act on a profile type being inserted or updated. * * This hook is invoked before the profile type is saved to the database. * * @param $type *   The profile type that is being inserted or updated. */function hook_profile2_type_presave($type) {  $type->extra = 'foo';}/** * Respond to updates to a profile. * * This hook is invoked after the profile type has been updated in the database. * * @param $type *   The profile type that is being updated. */function hook_profile2_type_update($type) {  db_update('mytable')    ->fields(array('extra' => $type->extra))    ->condition('id', $type->id)    ->execute();}/** * Respond to profile type deletion. * * This hook is invoked after the profile type has been removed from the * database. * * @param $type *   The profile type that is being deleted. */function hook_profile2_type_delete($type) {  db_delete('mytable')    ->condition('id', $type->id)    ->execute();}/** * Define default profile type configurations. * * @return *   An array of default profile types, keyed by profile type names. */function hook_default_profile2_type() {  $types['main'] = new ProfileType(array(      'type' => 'main',      'label' => t('Profile'),      'weight' => 0,      'locked' => TRUE,  ));  return $types;}/*** Alter default profile type configurations.** @param $defaults*   An array of default profile types, keyed by type names.** @see hook_default_profile2_type()*/function hook_default_profile2_type_alter(&$defaults) {  $defaults['main']->label = 'custom label';}/** * Alter profile2 forms. * * Modules may alter the profile2 entity form regardless to which form it is * attached by making use of this hook or the profile type specifiy * hook_form_profile2_edit_PROFILE_TYPE_form_alter(). #entity_builders may be * used in order to copy the values of added form elements to the entity, just * as described by entity_form_submit_build_entity(). * * @param $form *   Nested array of form elements that comprise the form. * @param $form_state *   A keyed array containing the current state of the form. * * @see profile2_attach_form() */function hook_form_profile2_form_alter(&$form, &$form_state) {  // Your alterations.}/** * Control access to profiles. * * Modules may implement this hook if they want to have a say in whether or not * a given user has access to perform a given operation on a profile. * * @param $op *   The operation being performed. One of 'view', 'edit' (being the same as *   'create' or 'update') and 'delete'. * @param $profile *   (optional) A profile to check access for. If nothing is given, access for *   all profiles is determined. * @param $account *   (optional) The user to check for. If no account is passed, access is *   determined for the global user. * @return boolean *   Return TRUE to grant access, FALSE to explicitly deny access. Return NULL *   or nothing to not affect the operation. *   Access is granted as soon as a module grants access and no one denies *   access. Thus if no module explicitly grants access, access will be denied. * * @see profile2_access() */function hook_profile2_access($op, $profile = NULL, $account = NULL) {  if (isset($profile)) {    // Explicitly deny access for a 'secret' profile type.    if ($profile->type == 'secret' && !user_access('custom permission')) {      return FALSE;    }    // For profiles other than the default profile grant access.    if ($profile->type != 'main' && user_access('custom permission')) {      return TRUE;    }    // In other cases do not alter access.  }}/** * @} */
 |