本文整理汇总了PHP中PFUser::isSuperUser方法的典型用法代码示例。如果您正苦于以下问题:PHP PFUser::isSuperUser方法的具体用法?PHP PFUser::isSuperUser怎么用?PHP PFUser::isSuperUser使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PFUser
的用法示例。
在下文中一共展示了PFUser::isSuperUser方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: checkUserIsSiteadmin
private function checkUserIsSiteadmin(PFUser $user, Response $response)
{
if (!$user->isSuperUser()) {
$response->addFeedback(Feedback::ERROR, $GLOBALS['Language']->getText('global', 'perm_denied'));
$response->redirect('/');
}
}
示例2: sendMassmail
/**
*
* Send mails to a group of people and check the max number of emailed people limit.
*
* @param Project $project Project of the receivers
* @param PFO_User $user Sender
* @param string $subject
* @param string $html_body
* @param PFUser[] $receivers
*/
public function sendMassmail(Project $project, PFUser $user, $subject, $html_body, array $receivers)
{
$hp = Codendi_HTMLPurifier::instance();
$project_name = $project->getPublicName();
$sys_max_number_of_emailed_people = ForgeConfig::get('sys_max_number_of_emailed_people');
if (count($receivers) > $sys_max_number_of_emailed_people && !$user->isSuperUser()) {
$GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('my_index', 'massmail_not_sent_max_users', $sys_max_number_of_emailed_people));
return;
}
$mail = new Codendi_Mail();
$mail->setFrom($user->getEmail());
$mail->setTo($user->getEmail());
$mail->setBccUser($receivers);
$mail->setSubject("[" . $GLOBALS['sys_name'] . "] [" . $project_name . "] " . $subject);
$mail->setBodyText($hp->purify($html_body, CODENDI_PURIFIER_STRIP_HTML));
$mail->setBodyHtml($html_body);
$is_sent = $mail->send();
return $is_sent;
}
示例3: user_is_admin
public function user_is_admin()
{
return $this->user->isSuperUser();
}
示例4: process
/**
* Process the request
*
* @param Tracker_IDisplayTrackerLayout $layout Displays the page header and footer
* @param Codendi_Request $request The data coming from the user
* @param PFUser $current_user The user who mades the request
*
* @return void
*/
public function process(Tracker_IDisplayTrackerLayout $layout, $request, $current_user)
{
switch ($request->get('func')) {
case 'fetch-artifacts':
$read_only = false;
$prefill_removed_values = array();
$only_rows = true;
$this_project_id = $this->getTracker()->getProject()->getGroupId();
$hp = Codendi_HTMLPurifier::instance();
$ugroups = $current_user->getUgroups($this_project_id, array());
$ids = $request->get('ids');
//2, 14, 15
$tracker = array();
$result = array();
//We must retrieve the last changeset ids of each artifact id.
$dao = new Tracker_ArtifactDao();
foreach ($dao->searchLastChangesetIds($ids, $ugroups, $current_user->isSuperUser()) as $matching_ids) {
$tracker_id = $matching_ids['tracker_id'];
$tracker = $this->getTrackerFactory()->getTrackerById($tracker_id);
$project = $tracker->getProject();
if ($tracker->userCanView()) {
$trf = Tracker_ReportFactory::instance();
$report = $trf->getDefaultReportsByTrackerId($tracker->getId());
if ($report) {
$renderers = $report->getRenderers();
// looking for the first table renderer
foreach ($renderers as $renderer) {
if ($renderer->getType() === Tracker_Report_Renderer::TABLE) {
$key = $this->id . '_' . $report->id . '_' . $renderer->getId();
$result[$key] = $renderer->fetchAsArtifactLink($matching_ids, $this->getId(), $read_only, $prefill_removed_values, $only_rows);
$head = '<div class="tracker-form-element-artifactlink-trackerpanel">';
$project_name = '';
if ($project->getGroupId() != $this_project_id) {
$project_name = ' (<abbr title="' . $hp->purify($project->getPublicName(), CODENDI_PURIFIER_CONVERT_HTML) . '">';
$project_name .= $hp->purify($project->getUnixName(), CODENDI_PURIFIER_CONVERT_HTML);
$project_name .= '</abbr>)';
}
$head .= '<h2 class="tracker-form-element-artifactlink-tracker_' . $tracker->getId() . '">';
$head .= $hp->purify($tracker->getName(), CODENDI_PURIFIER_CONVERT_HTML) . $project_name;
$head .= '</h2>';
//if ($artifact) {
// $title = $hp->purify('link a '. $tracker->getItemName(), CODENDI_PURIFIER_CONVERT_HTML);
// $head .= '<a href="'.TRACKER_BASE_URL.'/?tracker='.$tracker_id.'&func=new-artifact-link&id='.$artifact->getId().'" class="tracker-form-element-artifactlink-link-new-artifact">'. 'create a new '.$hp->purify($tracker->getItemName(), CODENDI_PURIFIER_CONVERT_HTML) .'</a>';
//}
$result[$key]['head'] = $head . $result[$key]['head'];
break;
}
}
}
}
}
if ($result) {
$head = array();
$rows = array();
foreach ($result as $key => $value) {
$head[$key] = $value["head"];
$rows[$key] = $value["rows"];
}
header('Content-type: application/json');
echo json_encode(array('head' => $head, 'rows' => $rows));
}
exit;
break;
case 'fetch-aggregates':
$read_only = false;
$prefill_removed_values = array();
$only_rows = true;
$only_one_column = false;
$extracolumn = Tracker_Report_Renderer_Table::EXTRACOLUMN_UNLINK;
$read_only = true;
$use_data_from_db = false;
$ugroups = $current_user->getUgroups($this->getTracker()->getGroupId(), array());
$ids = $request->get('ids');
//2, 14, 15
$tracker = array();
$json = array('tabs' => array());
$dao = new Tracker_ArtifactDao();
foreach ($dao->searchLastChangesetIds($ids, $ugroups, $current_user->isSuperUser()) as $matching_ids) {
$tracker_id = $matching_ids['tracker_id'];
$tracker = $this->getTrackerFactory()->getTrackerById($tracker_id);
$project = $tracker->getProject();
if ($tracker->userCanView()) {
$trf = Tracker_ReportFactory::instance();
$report = $trf->getDefaultReportsByTrackerId($tracker->getId());
if ($report) {
$renderers = $report->getRenderers();
// looking for the first table renderer
foreach ($renderers as $renderer) {
if ($renderer->getType() === Tracker_Report_Renderer::TABLE) {
$key = $this->id . '_' . $report->id . '_' . $renderer->getId();
$columns = $renderer->getTableColumns($only_one_column, $use_data_from_db);
//.........这里部分代码省略.........
示例5: userCanAccessProject
/**
* Ensure given user can access given project
*
* @param PFUser $user
* @param Project $project
* @return boolean
* @throws Project_AccessProjectNotFoundException
* @throws Project_AccessDeletedException
* @throws Project_AccessRestrictedException
* @throws Project_AccessPrivateException
*/
public function userCanAccessProject(PFUser $user, Project $project)
{
if ($project->isError()) {
throw new Project_AccessProjectNotFoundException();
} elseif ($user->isSuperUser()) {
return true;
} elseif (!$project->isActive()) {
throw new Project_AccessDeletedException($project);
} elseif ($user->isMember($project->getID())) {
return true;
} elseif ($this->getPermissionsOverriderManager()->doesOverriderAllowUserToAccessProject($user, $project)) {
return true;
} elseif ($user->isRestricted()) {
if (!$project->allowsRestricted() || !$this->restrictedUserCanAccessUrl($user, $this->getUrl(), $_SERVER['REQUEST_URI'], $_SERVER['SCRIPT_NAME'])) {
throw new Project_AccessRestrictedException();
}
return true;
} elseif ($project->isPublic()) {
return true;
} elseif ($this->userHasBeenDelegatedAccess($user)) {
return true;
}
throw new Project_AccessPrivateException();
}
示例6: userCanAdmin
/**
* Test is user can administrate FRS service of given project
*
* @param PFUser $user User to test
* @param Integer $groupId Project
*
* @return Boolean
*/
public static function userCanAdmin($user, $groupId)
{
return $user->isSuperUser() || $user->isMember($groupId, 'R2') || $user->isMember($groupId, 'A');
}
示例7: userCanViewTracker
public function userCanViewTracker(PFUser $user, Tracker $tracker)
{
if ($user->isSuperUser()) {
return true;
}
if ($tracker->userIsAdmin($user)) {
return true;
}
$project = $tracker->getProject();
if ($this->userIsRestrictedAndNotMemberOfProject($user, $project) || $this->userIsNotMemberOfPrivateProject($user, $project)) {
return false;
}
foreach ($tracker->getPermissionsByUgroupId() as $ugroup_id => $permission_types) {
if ($user->isMemberOfUGroup($ugroup_id, $tracker->getGroupId())) {
return true;
}
}
return false;
}
示例8: array
/**
* Check if user as write permission on item
*
* This method only deals with the permissions set on item. If user has
* write permission, it will automatically gives read permission too.
*
* @param PFUser $user
* @param Integer $item_id
*
* @return Boolean
*/
function _userHasWritePermission($user, $item_id)
{
$pm = $this->_getPermissionManagerInstance();
$canWrite = $user->isSuperUser() || $this->userCanAdmin($user) || $pm->userHasPermission($item_id, 'PLUGIN_DOCMAN_WRITE', $user->getUgroups($this->groupId, array())) || $this->userCanManage($user, $item_id);
if ($canWrite) {
$this->_setCanRead($user->getId(), $item_id, true);
}
return $canWrite;
}
示例9: userCanWrite
/**
* Tests if the user is Superuser, or File release admin
*
* @param PFUser $user
* @param Integer $groupId
*
* @return Boolean
*/
function userCanWrite($user, $groupId)
{
// R2 refers to File release admin
return $this->isWriteEnabled() && ($user->isSuperUser() || $user->isMember($groupId, 'R2'));
}
示例10: addAdminItem
private function addAdminItem(FlamingParrot_NavBarItemPresentersCollection $collection)
{
if ($this->user->isSuperUser()) {
$collection->addItem(new FlamingParrot_NavBarItemLinkPresenter(self::$NO_ID, $this->isNavBarItemActive('/admin/', 'admin'), '/admin/', 'Admin'));
}
}
示例11: searchMatchingArtifacts
/**
* Monstro query
*
* @param PFUser $user
* @param unknown_type $group_id
* @param Tracker_CrossSearch_Query $query
* @param array $tracker_ids
* @param array $shared_fields
* @param array $semantic_fields
* @param array $artifact_link_field_ids_for_column_display
* @param array $excluded_artifact_ids
*/
public function searchMatchingArtifacts(PFUser $user, $group_id, Tracker_CrossSearch_Query $query, array $tracker_ids, array $shared_fields, array $semantic_fields, array $artifact_link_field_ids_for_column_display, array $excluded_artifact_ids = array())
{
$report_dao = new Tracker_ReportDao();
$is_super_user = $user->isSuperUser();
$ugroups = $user->getUgroups($group_id, array());
$quoted_ugroups = $this->da->quoteSmartImplode(',', $ugroups);
$quoted_tracker_ids = $this->da->quoteSmartImplode(',', $tracker_ids);
$excluded_artifact_ids = $this->da->quoteSmartImplode(',', $excluded_artifact_ids);
$shared_fields_constraints = $this->getSharedFieldsSqlFragment($shared_fields);
$title_constraint = $this->getTitleSqlFragment($this->getSemanticFieldCriteria($semantic_fields, 'title'));
$status_constraint = $this->getStatusSqlFragment($this->getSemanticFieldCriteria($semantic_fields, 'status'));
$tracker_constraint = $tracker_ids ? " AND artifact.tracker_id IN ({$quoted_tracker_ids}) " : "";
$artifact_ids_list = $query->listArtifactIds();
$artifact_link_constraints = '';
if (count($artifact_ids_list)) {
$artifact_ids_list = $this->da->quoteSmartImplode(',', $artifact_ids_list);
$artifacts_fields = $this->getArtifactLinkFields($artifact_ids_list, $is_super_user, $quoted_ugroups);
$artifact_link_constraints = $this->getArtifactLinkSearchSqlFragment($artifacts_fields);
}
$artifact_link_columns_select = $this->getArtifactLinkSelects($artifact_link_field_ids_for_column_display);
$artifact_link_columns_join = $this->getArtifactLinkColumns($artifact_link_field_ids_for_column_display, $is_super_user, $quoted_ugroups);
$artifact_permissions = $report_dao->getSqlFragmentForArtifactPermissions($user->isSuperUser(), $user->getUgroups($group_id, array()));
$artifact_permissions_join = $artifact_permissions['from'];
$artifact_permissions_where = $artifact_permissions['where'];
$tracker_semantic_title_join = $this->getTrackerSemanticTitleJoin($is_super_user, $quoted_ugroups);
$tracker_semantic_status_join = $this->getTrackerSemanticStatusJoin($is_super_user, $quoted_ugroups);
$from = " FROM tracker_artifact AS artifact\n INNER JOIN tracker_changeset AS c ON (artifact.last_changeset_id = c.id) \n {$shared_fields_constraints} \n {$artifact_link_constraints} \n {$tracker_semantic_title_join} \n {$tracker_semantic_status_join} \n {$artifact_permissions_join} ";
$where = " WHERE 1 {$artifact_permissions_where} {$title_constraint} {$status_constraint} ";
$permissions_manager = PermissionsManager::instance();
$tracker_factory = TrackerFactory::instance();
$sqls = array();
foreach ($tracker_ids as $tracker_id) {
// {{{ This is a big copy 'n paste from Tracker_Report::getMatchingIdsInDb.
// TODO:
// instead of building a big query with plenty of unions,
// call getMatchingIdsInDb foreach tracker involved in the
// crosssearch query. As getMatchingIdsInDb returns the
// tuple (artifact_ids, matching_ids) -- where ids are
// comma separated --, we will have to do the join in php
// by concatenating strings.
// Example:
// $artifact_ids = $changeset_ids = '';
// foreach ($trackers as $tracker) {
// merge($artifact_ids, $changeset_ids, report->getMatchingIdsInDb(..., $tracker, ...));
// }
// crosssearch->retrieveColumns($artifact_ids, $changeset_ids)
//
// And if we are feeling lucky, we can also move the
// reportdao->searchMatchingIds in searchdao since it make more sense.
//
// Possible caveat:
// - 1 big sql query full of unions is really slower
// than n small queries?
$instances = array('artifact_type' => $tracker_id);
$ugroups = $user->getUgroups($group_id, $instances);
$static_ugroups = $user->getStaticUgroups($group_id);
$dynamic_ugroups = $user->getDynamicUgroups($group_id, $instances);
$permissions = $permissions_manager->getPermissionsAndUgroupsByObjectid($tracker_id, $ugroups);
$subwhere = " {$where} AND artifact.tracker_id = {$tracker_id} ";
$tracker = $tracker_factory->getTrackerById($tracker_id);
$contributor_field = $tracker->getContributorField();
$contributor_field_id = $contributor_field ? $contributor_field->getId() : null;
// }}}
$sqls = array_merge($sqls, $report_dao->getSqlFragmentsAccordinglyToTrackerPermissions($user->isSuperUser(), $from, $subwhere, $group_id, $tracker_id, $permissions, $ugroups, $static_ugroups, $dynamic_ugroups, $contributor_field_id));
}
array_filter($sqls);
if (count($sqls) == 0) {
$results = new DataAccessResultEmpty();
} else {
$union = implode(' UNION ', $sqls);
$sql = "SET SESSION group_concat_max_len = 134217728";
$this->retrieve($sql);
$sql = "\n SELECT artifact.id,\n artifact.last_changeset_id,\n CVT.value AS title,\n artifact.tracker_id,\n GROUP_CONCAT(CVAL.artifact_id) AS artifactlinks\n {$artifact_link_columns_select}\n \n FROM tracker_artifact AS artifact\n INNER JOIN tracker_artifact_priority ON (tracker_artifact_priority.curr_id = artifact.id)\n INNER JOIN ( {$union} ) AS R ON (R.id = artifact.id)\n INNER JOIN tracker_changeset AS c ON (R.last_changeset_id = c.id)\n\n -- shared_fields_constraints\n \n -- artifact_link_constraints\n\n {$tracker_semantic_title_join}\n\n LEFT JOIN (\n tracker_changeset_value_artifactlink AS CVAL\n INNER JOIN tracker_changeset_value AS CV2 ON (CV2.id = CVAL.changeset_value_id) \n \n ) ON CV2.changeset_id = artifact.last_changeset_id\n\n {$artifact_link_columns_join}\n -- artifact_permissions_join\n \n WHERE 1\n -- artifact_permissions_where\n {$tracker_constraint}\n -- title_constraint\n -- status_constraint\n ";
if ($excluded_artifact_ids != '') {
$sql .= "\n AND artifact.id NOT IN ({$excluded_artifact_ids}) ";
}
$sql .= "\n GROUP BY artifact.id\n ORDER BY tracker_artifact_priority.rank\n ";
$results = $this->retrieve($sql);
}
return $results;
}
示例12: userCanUpdate
/**
* Only owners of a report can update it.
* owner = report->user_id
* or if null, owner = tracker admin or site admins
* @param PFUser $user the user who wants to update the report
* @return boolean
*/
public function userCanUpdate($user)
{
if (!$this->isBelongingToATracker()) {
return false;
}
if ($this->user_id) {
return $this->user_id == $user->getId();
} else {
$tracker = $this->getTracker();
return $user->isSuperUser() || $tracker->userIsAdmin($user);
}
}
示例13: userCanAccessProject
/**
* Ensure given user can access given project
*
* @param PFUser $user
* @param Project $project
* @return boolean
* @throws Project_AccessProjectNotFoundException
* @throws Project_AccessDeletedException
* @throws Project_AccessRestrictedException
* @throws Project_AccessPrivateException
*/
public function userCanAccessProject(PFUser $user, Project $project)
{
if ($project->isError()) {
throw new Project_AccessProjectNotFoundException();
} elseif ($user->isSuperUser()) {
return true;
} elseif (!$project->isActive()) {
throw new Project_AccessDeletedException($project);
} elseif ($user->isMember($project->getID())) {
return true;
} elseif ($user->isRestricted() && !$this->canRestrictedUserAccess($user, $project)) {
throw new Project_AccessRestrictedException();
} elseif ($project->isPublic()) {
return true;
} elseif ($this->userHasBeenDelegatedAccess($user)) {
return true;
}
throw new Project_AccessPrivateException();
}
示例14: userIsAdmin
private function userIsAdmin(PFUser $user, $group_id, $permissions, $ugroups)
{
return $user->isSuperUser() || $user->isMember($group_id, 'A') || $this->hasPermissionFor(Tracker::PERMISSION_ADMIN, $permissions, $ugroups);
}