/** * 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()); }
/** * @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); }
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); }
/** * 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; }