public static function getOrCreate($groups)
 {
     $db = Loader::db();
     $petID = $db->GetOne('select petID from PermissionAccessEntityTypes where petHandle = \'group_combination\'');
     $q = 'select pae.peID from PermissionAccessEntities pae ';
     $i = 1;
     foreach ($groups as $g) {
         $q .= 'left join PermissionAccessEntityGroups paeg' . $i . ' on pae.peID = paeg' . $i . '.peID ';
         $i++;
     }
     $q .= 'where petID = ? ';
     $i = 1;
     foreach ($groups as $g) {
         $q .= 'and paeg' . $i . '.gID = ' . $g->getGroupID() . ' ';
         $i++;
     }
     $peID = $db->GetOne($q, array($petID));
     if (!$peID) {
         $db->Execute("insert into PermissionAccessEntities (petID) values (?)", array($petID));
         $peID = $db->Insert_ID();
         Config::save('concrete.misc.access_entity_updated', time());
         foreach ($groups as $g) {
             $db->Execute('insert into PermissionAccessEntityGroups (peID, gID) values (?, ?)', array($peID, $g->getGroupID()));
         }
     }
     return \Concrete\Core\Permission\Access\Entity\Entity::getByID($peID);
 }
 public static function getAccessEntitiesForUser($user)
 {
     // finally, the most brutal one. we find any combos that this group would specifically be in.
     // first, we look for any combos that contain any of the groups this user is in. That way if there aren't any we can just skip it.
     $db = Loader::db();
     $ingids = array();
     $db = Loader::db();
     foreach ($user->getUserGroups() as $key => $val) {
         $ingids[] = $key;
     }
     $instr = implode(',', $ingids);
     $entities = array();
     if ($user->isRegistered()) {
         $peIDs = $db->GetCol('select distinct pae.peID from PermissionAccessEntities pae inner join PermissionAccessEntityTypes paet on pae.petID = paet.petID inner join PermissionAccessEntityGroups paeg on pae.peID = paeg.peID where petHandle = \'group_combination\' and paeg.gID in (' . $instr . ')');
         // now for each one we check to see if it applies
         foreach ($peIDs as $peID) {
             $r = $db->GetRow('select count(gID) as peGroups, (select count(UserGroups.gID) from UserGroups where uID = ? and gID in (select gID from PermissionAccessEntityGroups where peID = ?)) as uGroups from PermissionAccessEntityGroups where peID = ?', array($user->getUserID(), $peID, $peID));
             if ($r['peGroups'] == $r['uGroups'] && $r['peGroups'] > 1) {
                 $entity = Entity::getByID($peID);
                 if (is_object($entity)) {
                     $entities[] = $entity;
                 }
             }
         }
     }
     return $entities;
 }
示例#3
0
 public function loadAccessEntityObject($peID)
 {
     if ($peID > 0) {
         $pe = PermissionAccessEntity::getByID($peID);
         $this->accessEntity = $pe;
     }
 }
 public static function getOrCreate()
 {
     $db = Loader::db();
     $petID = $db->GetOne('select petID from PermissionAccessEntityTypes where petHandle = \'conversation_message_author\'');
     $peID = $db->GetOne('select peID from PermissionAccessEntities where petID = ?', array($petID));
     if (!$peID) {
         $db->Execute("insert into PermissionAccessEntities (petID) values(?)", array($petID));
         $peID = $db->Insert_ID();
         Config::save('concrete.misc.access_entity_updated', time());
     }
     return \Concrete\Core\Permission\Access\Entity\Entity::getByID($peID);
 }
