Exemple #1
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $appbox, Application $app)
 {
     $conn = $appbox->get_connection();
     try {
         //get all old lazaret file & transform them to LazaretFile object
         $sql = 'SELECT * FROM lazaret';
         $stmt = $conn->prepare($sql);
         $stmt->execute();
         $rs = $stmt->fetchAll();
         $stmt->closeCursor();
     } catch (DBALException $e) {
         // table not found
         if ($e->getCode() == '42S02') {
         }
         return;
     }
     //order matters for foreign keys constraints
     //truncate all altered tables
     $this->truncateTable($app['EM'], 'Alchemy\\Phrasea\\Model\\Entities\\LazaretAttribute');
     $this->truncateTable($app['EM'], 'Alchemy\\Phrasea\\Model\\Entities\\LazaretCheck');
     $this->truncateTable($app['EM'], 'Alchemy\\Phrasea\\Model\\Entities\\LazaretFile');
     $this->truncateTable($app['EM'], 'Alchemy\\Phrasea\\Model\\Entities\\LazaretSession');
     $i = 0;
     foreach ($rs as $row) {
         $filePath = $app['tmp.lazaret.path'] . '/' . $row['filepath'];
         if (null === ($user = $this->loadUser($app['EM'], $row['usr_id']))) {
             continue;
         }
         if (file_exists($filePath)) {
             $spec = new ImageSpec();
             $spec->setResizeMode(ImageSpec::RESIZE_MODE_INBOUND_FIXEDRATIO);
             $spec->setDimensions(375, 275);
             $thumbPath = $app['tmp.lazaret.path'] . '/' . sprintf("thumb_%s", $row['filepath']);
             try {
                 $app['media-alchemyst']->turnInto($filePath, $thumbPath, $spec);
             } catch (MediaAlchemystException $e) {
             }
             $media = $app['mediavorus']->guess($filePath);
             $collection = \collection::get_from_base_id($app, $row['base_id']);
             $borderFile = new \Alchemy\Phrasea\Border\File($app, $media, $collection);
             $lazaretSession = new LazaretSession();
             $lazaretSession->setUser($user);
             $lazaretFile = new LazaretFile();
             $lazaretFile->setBaseId($row['base_id']);
             if (null === $row['uuid']) {
                 $uuid = $borderFile->getUUID(true);
                 $lazaretFile->setUuid($uuid);
             } else {
                 $lazaretFile->setUuid($row['uuid']);
             }
             if (null === $row['sha256']) {
                 $sha256 = $media->getHash('sha256');
                 $lazaretFile->setSha256($sha256);
             } else {
                 $lazaretFile->setSha256($row['sha256']);
             }
             $lazaretFile->setOriginalName($row['filename']);
             $lazaretFile->setFilename($row['filepath']);
             $lazaretFile->setThumbFilename(pathinfo($thumbPath), PATHINFO_BASENAME);
             $lazaretFile->setCreated(new \DateTime($row['created_on']));
             $lazaretFile->setSession($lazaretSession);
             $app['EM']->persist($lazaretFile);
             if (0 === ++$i % 100) {
                 $app['EM']->flush();
                 $app['EM']->clear();
             }
         }
     }
     $app['EM']->flush();
     $app['EM']->clear();
     $stmt->closeCursor();
     return true;
 }
 /**
  * {@inheritDoc}
  */
 public function setCreated(\DateTime $created)
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'setCreated', array($created));
     return parent::setCreated($created);
 }