You are here

function menu_per_role_menu_link_update in Menu Per Role 7

Implements hook_menu_link_update().

1 call to menu_per_role_menu_link_update()
menu_per_role_menu_link_alter in ./menu_per_role.module
Implements hook_menu_link_alter().

File

./menu_per_role.module, line 117
Allows restricting access to menu items per role.

Code

function menu_per_role_menu_link_update($link) {
  if (isset($link['menu_per_role']) && user_access('administer menu_per_role')) {

    // Hide but to those roles.
    $rids_str = _menu_per_role_serialize_rids($link['menu_per_role']['menu_per_role_roles']);

    // Show but to those roles.
    $hrids_str = _menu_per_role_serialize_rids($link['menu_per_role']['menu_per_role_hide_from_roles']);
    $fields = array(
      'rids' => $rids_str,
      'hrids' => $hrids_str,
    );
    $count = db_select('menu_per_role')
      ->condition('mlid', $link['mlid'])
      ->countQuery()
      ->execute()
      ->fetchField();
    if ($count == 0) {
      $fields['mlid'] = $link['mlid'];
      db_insert('menu_per_role')
        ->fields($fields)
        ->execute();
    }
    else {
      db_update('menu_per_role')
        ->fields($fields)
        ->condition('mlid', $link['mlid'])
        ->execute();
    }
  }
}