示例#5
0
 public static function getOrCreate()
 {
     $db = Database::connection();
     $petID = $db->fetchColumn('select petID from PermissionAccessEntityTypes where petHandle = \'page_owner\'');
     $peID = $db->fetchColumn('select peID from PermissionAccessEntities where petID = ?', array($petID));
     if (!$peID) {
         $db->executeQuery("insert into PermissionAccessEntities (petID) values(?)", array($petID));
         $peID = $db->lastInsertId();
         Config::save('concrete.misc.access_entity_updated', time());
     }
     return \Concrete\Core\Permission\Access\Entity\Entity::getByID($peID);
 }
 public static function getOrCreate(Group $g)
 {
     $db = Loader::db();
     $petID = $db->GetOne('select petID from PermissionAccessEntityTypes where petHandle = \'group\'');
     $peID = $db->GetOne('select pae.peID from PermissionAccessEntities pae inner join PermissionAccessEntityGroups paeg on pae.peID = paeg.peID where petID = ? and paeg.gID = ?', array($petID, $g->getGroupID()));
     if (!$peID) {
         $db->Execute("insert into PermissionAccessEntities (petID) values(?)", array($petID));
         $peID = $db->Insert_ID();
         Config::save('concrete.misc.access_entity_updated', time());
         $db->Execute('insert into PermissionAccessEntityGroups (peID, gID) values (?, ?)', array($peID, $g->getGroupID()));
     }
     return \Concrete\Core\Permission\Access\Entity\Entity::getByID($peID);
 }
 public static function getOrCreate(UserInfo $ui)
 {
     $db = Loader::db();
     $petID = $db->GetOne('SELECT petID FROM PermissionAccessEntityTypes WHERE petHandle = \'user\'');
     $peID = $db->GetOne('SELECT pae.peID FROM PermissionAccessEntities pae INNER JOIN PermissionAccessEntityUsers paeg ON pae.peID = paeg.peID WHERE petID = ? AND paeg.uID = ?', array($petID, $ui->getUserID()));
     if (!$peID) {
         $db->Execute("INSERT INTO PermissionAccessEntities (petID) VALUES(?)", array($petID));
         $peID = $db->Insert_ID();
         Config::save('concrete.misc.access_entity_updated', time());
         $db->Execute('INSERT INTO PermissionAccessEntityUsers (peID, uID) VALUES (?, ?)', array($peID, $ui->getUserID()));
     }
     return \Concrete\Core\Permission\Access\Entity\Entity::getByID($peID);
 }
示例#8
0
 public static function getAccessEntitiesForUser($user)
 {
     $entities = array();
     $ingids = array();
     $db = Loader::db();
     foreach ($user->getUserGroups() as $key => $val) {
         $ingids[] = $key;
     }
     $instr = implode(',', $ingids);
     $peIDs = $db->GetCol('select peID from PermissionAccessEntityGroupSets paegs inner join GroupSetGroups gsg on paegs.gsID = gsg.gsID where gsg.gID in (' . $instr . ')');
     if (is_array($peIDs)) {
         foreach ($peIDs as $peID) {
             $entity = Entity::getByID($peID);
             if (is_object($entity)) {
                 $entities[] = $entity;
             }
         }
     }
     return $entities;
 }
