コード例 #1
0
ファイル: block.php プロジェクト: Mihail9575/concrete5
 public function getPermissionAccessObject()
 {
     $db = Loader::db();
     if ($this->permissionObjectToCheck instanceof Block) {
         $co = $this->permissionObjectToCheck->getBlockCollectionObject();
         $arHandle = $this->permissionObjectToCheck->getAreaHandle();
         $paID = $db->GetOne('select paID from BlockPermissionAssignments where cID = ? and cvID = ? and bID = ? and pkID = ? ' . $filterString, array($co->getCollectionID(), $co->getVersionID(), $this->permissionObject->getBlockID(), $this->pk->getPermissionKeyID()));
         if ($paID) {
             $pae = PermissionAccess::getByID($paID, $this->pk, false);
         }
     } else {
         if ($this->permissionObjectToCheck instanceof Area && isset($this->inheritedAreaPermissions[$this->pk->getPermissionKeyHandle()])) {
             $pk = PermissionKey::getByHandle($this->inheritedAreaPermissions[$this->pk->getPermissionKeyHandle()]);
             $pk->setPermissionObject($this->permissionObjectToCheck);
             $pae = $pk->getPermissionAccessObject();
         } else {
             if ($this->permissionObjectToCheck instanceof Page && isset($this->inheritedPagePermissions[$this->pk->getPermissionKeyHandle()])) {
                 $pk = PermissionKey::getByHandle($this->inheritedPagePermissions[$this->pk->getPermissionKeyHandle()]);
                 $pk->setPermissionObject($this->permissionObjectToCheck);
                 $pae = $pk->getPermissionAccessObject();
             }
         }
     }
     return $pae;
 }
コード例 #2
0
 public function save()
 {
     if (Loader::helper('validation/token')->validate('save_permissions')) {
         $tp = new TaskPermission();
         if ($tp->canAccessTaskPermissions()) {
             $permissions = PermissionKey::getList('sitemap');
             $permissions = array_merge($permissions, PermissionKey::getList('marketplace_newsflow'));
             $permissions = array_merge($permissions, PermissionKey::getList('admin'));
             foreach ($permissions as $pk) {
                 $paID = $_POST['pkID'][$pk->getPermissionKeyID()];
                 $pt = $pk->getPermissionAssignmentObject();
                 $pt->clearPermissionAssignment();
                 if ($paID > 0) {
                     $pa = PermissionAccess::getByID($paID, $pk);
                     if (is_object($pa)) {
                         $pt->assignPermissionAccess($pa);
                     }
                 }
             }
             $this->redirect('/dashboard/system/permissions/tasks', 'updated');
         }
     } else {
         $this->error->add(Loader::helper("validation/token")->getErrorMessage());
     }
 }
コード例 #3
0
 public function save()
 {
     if (Loader::helper('validation/token')->validate('save_permissions')) {
         $fs = FileSet::getGlobal();
         $tp = new TaskPermission();
         if ($tp->canAccessTaskPermissions()) {
             $permissions = PermissionKey::getList('file_set');
             foreach ($permissions as $pk) {
                 $pk->setPermissionObject($fs);
                 $paID = $_POST['pkID'][$pk->getPermissionKeyID()];
                 $pt = $pk->getPermissionAssignmentObject();
                 $pt->clearPermissionAssignment();
                 if ($paID > 0) {
                     $pa = PermissionAccess::getByID($paID, $pk);
                     if (is_object($pa)) {
                         $pt->assignPermissionAccess($pa);
                     }
                 }
             }
             $this->redirect('/dashboard/system/permissions/files', 'updated');
         }
     } else {
         $this->error->add(Loader::helper("validation/token")->getErrorMessage());
     }
 }
コード例 #4
0
ファイル: area.php プロジェクト: Zyqsempai/amanet
 public function getPermissionAccessObject()
 {
     $db = Loader::db();
     if ($this->permissionObjectToCheck instanceof Area) {
         $r = $db->GetOne('select paID from AreaPermissionAssignments where cID = ? and arHandle = ? and pkID = ? ' . $filterString, array($this->permissionObjectToCheck->getCollectionID(), $this->permissionObjectToCheck->getAreaHandle(), $this->pk->getPermissionKeyID()));
         if ($r) {
             return PermissionAccess::getByID($r, $this->pk, false);
         }
     } else {
         if (isset($this->inheritedPermissions[$this->pk->getPermissionKeyHandle()])) {
             // this is a page
             $pk = PermissionKey::getByHandle($this->inheritedPermissions[$this->pk->getPermissionKeyHandle()]);
             $pk->setPermissionObject($this->permissionObjectToCheck);
             $pae = $pk->getPermissionAccessObject();
             return $pae;
         } else {
             if (isset($this->blockTypeInheritedPermissions[$this->pk->getPermissionKeyHandle()])) {
                 $pk = PermissionKey::getByHandle($this->blockTypeInheritedPermissions[$this->pk->getPermissionKeyHandle()]);
                 $pae = $pk->getPermissionAccessObject();
                 return $pae;
             }
         }
     }
     return false;
 }
