/** * 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 }