Example #1
0
/**
 * Return service url for ticket based authentication.
 * $op Option for refreshing ticket or not.
 * @param string $username The username to use for user authentication.
 */
function alfresco_utils_get_wc_url($url, $op = 'norefresh', $username = '')
{
    global $CFG;
    $endpoint = alfresco_base_url();
    $ticket = alfresco_utils_get_ticket($op, $username);
    if (false === strstr($url, '?')) {
        return $endpoint . $url . '?alf_ticket=' . $ticket;
    } else {
        return $endpoint . str_replace('?', '?alf_ticket=' . $ticket . '&', $url);
    }
}
 /**
  * Verify that the Alfresco repository is currently setup and ready to be
  * used with Moodle (i.e. the needed directory structure is in place).
  *
  * @uses $CFG
  * @param none
  * @return bool True if setup, False otherwise.
  */
 function verify_setup()
 {
     global $CFG, $USER;
     if (ALFRESCO_DEBUG_TRACE) {
         mtrace('verify_setup()');
     }
     if (!$this->get_defaults()) {
         return false;
     }
     if (self::is_version('3.2')) {
         if (!alfresco_get_services()) {
             return false;
         }
         // Set up the root node
         $response = alfresco_request(alfresco_get_uri('', 'sites'));
         $response = preg_replace('/(&[^amp;])+/', '&', $response);
         $dom = new DOMDocument();
         $dom->preserveWhiteSpace = false;
         $dom->loadXML($response);
         $nodes = $dom->getElementsByTagName('entry');
         $type = '';
         $this->root = alfresco_process_node($dom, $nodes->item(0), $type);
     } else {
         if (self::is_version('3.4')) {
             if (empty($this->cmis)) {
                 $this->cmis = new CMISService(alfresco_base_url() . '/api/cmis', $CFG->repository_alfresco_server_username, $CFG->repository_alfresco_server_password);
                 if (empty($this->cmis->authenticated)) {
                     return false;
                 }
                 if (!($root = $this->cmis->getObjectByPath('/'))) {
                     return false;
                 }
                 $type = '';
                 $this->root = alfresco_process_node_new($root, $type);
             }
         }
     }
     // If there is no root folder saved or it's set to default,
     // make sure there is a default '/moodle' folder.
     if (empty($CFG->repository_alfresco_root_folder) || $CFG->repository_alfresco_root_folder == '/moodle') {
         $root = $this->get_root();
         if ($root == false || !isset($root->uuid)) {
             return false;
         }
         $dir = $this->read_dir($root->uuid, true);
         if (!empty($dir->folders)) {
             foreach ($dir->folders as $folder) {
                 if ($folder->title == 'moodle') {
                     $muuid = $folder->uuid;
                 }
             }
         }
         // Create the main Moodle directory.
         if (empty($muuid)) {
             $muuid = $this->create_dir('moodle', $root->uuid, '', true);
             if ($muuid === false) {
                 return false;
             }
         }
         if (empty($muuid)) {
             debugging(get_string('invalidpath', 'repository_alfresco'));
             return false;
         }
         $this->muuid = $muuid;
         $this->node_inherit($muuid, false);
         // Otherwise, use the folder that the plug-in has been configured with.
     } else {
         if (!($uuid = alfresco_uuid_from_path($CFG->repository_alfresco_root_folder))) {
             debugging(get_string('invalidpath', 'repository_alfresco'));
             return false;
         }
         $this->muuid = $uuid;
         $this->node_inherit($uuid, false);
     }
     // Attempt to find the UUID of the main storage folders within the root.
     $dir = $this->read_dir($this->muuid, true);
     if (!empty($dir->folders)) {
         foreach ($dir->folders as $folder) {
             if ($folder->title == 'shared') {
                 $this->suuid = $folder->uuid;
             } else {
                 if ($folder->title == 'course') {
                     $this->cuuid = $folder->uuid;
                 } else {
                     if ($folder->title == 'user') {
                         $this->uuuid = $folder->uuid;
                     } else {
                         if ($folder->title == 'organization') {
                             $this->ouuid = $folder->uuid;
                         }
                     }
                 }
             }
         }
     }
     // Create the shared storage directory.
     if (empty($this->suuid)) {
         $suuid = $this->create_dir('shared', $this->muuid, true);
         if ($suuid === false) {
             return false;
         }
         $this->suuid = $suuid;
         $this->node_inherit($suuid, false);
     }
     // Create the course space directory.
     if (empty($this->cuuid)) {
         $cuuid = $this->create_dir('course', $this->muuid, true);
         if ($cuuid === false) {
             return false;
         }
         $this->cuuid = $cuuid;
         $this->node_inherit($cuuid, false);
     }
     // Create the organization shared storage directory.
     if (empty($this->ouuid)) {
         $ouuid = $this->create_dir('organization', $this->muuid, true);
         if ($ouuid === false) {
             return false;
         }
         $this->ouuid = $ouuid;
         $this->node_inherit($ouuid, false);
     }
     // We no longer will automatically create the course space directory as it's no longer needed.
     // Make sure the temp directory is enabled.
     if (!is_dir($CFG->dataroot . '/temp/alfresco')) {
         mkdir($CFG->dataroot . '/temp/alfresco', $CFG->directorypermissions, true);
     }
     return true;
 }