/**
 * Handle on inline tabs event
 *
 * @param NamedList $tabs
 * @param ApplicationObject $object
 * @param User $logged_user
 * @param string $interface
 * @return null
 */
function ac_gitolite_handle_on_inline_tabs(&$tabs, &$object, &$logged_user, $interface)
{
    if ($object instanceof User) {
        if ($object->getId() == $logged_user->getId() || $logged_user->isAdministrator() || $logged_user->isPeopleManager()) {
            $tabs->add('view_keys', array('title' => lang('Public Keys'), 'url' => Router::assemble('get_public_keys', array('company_id' => $object->getCompanyId(), 'user_id' => $object->getId()))));
        }
    }
    // if User
}
 /**
  * Returns true if $user can archive this company
  *
  * @param User $user
  * @return boolean
  */
 function canArchive($user)
 {
     if ($this->isOwner()) {
         return false;
     } else {
         return $user->isPeopleManager();
     }
     // if
 }
 /**
  * Returns true if $user can (re)send welcome message
  *
  * @param User $user
  * @return boolean
  */
 function canSendWelcomeMessage($user)
 {
     return $user->isPeopleManager() || $user->isCompanyManager($this->getCompany());
 }
 /**
  * Return ID-s of companies $user can see
  *
  * @param User $user
  * @return array
  */
 function findVisibleCompanyIds($user)
 {
     // Admins can see all companies in the database
     if ($user->isAdministrator() || $user->isPeopleManager()) {
         $rows = db_execute_all('SELECT id FROM ' . TABLE_PREFIX . 'companies ORDER BY name');
         $result = array();
         if (is_foreachable($rows)) {
             foreach ($rows as $row) {
                 $result[] = (int) $row['id'];
             }
             // foreach
         }
         // if
         return $result;
     }
     // if
     $visible_user_ids = $user->visibleUserIds();
     if (is_foreachable($visible_user_ids)) {
         $users_table = TABLE_PREFIX . 'users';
         $companies_table = TABLE_PREFIX . 'companies';
         $rows = db_execute_all("SELECT DISTINCT(company_id) FROM {$users_table}, {$companies_table} WHERE {$users_table}.id IN (?) ORDER BY {$companies_table}.is_owner DESC, {$companies_table}.name", $visible_user_ids);
         $result = array();
         if (is_foreachable($rows)) {
             foreach ($rows as $row) {
                 $result[] = (int) $row['company_id'];
             }
             // foreach
         }
         // if
         if (!in_array($user->getCompanyId(), $result)) {
             $result[] = $user->getCompanyId();
         }
         // if
         $projects_table = TABLE_PREFIX . 'projects';
         $project_users_table = TABLE_PREFIX . 'project_users';
         $rows = db_execute_all("SELECT DISTINCT {$projects_table}.company_id AS 'company_id' FROM {$projects_table}, {$project_users_table} WHERE {$projects_table}.id = {$project_users_table}.project_id AND {$project_users_table}.user_id = ? AND {$projects_table}.company_id > 0 AND {$projects_table}.company_id NOT IN (?)", $user->getId(), $result);
         if (is_foreachable($rows)) {
             foreach ($rows as $row) {
                 $result[] = (int) $row['company_id'];
             }
             // foreach
         }
         // if
         return $result;
     } else {
         return array($user->getCompanyId());
     }
     // if
 }