Guest User

Untitled

a guest
Apr 24th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.70 KB | None | 0 0
  1. <?php
  2. /**
  3.  * @file
  4.  * This custom code is intended to handle situations in which a directory person is privately flagged,
  5.  *  and the user does not have permission to see that person.
  6.  */
  7.  
  8. include_once('directory.features.inc');
  9.  
  10. /**
  11.  * Implements hook_permission.
  12.  *
  13.  * Provides a permission to restrict the visibility of private-flagged directory persons.
  14.  */
  15. function directory_permission() {
  16.     return array('view private directory persons' => array('title' => t('View private directory persons')));
  17. }
  18.  
  19. /**
  20.  * Implements hook_node_access.
  21.  *
  22.  * Restricts visibility of private-flagged directory persons to people with the appropriate permission.
  23.  *
  24.  * @param node
  25.  *   The node being accessed.
  26.  * @param op
  27.  *   The operation being requested.
  28.  */
  29. function directory_node_access($node, $op) {
  30.     if ($node->type == 'directory_person') {
  31.         $private = flag_get_flag('directory_person_private') or die ('private flag does not exist');
  32.         if ($op == 'view' && !user_access('view private directory persons') && $private->is_flagged($node->nid)) {
  33.             return NODE_ACCESS_DENY;
  34.         }
  35.     } else {
  36.         return NODE_ACCESS_IGNORE;
  37.     }
  38. }
  39.  
  40. /**
  41.  * Implements hook_page_alter.
  42.  *
  43.  * Removes redundant public directory index block if user has access to private directory index block.
  44.  *
  45.  * @param page
  46.  *   The page array that is used to build the page.
  47.  */
  48. function directory_page_alter(&$page) {
  49.     if (user_access('view private directory persons')) {
  50.         foreach (system_region_list(variable_get('theme_default'), REGIONS_VISIBLE) as $region => $value) {
  51.             if (isset($page[$region]['views_directory-directory_block_index'])) {
  52.                 unset($page[$region]['views_directory-directory_block_index']);
  53.             }
  54.         }
  55.     }
  56. }
Add Comment
Please, Sign In to add comment