コード例 #5
0
ファイル: basic.php プロジェクト: nveid/concrete5
	public function updateDetails($post) {
		$permissions = PermissionKey::getList('basic_workflow');
		foreach($permissions as $pk) {
			$pk->setPermissionObject($this);
			$pt = $pk->getPermissionAssignmentObject();
			$paID = $post['pkID'][$pk->getPermissionKeyID()];
			$pt->clearPermissionAssignment();
			if ($paID > 0) {
				$pa = PermissionAccess::getByID($paID, $pk);
				if (is_object($pa)) {
					$pt->assignPermissionAccess($pa);
				}			
			}		
		}			
	}
コード例 #6
0
ファイル: file.php プロジェクト: ojalehto/concrete5-legacy
 public function copyFromFileSetToFile()
 {
     $db = Loader::db();
     $paID = $this->getPermissionAccessID();
     if (is_array($paID)) {
         // we have to merge the permissions access object into a new one.
         $pa = PermissionAccess::create($this);
         foreach ($paID as $paID) {
             $pax = PermissionAccess::getByID($paID, $this);
             $pax->duplicate($pa);
         }
         $paID = $pa->getPermissionAccessID();
     }
     if ($paID) {
         $db = Loader::db();
         $db->Replace('FilePermissionAssignments', array('fID' => $this->permissionObject->getFileID(), 'pkID' => $this->getPermissionKeyID(), 'paID' => $paID), array('fID', 'paID', 'pkID'), true);
     }
 }
コード例 #7
0
ファイル: page.php プロジェクト: ojalehto/concrete5-legacy
 public function getPermissionAccessObject()
 {
     $pa = PermissionCache::getAccessObject($this->pk, $this->getPermissionObject());
     if ($pa === -1) {
         return false;
     }
     if (!is_object($pa)) {
         $db = Loader::db();
         $r = $db->GetOne('select paID from PagePermissionAssignments where cID = ? and pkID = ?', array($this->getPermissionObject()->getPermissionsCollectionID(), $this->pk->getPermissionKeyID()));
         if ($r) {
             $pa = PermissionAccess::getByID($r, $this->pk, false);
         }
         if (is_object($pa)) {
             PermissionCache::addAccessObject($this->pk, $this->getPermissionObject(), $pa);
         } else {
             PermissionCache::addAccessObject($this->pk, $this->getPermissionObject(), -1);
         }
     }
     return $pa;
 }
コード例 #8
0
ファイル: file.php プロジェクト: ronlobo/concrete5-de
 public function getPermissionAccessObject()
 {
     $db = Loader::db();
     if ($this->permissionObjectToCheck instanceof File) {
         $r = $db->GetCol('select paID from FilePermissionAssignments where fID = ? and pkID = ?', array($this->permissionObject->getFileID(), $this->pk->getPermissionKeyID()));
     } else {
         if (is_array($this->permissionObjectToCheck)) {
             // sets
             $sets = array();
             foreach ($this->permissionObjectToCheck as $fs) {
                 $sets[] = $fs->getFileSetID();
             }
             $inheritedPKID = $db->GetOne('select pkID from PermissionKeys where pkHandle = ?', array($this->inheritedPermissions[$this->pk->getPermissionKeyHandle()]));
             $r = $db->GetCol('select distinct paID from FileSetPermissionAssignments where fsID in (' . implode(',', $sets) . ') and pkID = ? ' . $filterString, array($inheritedPKID));
         } else {
             if ($this->permissionObjectToCheck instanceof FileSet && isset($this->inheritedPermissions[$this->pk->getPermissionKeyHandle()])) {
                 $inheritedPKID = $db->GetOne('select pkID from PermissionKeys where pkHandle = ?', array($this->inheritedPermissions[$this->pk->getPermissionKeyHandle()]));
                 $r = $db->GetCol('select distinct paID from FileSetPermissionAssignments where fsID = ? and pkID = ?', array($this->permissionObjectToCheck->getFileSetID(), $inheritedPKID));
             } else {
                 return false;
             }
         }
     }
     if (count($r) == 1) {
         $permID = $r[0];
     }
     if (count($r) > 1) {
         $permID = $r;
     }
     if (is_array($permID)) {
         foreach ($permID as $paID) {
             $pa = PermissionAccess::getByID($paID, $this->pk);
             if (is_object($pa)) {
                 $perms[] = $pa;
             }
         }
         return PermissionAccess::createByMerge($perms);
     } else {
         return PermissionAccess::getByID($permID, $this->pk);
     }
 }
