Example #1
0
 FromKernel::uses('core/linker.lib', 'utils/ajax.lib', 'utils/input.lib');
 ResourceLinker::init();
 $userInput = Claro_UserInput::getInstance();
 $userInput->setValidator('cmd', new Claro_Validator_AllowedList(array('getLinkList', 'getResourceList', 'resolveLocator')));
 $cmd = $userInput->get('cmd', 'getResourceList');
 $locator = isset($_REQUEST['crl']) && !empty($_REQUEST['crl']) ? ClarolineResourceLocator::parse(rawurldecode($_REQUEST['crl'])) : ResourceLinker::$Navigator->getCurrentLocator(array());
 if ('getLinkList' == $cmd) {
     $linkListIt = ResourceLinker::getLinkList($locator);
     // FIXME : use getResourceName instead of the title recorded in database !
     if (empty($linkListIt)) {
         $linkList = array();
     } else {
         $linkList = array();
         // $linkList = iterator_to_array( $linkListIt );
         foreach ($linkListIt as $link) {
             $linkList[] = array('crl' => $link['crl'], 'name' => ResourceLinker::$Resolver->getResourceName(ClarolineResourceLocator::parse($link['crl'])));
         }
     }
     $response = new Json_Response($linkList);
 } elseif ('resolveLocator' == $cmd) {
     $resourceLinkerResolver = new ResourceLinkerResolver();
     $url = $resourceLinkerResolver->resolve($locator);
     $response = new Json_Response(array('url' => $url));
 } else {
     if (!ResourceLinker::$Navigator->isNavigable($locator)) {
         throw new Exception('Resource not navigable');
     }
     $resourceList = ResourceLinker::$Navigator->getResourceList($locator);
     $elementList = $resourceList->toArray();
     $resourceArr = array();
     $resourceArr['name'] = ResourceLinker::$Resolver->getResourceName($locator);
Example #2
0
 public static function updateLinkList(ResourceLocator $locator, array $resourceList = array())
 {
     $alreadyLinkedResourceList = self::getLinkList($locator);
     $alreadyLinkedResourceList->setFetchMode(Database_ResultSet::FETCH_COLUMN);
     if (count($alreadyLinkedResourceList)) {
         $alreadyLinkedResourceList = iterator_to_array($alreadyLinkedResourceList);
     } else {
         $alreadyLinkedResourceList = array();
     }
     $deletedResourceList = array();
     $addedResourceList = array();
     foreach ($alreadyLinkedResourceList as $crl) {
         if (!in_array($crl, $resourceList)) {
             self::removeLink($locator, ClarolineResourceLocator::parse($crl));
         }
     }
     foreach ($resourceList as $crl) {
         if (!in_array($crl, $alreadyLinkedResourceList)) {
             self::addLink($locator, ClarolineResourceLocator::parse($crl));
         }
     }
 }