示例#1
0
 /**
  * Create rights wich weren't created for every descendants and returns every rights of
  * every descendants (include rights wich weren't created).
  *
  * @param \Claroline\CoreBundle\Entity\Role                  $role
  * @param \Claroline\CoreBundle\Entity\Resource\ResourceNode $node
  *
  * @return \Claroline\CoreBundle\Entity\Resource\ResourceRights[]
  */
 public function updateRightsTree(Role $role, ResourceNode $node)
 {
     $this->log('Updating the right tree');
     $alreadyExistings = $this->rightsRepo->findRecursiveByResourceAndRole($node, $role);
     $descendants = $this->resourceRepo->findDescendants($node, true);
     $finalRights = array();
     foreach ($descendants as $descendant) {
         $found = false;
         foreach ($alreadyExistings as $existingRight) {
             if ($existingRight->getResourceNode() === $descendant) {
                 $finalRights[] = $existingRight;
                 $found = true;
             }
         }
         if (!$found) {
             $rights = $this->om->factory('Claroline\\CoreBundle\\Entity\\Resource\\ResourceRights');
             $rights->setRole($role);
             $rights->setResourceNode($descendant);
             $this->om->persist($rights);
             $finalRights[] = $rights;
         }
     }
     $this->om->flush();
     $this->log('Right tree updated');
     return $finalRights;
 }
示例#2
0
 /**
  * Retrieves all descendants of given ResourceNode and updates their
  * accessibility dates.
  *
  * @param ResourceNode $node A directory
  * @param datetime $accessibleFrom
  * @param datetime $accessibleUntil
  */
 public function changeAccessibilityDate(ResourceNode $node, $accessibleFrom, $accessibleUntil)
 {
     if ($node->getResourceType()->getName() === 'directory') {
         $descendants = $this->resourceNodeRepo->findDescendants($node);
         foreach ($descendants as $descendant) {
             $descendant->setAccessibleFrom($accessibleFrom);
             $descendant->setAccessibleUntil($accessibleUntil);
             $this->om->persist($descendant);
         }
         $this->om->flush();
     }
 }