コード例 #9
0
 public function approve(WorkflowProgress $wp)
 {
     $c = Page::getByID($this->getRequestedPageID());
     $ps = $this->getPagePermissionSet();
     $assignments = $ps->getPermissionAssignments();
     foreach ($assignments as $pkID => $paID) {
         $pk = PermissionKey::getByID($pkID);
         $pk->setPermissionObject($c);
         $pt = $pk->getPermissionAssignmentObject();
         $pt->clearPermissionAssignment();
         if ($paID > 0) {
             $pa = PermissionAccess::getByID($paID, $pk);
             if (is_object($pa)) {
                 $pt->assignPermissionAccess($pa);
             }
         }
     }
     $c->refreshCache();
     $wpr = new WorkflowProgressResponse();
     $wpr->setWorkflowProgressResponseURL(BASE_URL . DIR_REL . '/' . DISPATCHER_FILENAME . '?cID=' . $c->getCollectionID());
     return $wpr;
 }
コード例 #10
0
ファイル: model.php プロジェクト: nveid/concrete5
	public static function create(PermissionKey $pk) {
		$db = Loader::db();
		$db->Execute('insert into PermissionAccess (paIsInUse) values (0)');
		return PermissionAccess::getByID($db->Insert_ID(), $pk);
	}
コード例 #11
0
ファイル: page.php プロジェクト: ronlobo/concrete5-de
 protected function loadPermissionAssignments()
 {
     $db = Loader::db();
     $r = $db->Execute('select pkID, paID from PagePermissionAssignments where cID = ?', array($this->getPermissionsCollectionID()));
     while ($row = $r->FetchRow()) {
         $pk = PermissionKey::getByID($row['pkID']);
         $pk->setPermissionObject($this);
         $this->permissionAssignments[$row['pkID']] = PermissionAccess::getByID($row['paID'], $pk);
     }
 }
コード例 #12
0
ファイル: file.php プロジェクト: ppiedaderawnet/concrete5
            Loader::element('permission/labels', array('pk' => $pk, 'pa' => $pa));
        }
        if ($_REQUEST['task'] == 'save_permission_assignments' && Loader::helper("validation/token")->validate('save_permission_assignments')) {
            $permissions = PermissionKey::getList('file');
            foreach ($permissions as $pk) {
                $paID = $_POST['pkID'][$pk->getPermissionKeyID()];
                $pk->setPermissionObject($f);
                $pt = $pk->getPermissionAssignmentObject();
                $pt->clearPermissionAssignment();
                if ($paID > 0) {
                    $pa = PermissionAccess::getByID($paID, $pk);
                    if (is_object($pa)) {
                        $pt->assignPermissionAccess($pa);
                    }
                }
            }
        }
        if ($_REQUEST['task'] == 'save_workflows' && Loader::helper("validation/token")->validate('save_workflows')) {
            $pk = PermissionKey::getByID($_REQUEST['pkID']);
            $pk->setPermissionObject($f);
            $pa = PermissionAccess::getByID($_REQUEST['paID'], $pk);
            $pk->clearWorkflows();
            foreach ($_POST['wfID'] as $wfID) {
                $wf = Workflow::getByID($wfID);
                if (is_object($wf)) {
                    $pk->attachWorkflow($wf);
                }
            }
        }
    }
}
コード例 #13
0
 public function getPermissionAccessObject()
 {
     $db = Loader::db();
     $r = $db->GetOne('select paID from FileSetPermissionAssignments where fsID = ? and pkID = ?', array($this->permissionObjectToCheck->getFileSetID(), $this->pk->getPermissionKeyID()));
     return PermissionAccess::getByID($r, $this->pk);
 }
