protected function execute($arguments = array(), $options = array())
 {
     $databaseManager = new sfDatabaseManager($this->configuration);
     $connection = $databaseManager->getDatabase($options['connection'])->getConnection();
     $visiteurs_dir = sfConfig::get('sf_root_dir') . '/web/visiteur/';
     $interactifs_dir = sfConfig::get('sf_root_dir') . '/web/interactif';
     $finder = new sfFinder();
     $fileSystem = new sfFilesystem();
     foreach ($finder->in($visiteurs_dir) as $file) {
         //echo 'search in '. $file;
         if (is_file($file) && basename($file) != '.DS_Store') {
             $realpath = str_replace($visiteurs_dir, "", $file);
             $split = explode('/', $realpath);
             if (count($split) > 2) {
                 //print_r($split);
                 //exit;
                 $visiteur_id = $split[0];
                 $interactif_id = $split[1];
                 $filename = basename($file);
                 //  check if symlink exist
                 if (Doctrine::getTable('Interactif')->symlinkDocument($interactif_id, $visiteur_id, $filename, $file)) {
                     $this->logSection("INFO", "Symlink " . $interactifs_dir . '/' . $interactif_id . '/' . $visiteur_id . '/' . $filename);
                 }
             }
         }
     }
     $this->logSection("INFO", "END Symlink interactif directory");
 }
 /**
  * @see sfBaseTask
  */
 protected function execute($arguments = array(), $options = array())
 {
     if (($arguments['stability'] == 'beta' || $arguments['stability'] == 'alpha') && count(explode('.', $arguments['version'])) < 2) {
         list($stdout, $stderr) = $this->getFilesystem()->execute('svn status -u ' . sfConfig::get('sf_root_dir'));
         if (0 < strlen($stderr) || preg_match('/Status against revision\\:\\s+(\\d+)\\s*$/im', $stdout, $matches) < 1) {
             throw new Exception('Unable to find last svn revision');
         }
         // make a PEAR compatible version
         $arguments['version'] .= $matches[1];
     }
     $doc = new DOMDocument();
     $doc->load(sfConfig::get('sf_config_dir') . '/package.xml');
     $xpath = new DOMXPath($doc);
     $xpath->registerNamespace('p', 'http://pear.php.net/dtd/package-2.0');
     $name = $xpath->evaluate('string(p:name)', $doc->documentElement);
     print 'Releasing ' . $name . ' version "' . $arguments['version'] . "\"\n";
     // All lines which start with a character other than 'P' ('Performing...'),
     // 'S' ('Status...'), or 'X' (externals definition) are local changes.
     list($stdout, $stderr) = $this->getFilesystem()->execute('svn status --no-ignore -u ' . sfConfig::get('sf_root_dir'));
     if (0 < strlen($stderr)) {
         throw new Exception("svn error: {$stderr}");
     } else {
         if (preg_match('/^[^PSX\\n]/m', $stdout) > 0) {
             throw new Exception('Local modifications. Release process aborted!');
         }
     }
     if (!$xpath->evaluate('boolean(p:date)', $doc->documentElement)) {
         $dateNode = $doc->createElement('date', date('Y-m-d'));
         // Date element must immediately precede the optional time element or the
         // mandatory version element
         $timeOrVersionNode = $xpath->query('p:time | p:version', $doc->documentElement)->item(0);
         $doc->documentElement->insertBefore($dateNode, $timeOrVersionNode);
     }
     if (!$xpath->evaluate('boolean(p:version/p:release)', $doc->documentElement)) {
         $releaseNode = $doc->createElement('release', $arguments['version']);
         $apiNode = $xpath->query('p:version/p:api', $doc->documentElement)->item(0);
         $apiNode->parentNode->insertBefore($releaseNode, $apiNode);
     }
     if (null === ($stabilityNode = $xpath->query('p:stability', $doc->documentElement)->item(0))) {
         $stabilityNode = $doc->createElement('stability');
         $licenseNode = $xpath->query('p:license', $doc->documentElement)->item(0);
         $doc->documentElement->insertBefore($stabilityNode, $licenseNode);
     }
     if (null === ($apiNode = $xpath->query('p:api', $stabilityNode)->item(0))) {
         $apiNode = $doc->createElement('api', $arguments['stability']);
         $stabilityNode->appendChild($apiNode);
     }
     if (!$xpath->evaluate('boolean(p:release)', $stabilityNode)) {
         $releaseNode = $doc->createElement('release', $arguments['stability']);
         $stabilityNode->insertBefore($releaseNode, $apiNode);
     }
     // add class files
     if (null === ($dirNode = $xpath->query('p:contents/p:dir', $doc->documentElement)->item(0))) {
         $dirNode = $doc->createElement('dir');
         $dirNode->setAttribute('name', '/');
         $contentsNode = $xpath->query('p:contents', $doc->documentElement)->item(0);
         $contentsNode->appendChild($dirNode);
     }
     $patternNodes = array();
     foreach ($xpath->query('p:contents//p:file', $doc->documentElement) as $patternNode) {
         // Globs like //foo/... must be matched against paths with a leading
         // slash, while globs like foo/... must be matched against paths without
         // a leading slash.  Consequently, prefix all globs with slash, if
         // necessary, and always match against paths with a leading slash.
         if (strncmp($glob = $patternNode->getAttribute('name'), '/', 1) != 0) {
             $glob = '/' . $glob;
         }
         $pattern = AuditTask::globToPattern($glob);
         $patternNodes[$pattern] = $patternNode;
         $patternNode->parentNode->removeChild($patternNode);
     }
     // FIXME: Switch back to SvnFinder when it supports externals
     $finder = new sfFinder();
     foreach ($finder->in(sfConfig::get('sf_root_dir')) as $path) {
         if (strncmp($path, sfConfig::get('sf_root_dir'), $len = strlen(sfConfig::get('sf_root_dir'))) == 0) {
             $path = substr($path, $len);
         }
         unset($fileNode);
         foreach ($patternNodes as $pattern => $patternNode) {
             if (preg_match('/^' . str_replace('/', '\\/', $pattern) . '$/', $path) > 0) {
                 if (!isset($fileNode)) {
                     $fileNode = $doc->createElement('file');
                 }
                 foreach ($patternNode->attributes as $attrNode) {
                     $fileNode->setAttributeNode(clone $attrNode);
                 }
             }
         }
         if (isset($fileNode)) {
             $fileNode->setAttribute('name', ltrim($path, '/'));
             $dirNode->appendChild($fileNode);
         }
     }
     $packageXmlPath = sfConfig::get('sf_root_dir') . '/package.xml';
     $doc->save($packageXmlPath);
     list($stdout, $stderr) = $this->getFilesystem()->execute('pear package');
     if (0 < strlen($stderr)) {
         throw new Exception("Pear error: {$stderr}");
     }
     print $stdout;
     $this->getFilesystem()->remove($packageXmlPath);
 }