示例#9
0
     $pa = PermissionAccess::getByID($_REQUEST['paID'], $pk);
     $pe = PermissionAccessEntity::getByID($_REQUEST['peID']);
     $pd = PermissionDuration::getByID($_REQUEST['pdID']);
     $pa->addListItem($pe, $pd, $_REQUEST['accessType']);
 }
 if ($_REQUEST['task'] == 'revert_to_global_file_permissions' && Loader::helper("validation/token")->validate('revert_to_global_file_permissions')) {
     $f->resetPermissions();
 }
 if ($_REQUEST['task'] == 'override_global_file_permissions' && Loader::helper("validation/token")->validate('override_global_file_permissions')) {
     $f->resetPermissions(1);
 }
 if ($_REQUEST['task'] == 'remove_access_entity' && Loader::helper("validation/token")->validate('remove_access_entity')) {
     $pk = PermissionKey::getByID($_REQUEST['pkID']);
     $pk->setPermissionObject($f);
     $pa = PermissionAccess::getByID($_REQUEST['paID'], $pk);
     $pe = PermissionAccessEntity::getByID($_REQUEST['peID']);
     $pa->removeListItem($pe);
 }
 if ($_REQUEST['task'] == 'save_permission' && Loader::helper("validation/token")->validate('save_permission')) {
     $pk = PermissionKey::getByID($_REQUEST['pkID']);
     $pk->setPermissionObject($f);
     $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']);
     $pk->setPermissionObject($f);
     $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')) {
示例#10
0
 public function getUserAccessEntityObjects()
 {
     $req = Request::getInstance();
     if ($req->hasCustomRequestUser()) {
         // we bypass session-saving performance
         // and we don't save them in session.
         return PermissionAccessEntity::getForUser($this);
     }
     if (Session::has('accessEntities')) {
         $entities = Session::get('accessEntities');
     } else {
         $entities = PermissionAccessEntity::getForUser($this);
         Session::set('accessEntities', $entities);
         Session::set('accessEntitiesUpdated', time());
     }
     return $entities;
 }
示例#11
0
 public function removeListItem(PermissionAccessEntity $pe)
 {
     $db = Database::connection();
     $db->Execute('delete from PermissionAccessList where peID = ? and paID = ?', array($pe->getAccessEntityID(), $this->getPermissionAccessID()));
 }
示例#12
0
 public function getAllAssignmentsForPage()
 {
     $db = Loader::db();
     $assignments = array();
     $r = $db->Execute('select peID, pkID, pdID from PagePermissionAssignments ppa inner join PermissionAccessList pal on ppa.paID = pal.paID where cID = ?', array($this->object->getCollectionID()));
     while ($row = $r->FetchRow()) {
         $pk = PagePermissionKey::getByID($row['pkID']);
         $pae = PermissionAccessEntity::getByID($row['peID']);
         $pd = PermissionDuration::getByID($row['pdID']);
         $ppc = new PageContentPermissionTimedAssignment();
         $ppc->setDurationObject($pd);
         $ppc->setAccessEntityObject($pae);
         $ppc->setPermissionKeyObject($pk);
         $assignments[] = $ppc;
     }
     $r = $db->Execute('select arHandle from Areas where cID = ? and arOverrideCollectionPermissions = 1', array($this->object->getCollectionID()));
     while ($row = $r->FetchRow()) {
         $r2 = $db->Execute('select peID, pdID, pkID from AreaPermissionAssignments apa inner join PermissionAccessList pal on apa.paID = pal.paID where cID = ? and arHandle = ?', array($this->object->getCollectionID(), $row['arHandle']));
         while ($row2 = $r2->FetchRow()) {
             $pk = AreaPermissionKey::getByID($row2['pkID']);
             $pae = PermissionAccessEntity::getByID($row2['peID']);
             $area = Area::get($this->getPermissionObject(), $row['arHandle']);
             $pk->setPermissionObject($area);
             $pd = PermissionDuration::getByID($row2['pdID']);
             $ppc = new PageContentPermissionTimedAssignment();
             $ppc->setDurationObject($pd);
             $ppc->setAccessEntityObject($pae);
             $ppc->setPermissionKeyObject($pk);
             $assignments[] = $ppc;
         }
     }
     $r = $db->Execute('select peID, cvb.cvID, cvb.bID, pdID, pkID from BlockPermissionAssignments bpa
                 inner join PermissionAccessList pal on bpa.paID = pal.paID inner join CollectionVersionBlocks cvb on cvb.cID = bpa.cID and cvb.cvID = bpa.cvID and cvb.bID = bpa.bID
                 where cvb.cID = ? and cvb.cvID = ? and cvb.cbOverrideAreaPermissions = 1', array($this->object->getCollectionID(), $this->object->getVersionID()));
     while ($row = $r->FetchRow()) {
         $pk = BlockPermissionKey::getByID($row['pkID']);
         $pae = PermissionAccessEntity::getByID($row['peID']);
         $arHandle = $db->GetOne('select arHandle from CollectionVersionBlocks where bID = ? and cvID = ? and cID = ?', array($row['bID'], $row['cvID'], $this->object->getCollectionID()));
         $b = Block::getByID($row['bID'], $this->object, $arHandle);
         $pk->setPermissionObject($b);
         $pd = PermissionDuration::getByID($row['pdID']);
         $ppc = new PageContentPermissionTimedAssignment();
         $ppc->setDurationObject($pd);
         $ppc->setAccessEntityObject($pae);
         $ppc->setPermissionKeyObject($pk);
         $assignments[] = $ppc;
     }
     return $assignments;
 }