コード例 #14
0
            $pe = PermissionAccessEntity::getByID($_REQUEST['peID']);
            $pa->removeListItem($pe);
        }
        if ($_REQUEST['task'] == 'save_permission' && Loader::helper("validation/token")->validate('save_permission')) {
            $pk = AreaPermissionKey::getByID($_REQUEST['pkID']);
            $pk->setPermissionObject($ax);
            $pa = PermissionAccess::getByID($_REQUEST['paID'], $pk);
            $pa->save($_POST);
        }
        if ($_REQUEST['task'] == 'display_access_cell' && Loader::helper("validation/token")->validate('display_access_cell')) {
            $pk = PermissionKey::getByID($_REQUEST['pkID']);
            $pa = PermissionAccess::getByID($_REQUEST['paID'], $pk);
            Loader::element('permission/labels', array('pk' => $pk, 'pa' => $pa));
        }
        if ($_REQUEST['task'] == 'save_permission_assignments' && Loader::helper("validation/token")->validate('save_permission_assignments')) {
            $permissions = PermissionKey::getList('area');
            foreach ($permissions as $pk) {
                $paID = $_POST['pkID'][$pk->getPermissionKeyID()];
                $pk->setPermissionObject($ax);
                $pt = $pk->getPermissionAssignmentObject();
                $pt->clearPermissionAssignment();
                if ($paID > 0) {
                    $pa = PermissionAccess::getByID($paID, $pk);
                    if (is_object($pa)) {
                        $pt->assignPermissionAccess($pa);
                    }
                }
            }
        }
    }
}
コード例 #15
0
ファイル: sets.php プロジェクト: nveid/concrete5
	public function file_sets_edit(){
		extract($this->getHelperObjects());
		Loader::model('file_set');
		//do my editing
		if (!$validation_token->validate("file_sets_edit")) {			
			$this->set('error', array($validation_token->getErrorMessage()));
			$this->view();
			return;
		}
		
		if(!$this->post('fsID')){
			$this->set('error', array(t('Invalid ID')));
			$this->view();			
		}

		$file_set = new FileSet();
		$file_set->Load('fsID = ?', $this->post('fsID'));		
		$file_set->fsName = $this->post('file_set_name');
		$copyPermissionsFromBase = false;
		if ($file_set->fsOverrideGlobalPermissions == 0 && $this->post('fsOverrideGlobalPermissions') == 1) {
			// we are checking the checkbox for the first time
			$copyPermissionsFromBase = true;
		}		
		if ($file_set->fsOverrideGlobalPermissions) {
			$permissions = PermissionKey::getList('file_set');
			foreach($permissions as $pk) {
				$pk->setPermissionObject($file_set);
				$pt = $pk->getPermissionAssignmentObject();
				$paID = $_POST['pkID'][$pk->getPermissionKeyID()];
				$pt->clearPermissionAssignment();
				if ($paID > 0) {
					$pa = PermissionAccess::getByID($paID, $pk);
					if (is_object($pa)) {
						$pt->assignPermissionAccess($pa);
					}			
				}		
			}			
		}
		$file_set->fsOverrideGlobalPermissions = ($this->post('fsOverrideGlobalPermissions') == 1) ? 1 : 0;
		$file_set->save();
		
		parse_str($this->post('fsDisplayOrder'));
		$file_set->updateFileSetDisplayOrder($fID);

		if ($file_set->fsOverrideGlobalPermissions == 0) {
			$file_set->resetPermissions();		
		} 		
		if ($copyPermissionsFromBase) {
			$file_set->acquireBaseFileSetPermissions();
		}

		$this->redirect("/dashboard/files/sets", 'view_detail', $this->post('fsID'), 'file_set_updated');
	}
コード例 #16
0
ファイル: page.php プロジェクト: ceko/concrete5-1
         if ($_REQUEST['paReplaceAll'] == 'add') {
             $pk->setPermissionObject($c);
             $pa = $pk->getPermissionAccessObject();
             if (is_object($pa)) {
                 // that means that we have to take the current $pa object, and the new $pa object, and merge them together into
                 // a third object, and try and assign that object
                 $orig = $pa->duplicate();
                 $newpa = PermissionAccess::getByID($newPAID, $pk);
                 $pa = $newpa->duplicate($orig);
             } else {
                 // no current $pa object, which means we assign the new $pa object to this thing
                 $pk->setPermissionObject($c);
                 $pa = PermissionAccess::getByID($newPAID, $pk);
             }
         } else {
             $pa = PermissionAccess::getByID($newPAID, $pk);
         }
         $pkr = new ChangePagePermissionsPageWorkflowRequest();
         $pkr->setRequestedPage($c);
         $ps = new PermissionSet();
         $ps->setPermissionKeyCategory('page');
         $ps->addPermissionAssignment($pk->getPermissionKeyID(), $pa->getPermissionAccessID());
         $pkr->setPagePermissionSet($ps);
         $pkr->setRequesterUserID($u->getUserID());
         $u->unloadCollectionEdit($c);
         $response = $pkr->trigger();
         if (!$response instanceof \Concrete\Core\Workflow\Progress\Response) {
             $deferred = true;
         }
     }
 }
コード例 #17
0
 public function getPermissionAccessObject()
 {
     $db = Loader::db();
     $r = $db->GetOne('select paID from BasicWorkflowPermissionAssignments where wfID = ? and pkID = ?', array($this->getPermissionObject()->getWorkflowID(), $this->pk->getPermissionKeyID()));
     return PermissionAccess::getByID($r, $this->pk);
 }
コード例 #18
0
 public function getPermissionAccessObject()
 {
     $db = Loader::db();
     $paID = $db->GetOne('select paID from PermissionAssignments where pkID = ?', array($this->pk->getPermissionKeyID()));
     return PermissionAccess::getByID($paID, $this->pk);
 }