Ejemplo n.º 3
0
 public function browseDocuments($visiteur_id, $interactif_id_param = "", $params = array('page_size' => 100, 'offset' => 1))
 {
     $sf_root_dir = sfConfig::get('sf_root_dir') . '/web/visiteur';
     $host_url = 'http://' . sfConfig::get('app_front_url') . '/visiteur';
     $finder = new sfFinder();
     $dirs = array();
     $interactif_id = '';
     $path = '/' . $visiteur_id . '/';
     //die($sf_root_dir.$path);
     $cpt_offset = 0;
     $cpt_page_size = 0;
     $old_interactif = '';
     foreach ($finder->in($sf_root_dir . $path . '/' . $interactif_id_param) as $file) {
         //echo 'search in '. $file;
         if (is_file($file)) {
             //echo $file .' == ' . filectime($file) .'<br>';
             $filepath = str_replace($sf_root_dir . $path, "", $file);
             //echo $filepath. ' <br>';
             $split = explode("/", $filepath);
             //print_r($split);
             if (count($split) < 2) {
                 continue;
             }
             $cpt_offset++;
             //echo "\n OFFSET= ".$cpt_offset . ' <= '.$params['offset'];
             if ($cpt_offset <= $params['offset']) {
                 continue;
             }
             if (count($split) > 1) {
                 if ($cpt_page_size < $params['page_size']) {
                     if ($interactif_id_param == '') {
                         $interactif_id = $split[0];
                     } else {
                         $interactif_id = $interactif_id_param;
                     }
                     $filename = $split[1];
                     if ($filename == '.DS_Store') {
                         continue;
                     }
                     $url_path = str_replace('//', '/', $path . '/' . $interactif_id . '/' . $filename);
                     $result = array("url" => $host_url . $url_path, "creation_date" => date("Y-m-d H:i:s", filemtime($file)));
                     $interactif = array();
                     if ($old_interactif != $interactif_id) {
                         $interactif_info = Doctrine::getTable('Interactif')->findOneByGuid($interactif_id);
                         if ($interactif_info) {
                             $query = 'SELECT e.guid AS guid, e.libelle AS libelle';
                             $query .= ' FROM exposition e, exposition_parcours e2, parcours_interactif p, interactif i';
                             $query .= ' WHERE (';
                             $query .= ' e.guid = e2.exposition_id';
                             $query .= ' AND e2.parcours_id = p.parcours_id';
                             $query .= ' AND p.interactif_id = i.guid';
                             $query .= ' AND i.guid = "' . $interactif_id . '"';
                             $query .= ' ) group by guid';
                             $expo_info = Doctrine_Manager::getInstance()->getCurrentConnection()->fetchAssoc($query);
                             $interactif = array('libelle' => $interactif_info->getLibelle(), 'url_illustration' => $interactif_info->getUrlIllustration(), 'expositions' => $expo_info);
                         }
                     }
                     $old_interactif = $interactif_id;
                     $dirs["interactifs"][$interactif_id][] = array_merge($interactif, $result);
                 }
                 $cpt_page_size++;
             }
         }
     }
     //print_r($dirs);
     return $dirs;
 }
