public function postUpdate() { $this->log('Adding change file action...'); $fileType = $this->em->getRepository('Claroline\\CoreBundle\\Entity\\Resource\\ResourceType')->findOneByName('file'); $maskDecoder = $this->em->getRepository('Claroline\\CoreBundle\\Entity\\Resource\\MaskDecoder')->findOneBy(array('resourceType' => $fileType, 'name' => 'edit')); $action = new MenuAction(); $action->setName('update_file'); $action->setAsync(true); $action->setIsCustom(true); $action->setIsForm(false); $action->setResourceType($fileType); $action->setValue($maskDecoder->getValue()); $this->em->persist($action); $this->em->flush(); }
/** * Loads one meta type (document) and four resource types handled by the platform core : * - File * - Directory * - Link * - Text * All these resource types have the 'document' meta type. * * @param ObjectManager $manager */ public function load(ObjectManager $manager) { // resource type attributes : name, listable, navigable, class $resourceTypes = array(array('file', true), array('directory', true), array('text', true), array('resource_shortcut', false), array('activity', true)); $types[] = array(); foreach ($resourceTypes as $attributes) { $type = new ResourceType(); $type->setName($attributes[0]); $type->setExportable($attributes[1]); $manager->persist($type); $this->container->get('claroline.manager.mask_manager')->addDefaultPerms($type); $types[$attributes[0]] = $type; } //add special actions. $composeDecoder = new MaskDecoder(); $composeDecoder->setValue(pow(2, 10)); $composeDecoder->setName('compose'); $composeDecoder->setResourceType($types['activity']); $manager->persist($composeDecoder); $activityMenu = new MenuAction(); $activityMenu->setName('compose'); $activityMenu->setAsync(false); $activityMenu->setIsCustom(true); $activityMenu->setValue(pow(2, 10)); $activityMenu->setResourceType($types['activity']); $activityMenu->setIsForm(false); $manager->persist($activityMenu); $updateFile = new MenuAction(); $updateFile->setName('update_file'); $updateFile->setAsync(true); $updateFile->setIsCustom(true); $updateFile->setIsForm(false); $updateFile->setResourceType($types['file']); //16 is default for edit $updateFile->setValue(16); $manager->persist($updateFile); $fileAction = new ActivityRuleAction(); $fileAction->setAction('resource-read'); $fileAction->setResourceType($types['file']); $manager->persist($fileAction); $textAction = new ActivityRuleAction(); $textAction->setAction('resource-read'); $textAction->setResourceType($types['text']); $manager->persist($textAction); $badgeAwardAction = new ActivityRuleAction(); $badgeAwardAction->setAction('badge-awarding'); $manager->persist($badgeAwardAction); }
private function addActivityCustomAction() { $this->log('Adding custom action to activities...'); $em = $this->container->get('doctrine.orm.entity_manager'); $typeRepo = $em->getRepository('ClarolineCoreBundle:Resource\\ResourceType'); $actionRepo = $em->getRepository('ClarolineCoreBundle:Resource\\MenuAction'); $activityType = $typeRepo->findOneByName('activity'); $action = $actionRepo->findOneByName('manage-competencies'); if (!$action) { $action = new MenuAction(); $action->setName('manage-competencies'); $action->setResourceType($activityType); // the new action will be bound to the 'open' permission $action->setValue(MaskDecoder::OPEN); $em->persist($action); } $em->flush(); }
public function postUpdate() { $em = $this->container->get('doctrine.orm.entity_manager'); $resourceTypes = $em->getRepository('ClarolineCoreBundle:Resource\\ResourceType')->findAll(); foreach ($resourceTypes as $resourceType) { $decoder = $em->getRepository('ClarolineCoreBundle:Resource\\MenuAction')->findOneBy(array('resourceType' => $resourceType, 'name' => 'open-tracking')); if (!$decoder) { $trackingMenuAction = new MenuAction(); $trackingMenuAction->setValue(pow(2, 3)); $trackingMenuAction->setName('open-tracking'); $trackingMenuAction->setResourceType($resourceType); $trackingMenuAction->setAsync(true); $trackingMenuAction->setIsForm(false); $trackingMenuAction->setIsCustom(false); $em->persist($trackingMenuAction); $this->log("Adding 'open-tracking' menu for resource type '" . $resourceType->getName() . "'"); } else { $this->log("The 'open-tracking' permissions for resource type '" . $resourceType->getName() . "' already exists"); } } $em->flush(); }
/** * @param array $actions * @param ResourceType $resourceType */ private function persistCustomAction($actions, ResourceType $resourceType) { $decoderRepo = $this->em->getRepository('Claroline\\CoreBundle\\Entity\\Resource\\MaskDecoder'); $existingDecoders = $decoderRepo->findBy(array('resourceType' => $resourceType)); $exp = count($existingDecoders); $newDecoders = array(); foreach ($actions as $action) { $decoder = $decoderRepo->findOneBy(array('name' => $action['name'], 'resourceType' => $resourceType)); if (!$decoder) { if (array_key_exists($action['name'], $newDecoders)) { $decoder = $newDecoders[$action['name']]; } else { $decoder = new MaskDecoder(); $decoder->setName($action['name']); $decoder->setResourceType($resourceType); $decoder->setValue(pow(2, $exp)); $this->em->persist($decoder); $newDecoders[$action['name']] = $decoder; $exp++; } } if (isset($action['menu_name'])) { $rtca = new MenuAction(); $rtca->setName($action['menu_name']); $rtca->setResourceType($resourceType); $rtca->setValue($decoder->getValue()); $rtca->setIsForm($action['is_form']); $this->em->persist($rtca); } } $this->em->flush(); }
/** * Adds the default action to a resource type. * * @param \Claroline\CoreBundle\Entity\Resource\ResourceType $type */ public function addDefaultPerms(ResourceType $type) { $createdPerms = array(); for ($i = 0, $size = count(self::$defaultActions); $i < $size; $i++) { $maskDecoder = new MaskDecoder(); $maskDecoder->setValue(pow(2, $i)); $maskDecoder->setName(self::$defaultActions[$i]); $maskDecoder->setResourceType($type); $this->om->persist($maskDecoder); $createdPerms[self::$defaultActions[$i]] = $maskDecoder; } foreach (self::$defaultMenus as $action => $data) { foreach ($data as $name => $isForm) { $menu = new MenuAction(); $menu->setName($name); $menu->setAsync(true); $menu->setIsCustom(false); $menu->setValue($createdPerms[$action]->getValue()); $menu->setResourceType($type); $menu->setIsForm($isForm); $this->om->persist($menu); } } $this->om->flush(); }