You are here

function menu_item_visibility_load in Menu Item Visibility 7

Load all visibility data for a menu link.

2 calls to menu_item_visibility_load()
menu_item_visibility_form_menu_edit_item_alter in ./menu_item_visibility.module
Implements hook_form_FORM_ID_alter().
menu_item_visibility_translated_menu_link_alter in ./menu_item_visibility.module
Implements hook_translated_menu_link_alter().

File

./menu_item_visibility.module, line 63
Alters the menu item form to specify roles who are allowed to view them.

Code

function menu_item_visibility_load($mlid, $reset = FALSE) {

  // Use the advanced drupal_static() pattern, since this is called very often.
  static $drupal_static_fast;
  if (!isset($drupal_static_fast)) {
    $drupal_static_fast['visibilities'] =& drupal_static(__FUNCTION__);
  }
  $visibilities =& $drupal_static_fast['visibilities'];

  // If we haven't stored them all in the static build them from the database.
  if (!isset($visibilities) || $reset) {

    // Select all menu link ids and their role ids.
    $result = db_select('menu_links_visibility_role', 'r')
      ->fields('r', array(
      'mlid',
      'rid',
    ))
      ->execute()
      ->fetchAll(PDO::FETCH_ASSOC);
    $visibilities = array();
    foreach ($result as $record) {
      $visibilities[$record['mlid']][] = $record['rid'];
    }
  }
  $visibility['roles'] = !empty($visibilities[$mlid]) ? $visibilities[$mlid] : array();
  if (!empty($mlid)) {
    drupal_alter('menu_item_visibility_load', $visibility, $mlid);
  }
  return $visibility;
}