Пример #1
0
 /**
  * test folder creation
  * @covers Thelia\Action\Folder::create
  */
 public function testCreateFolder()
 {
     $event = new FolderCreateEvent();
     $event->setParent(0)->setVisible(1)->setLocale('en_US')->setTitle('folder creation test');
     $folderAction = new Folder();
     $folderAction->create($event, null, $this->getMockEventDispatcher());
     $folder = $event->getFolder();
     $this->assertInstanceOf('Thelia\\Model\\Folder', $folder);
     $this->assertEquals('folder creation test', $folder->getTitle());
     $this->assertEquals(1, $folder->getVisible());
     $this->assertEquals(0, $folder->getParent());
 }
Пример #2
0
 /**
  * @param FolderCreateEvent $event
  */
 public function create(FolderCreateEvent $event)
 {
     $folder = new FolderModel();
     $folder->setDispatcher($event->getDispatcher());
     $folder->setParent($event->getParent())->setVisible($event->getVisible())->setLocale($event->getLocale())->setTitle($event->getTitle())->save();
     $event->setFolder($folder);
 }
Пример #3
0
 public function import($startRecord = 0)
 {
     $count = 0;
     $errors = 0;
     $hdl = $this->t1db->query(sprintf("select * from dossier order by parent asc limit %d, %d", intval($startRecord), $this->getChunkSize()));
     $image_import = new FolderImageImport($this->dispatcher, $this->t1db);
     $document_import = new FolderDocumentImport($this->dispatcher, $this->t1db);
     while ($hdl && ($dossier = $this->t1db->fetch_object($hdl))) {
         Tlog::getInstance()->info("Processing T1 folder ID {$dossier->id}, parent: {$dossier->parent}.");
         $count++;
         try {
             $this->fld_corresp->getT2($dossier->id);
             Tlog::getInstance()->warning("Folder ID={$dossier->id} already imported.");
             continue;
         } catch (ImportException $ex) {
             // Okay, the dossier was not imported.
         }
         try {
             $event = new FolderCreateEvent();
             $idx = 0;
             $descs = $this->t1db->query_list("select * from dossierdesc where dossier = ? order by lang asc", array($dossier->id));
             foreach ($descs as $objdesc) {
                 $lang = $this->getT2Lang($objdesc->lang);
                 // A title is required to create the rewritten URL
                 if (empty($objdesc->titre)) {
                     $objdesc->titre = sprintf("Untitled-%d-%s", $objdesc->id, $lang->getCode());
                 }
                 $parent = $dossier->parent > 0 ? $dossier->parent + 1000000 : 0;
                 if ($idx == 0) {
                     $event->setLocale($lang->getLocale())->setTitle($objdesc->titre)->setParent($parent)->setVisible($dossier->ligne == 1 ? true : false);
                     $this->dispatcher->dispatch(TheliaEvents::FOLDER_CREATE, $event);
                     $folder_id = $event->getFolder()->getId();
                     Tlog::getInstance()->info("Created folder {$folder_id} from {$objdesc->titre} ({$dossier->id})");
                     // Update position
                     $update_position_event = new UpdatePositionEvent($folder_id, UpdatePositionEvent::POSITION_ABSOLUTE, $dossier->classement);
                     $this->dispatcher->dispatch(TheliaEvents::FOLDER_UPDATE_POSITION, $update_position_event);
                     $this->fld_corresp->addEntry($dossier->id, $folder_id);
                     // Import images and documents
                     // ---------------------------
                     $image_import->importMedia($dossier->id, $folder_id);
                     $document_import->importMedia($dossier->id, $folder_id);
                 }
                 // Update the newly created folder
                 $update_event = new FolderUpdateEvent($folder_id);
                 $update_event->setTitle($objdesc->titre)->setParent($parent)->setLocale($lang->getLocale())->setVisible($dossier->ligne == 1 ? true : false)->setChapo($objdesc->chapo)->setDescription($objdesc->description)->setPostscriptum($objdesc->postscriptum);
                 $this->dispatcher->dispatch(TheliaEvents::FOLDER_UPDATE, $update_event);
                 // Update the rewritten URL, if one was defined
                 $this->updateRewrittenUrl($event->getFolder(), $lang->getLocale(), $objdesc->lang, "dossier", "%id_dossier={$dossier->id}");
                 $idx++;
             }
         } catch (\Exception $ex) {
             Tlog::getInstance()->addError("Failed to import folder ID={$dossier->id}: ", $ex->getMessage());
             $errors++;
         }
     }
     return new ImportChunkResult($count, $errors);
 }
Пример #4
0
 /**
  * Creates the creation event with the provided form data
  *
  * @param unknown $formData
  */
 protected function getCreationEvent($formData)
 {
     $creationEvent = new FolderCreateEvent();
     $creationEvent->setLocale($formData['locale'])->setTitle($formData['title'])->setVisible($formData['visible'])->setParent($formData['parent']);
     return $creationEvent;
 }