static function can_publish_multiple($ids, $memberID, $useCached = true)
 {
     $checks = SiteTree::batch_permission_check($ids, $memberID, 'CanPublishType', 'SiteTree_PublisherGroups', 'canPublish', null, $useCached);
     return $checks;
 }
コード例 #2
0
 /**
  * Get all publication requests assigned to a specific publisher
  * 
  * @param string $class WorkflowRequest subclass
  * @param Member $publisher
  * @param array $status One or more stati from the $Status property
  * @return DataObjectSet
  */
 public static function get_by_publisher($class, $publisher, $status = null)
 {
     // To ensure 2.3 and 2.4 compatibility
     $bt = defined('DB::USE_ANSI_SQL') ? "\"" : "`";
     if ($status) {
         $statusStr = "'" . implode("','", $status) . "'";
     }
     $classes = (array) ClassInfo::subclassesFor($class);
     $classes[] = $class;
     $classesSQL = implode("','", $classes);
     // build filter
     $filter = "{$bt}WorkflowRequest{$bt}.{$bt}ClassName{$bt} IN ('{$classesSQL}')\n\t\t";
     if ($status) {
         $filter .= "AND {$bt}WorkflowRequest{$bt}.{$bt}Status{$bt} IN (" . $statusStr . ")";
     }
     $return = DataObject::get("SiteTree", $filter, "{$bt}SiteTree{$bt}.{$bt}LastEdited{$bt} DESC", "LEFT JOIN {$bt}WorkflowRequest{$bt} ON {$bt}WorkflowRequest{$bt}.{$bt}PageID{$bt} = {$bt}SiteTree{$bt}.{$bt}ID{$bt} " . "LEFT JOIN {$bt}WorkflowRequest_Approvers{$bt} ON {$bt}WorkflowRequest{$bt}.{$bt}ID{$bt} = {$bt}WorkflowRequest_Approvers{$bt}.{$bt}WorkflowRequestID{$bt}");
     if (!$return) {
         return new DataObjectSet();
     }
     $canPublish = SiteTree::batch_permission_check($return->column('ID'), $publisher->ID, 'CanPublishType', 'SiteTree_PublisherGroups', 'canPublish');
     foreach ($return as $page) {
         if (!isset($canPublish[$page->ID]) || !$canPublish[$page->ID]) {
             $return->remove($page);
         }
     }
     return $return;
 }
 /**
  * This function should return true if the current user can publish this
  * page.
  *
  * @return boolean True if the current user can publish this page.
  */
 public function canPublish($member = null, $dbg = false)
 {
     if (!$member) {
         $member = Member::currentUser();
     }
     if (!$member) {
         return false;
     }
     if ($member instanceof Member) {
         $memberID = $member->ID;
     } else {
         $memberID = $member;
     }
     // can_publish_multiple will check the cache so this isn't necessary
     //if(isset(SiteTree::$cache_permissions['CanPublishType'][$this->owner->ID])) {
     //	return SiteTree::$cache_permissions['CanPublishType'][$this->owner->ID];
     //}
     // DANGER, WILL ROBINSON!
     // we currently have not implemented extensions here. if you do
     // be aware that the WorkflowRequest::get_by_* functions use
     // batch_permission_check directly so you will need to ammend
     // them appropriately
     // check for (workflow)admin permission
     if (Permission::checkMember($member, array('ADMIN', 'IS_WORKFLOW_ADMIN'))) {
         return true;
     }
     $results = SiteTree::batch_permission_check(array($this->owner->ID), $memberID, 'CanPublishType', 'SiteTree_PublisherGroups', 'canPublish');
     return isset($results[$this->owner->ID]) ? $results[$this->owner->ID] : false;
 }