Ejemplo n.º 4
0
 public function browseDocuments($interactif_id, $visiteur_id_param = "", $params = array('page_size' => 100, 'offset' => 1))
 {
     $sf_root_dir = sfConfig::get('sf_root_dir') . '/web/interactif';
     $host_url = 'http://' . sfConfig::get('app_front_url') . '/interactif';
     $finder = new sfFinder();
     $finder->follow_link();
     $dirs = array();
     $visiteur_id = '';
     $path = '/' . $interactif_id . '/';
     //die($sf_root_dir.$path);
     $cpt_offset = 0;
     $cpt_page_size = 0;
     $old_visiteur = '';
     foreach ($finder->in($sf_root_dir . $path . '/' . $visiteur_id_param) as $file) {
         //echo 'search in '. $file;
         if (is_file($file)) {
             //echo $file .' == ' . $sf_root_dir.$path .'<br>';
             $filepath = str_replace($sf_root_dir . $path, "", $file);
             //echo $filepath. ' <br>';
             $split = explode("/", $filepath);
             //print_r($split);
             if (count($split) < 2) {
                 continue;
             }
             $cpt_offset++;
             //echo "\n OFFSET= ".$cpt_offset . ' <= '.$params['offset'];
             if ($cpt_offset <= $params['offset']) {
                 continue;
             }
             if (count($split) > 1) {
                 if ($cpt_page_size < $params['page_size']) {
                     //echo "\n PAGESIZE= ".$cpt_page_size . ' < '.$params['page_size'];
                     if ($visiteur_id_param == '') {
                         $visiteur_id = $split[0];
                     } else {
                         $visiteur_id = $visiteur_id_param;
                     }
                     $visiteur = array();
                     if ($old_visiteur != $visiteur_id) {
                         $visiteur_info = Doctrine::getTable('Visiteur')->findOneByGuid($visiteur_id);
                         if ($visiteur_info) {
                             $visiteur = array('pseudo_son' => $visiteur_info->getPseudoSon());
                         }
                     }
                     $old_visiteur = $visiteur_id;
                     $filename = $split[1];
                     if ($filename == '.DS_Store') {
                         continue;
                     }
                     $url_path = str_replace('//', '/', $path . '/' . $visiteur_id . '/' . $filename);
                     $result = array("url" => $host_url . $url_path, "creation_date" => date("Y-m-d H:i:s", filemtime($file)));
                     $dirs["visiteurs"][$visiteur_id][] = array_merge($visiteur, $result);
                 }
                 $cpt_page_size++;
             }
         }
     }
     //print_r($dirs);
     return $dirs;
 }