/**
  * {@inheritDoc}
  */
 public function setFeed(\Alchemy\Phrasea\Model\Entities\Feed $feed = NULL)
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'setFeed', array($feed));
     return parent::setFeed($feed);
 }
コード例 #2
0
ファイル: 390alpha7a.php プロジェクト: luisbrito/Phraseanet
 /**
  * {@inheritdoc}
  */
 public function apply(base $appbox, Application $app)
 {
     if (false === $this->hasFeedBackup($app)) {
         return false;
     }
     $sql = 'DELETE FROM Feeds';
     $stmt = $app->getApplicationBox()->get_connection()->prepare($sql);
     $stmt->execute();
     $stmt->closeCursor();
     $sql = 'DELETE FROM FeedEntries';
     $stmt = $app->getApplicationBox()->get_connection()->prepare($sql);
     $stmt->execute();
     $stmt->closeCursor();
     $sql = 'DELETE FROM FeedPublishers';
     $stmt = $app->getApplicationBox()->get_connection()->prepare($sql);
     $stmt->execute();
     $stmt->closeCursor();
     $sql = 'DELETE FROM FeedItems';
     $stmt = $app->getApplicationBox()->get_connection()->prepare($sql);
     $stmt->execute();
     $stmt->closeCursor();
     $sql = 'DELETE FROM FeedTokens';
     $stmt = $app->getApplicationBox()->get_connection()->prepare($sql);
     $stmt->execute();
     $stmt->closeCursor();
     $sql = 'DELETE FROM AggregateTokens';
     $stmt = $app->getApplicationBox()->get_connection()->prepare($sql);
     $stmt->execute();
     $stmt->closeCursor();
     $conn = $app->getApplicationBox()->get_connection();
     $sql = 'SELECT id, title, subtitle, public, created_on, updated_on, base_id FROM feeds_backup;';
     $stmt = $conn->prepare($sql);
     $stmt->execute();
     $rs = $stmt->fetchAll(\PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     $n = 0;
     $em = $app['orm.em'];
     $fpSql = 'SELECT id, usr_id, owner, created_on FROM feed_publishers WHERE feed_id = :feed_id;';
     $fpStmt = $conn->prepare($fpSql);
     $feSql = 'SELECT id, title, description, created_on, updated_on, author_name, author_email FROM feed_entries WHERE feed_id = :feed_id AND publisher = :publisher_id;';
     $feStmt = $conn->prepare($feSql);
     $fiSql = 'SELECT sbas_id, record_id, ord FROM feed_entry_elements WHERE entry_id = :entry_id;';
     $fiStmt = $conn->prepare($fiSql);
     $ftSql = 'SELECT token, usr_id, aggregated FROM feed_tokens WHERE feed_id = :feed_id;';
     $ftStmt = $conn->prepare($ftSql);
     $faSql = 'SELECT token, usr_id FROM feed_tokens WHERE aggregated = 1;';
     $faStmt = $conn->prepare($faSql);
     foreach ($rs as $row) {
         $feed = new Feed();
         $feed->setTitle($row['title']);
         $feed->setSubtitle($row['subtitle']);
         $feed->setIconUrl(false);
         $feed->setIsPublic($row['public']);
         $feed->setCreatedOn(new \DateTime($row['created_on']));
         $feed->setUpdatedOn(new \DateTime($row['updated_on']));
         $feed->setBaseId($row['base_id']);
         $fpStmt->execute([':feed_id' => $row['id']]);
         $fpRes = $fpStmt->fetchAll(\PDO::FETCH_ASSOC);
         foreach ($fpRes as $fpRow) {
             if (null === ($user = $this->loadUser($app['orm.em'], $fpRow['usr_id']))) {
                 continue;
             }
             $feedPublisher = new FeedPublisher();
             $feedPublisher->setFeed($feed);
             $feed->addPublisher($feedPublisher);
             $feedPublisher->setCreatedOn(new \DateTime($fpRow['created_on']));
             $feedPublisher->setIsOwner((bool) $fpRow['owner']);
             $feedPublisher->setUser($user);
             $feStmt->execute([':feed_id' => $row['id'], ':publisher_id' => $fpRow['id']]);
             $feRes = $feStmt->fetchAll(\PDO::FETCH_ASSOC);
             foreach ($feRes as $feRow) {
                 $feedEntry = new FeedEntry();
                 $feedEntry->setFeed($feed);
                 $feed->addEntry($feedEntry);
                 $feedEntry->setPublisher($feedPublisher);
                 $feedEntry->setTitle($feRow['title']);
                 $feedEntry->setSubtitle($feRow['description']);
                 $feedEntry->setAuthorName((string) $feRow['author_name']);
                 $feedEntry->setAuthorEmail((string) $feRow['author_email']);
                 $feedEntry->setCreatedOn(new \DateTime($feRow['created_on']));
                 $feedEntry->setUpdatedOn(new \DateTime($feRow['updated_on']));
                 $fiStmt->execute([':entry_id' => $feRow['id']]);
                 $fiRes = $fiStmt->fetchAll(\PDO::FETCH_ASSOC);
                 foreach ($fiRes as $fiRow) {
                     $feedItem = new FeedItem();
                     $feedItem->setEntry($feedEntry);
                     $feedEntry->addItem($feedItem);
                     $feedItem->setOrd($fiRow['ord']);
                     $feedItem->setSbasId($fiRow['sbas_id']);
                     $feedItem->setRecordId($fiRow['record_id']);
                     $em->persist($feedItem);
                 }
                 $em->persist($feedEntry);
             }
             $em->persist($feedPublisher);
         }
         $ftStmt->execute([':feed_id' => $row['id']]);
         $ftRes = $ftStmt->fetchAll(\PDO::FETCH_ASSOC);
         foreach ($ftRes as $ftRow) {
             if (null === ($user = $this->loadUser($app['orm.em'], $ftRow['usr_id']))) {
                 continue;
             }
             $token = new FeedToken();
             $token->setFeed($feed);
             $feed->addToken($token);
             $token->setUser($user);
             $token->setValue($ftRow['token']);
             $em->persist($token);
         }
         $em->persist($feed);
         $n++;
         if ($n % 100 === 0) {
             $em->flush();
             $em->clear();
         }
     }
     $fiStmt->closeCursor();
     $feStmt->closeCursor();
     $fpStmt->closeCursor();
     $ftStmt->closeCursor();
     $faStmt->execute();
     $faRes = $faStmt->fetchAll(\PDO::FETCH_ASSOC);
     foreach ($faRes as $faRow) {
         if (null === ($user = $this->loadUser($app['orm.em'], $faRow['usr_id']))) {
             continue;
         }
         $token = new AggregateToken();
         $token->setUser($user);
         $token->setValue($faRow['token']);
         $em->persist($token);
     }
     $faStmt->closeCursor();
     $em->flush();
     $em->clear();
     return true;
 }
コード例 #3
0
 private function insertOneFeedEntry(EntityManager $em, \Pimple $DI, Feed $feed, $public)
 {
     $entry = new FeedEntry();
     $entry->setFeed($feed);
     $entry->setTitle("test");
     $entry->setSubtitle("description");
     $entry->setAuthorName('user');
     $entry->setAuthorEmail('*****@*****.**');
     $publisher = $feed->getPublisher($DI['user']);
     if ($publisher !== null) {
         $entry->setPublisher($publisher);
     }
     $feed->addEntry($entry);
     $em->persist($entry);
     $em->persist($feed);
     $this->insertOneFeedItem($em, $DI, $entry, $public);
 }
コード例 #4
0
ファイル: 320alpha4b.php プロジェクト: luisbrito/Phraseanet
 /**
  * {@inheritdoc}
  */
 public function apply(base $appbox, Application $app)
 {
     try {
         $sql = 'ALTER TABLE `ssel` ADD `migrated` INT NOT NULL DEFAULT "0"';
         $stmt = $appbox->get_connection()->prepare($sql);
         $stmt->execute();
         $stmt->closeCursor();
     } catch (\Exception $e) {
     }
     $sql = 'SELECT ssel_id, usr_id, name, descript, pub_date, updater, pub_restrict, homelink
             FROM ssel
             WHERE (public = "1" OR homelink="1")
               AND migrated = 0';
     $stmt = $appbox->get_connection()->prepare($sql);
     $stmt->execute();
     $rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     $date_ref = new DateTime();
     $n = 0;
     $app['orm.em']->getEventManager()->removeEventSubscriber(new TimestampableListener());
     foreach ($rs as $row) {
         if (null === ($user = $this->loadUser($app['orm.em'], $row['usr_id']))) {
             continue;
         }
         $feed = $this->get_feed($app, $appbox, $user, $row['pub_restrict'], $row['homelink']);
         if (!$feed instanceof Feed) {
             continue;
         }
         $publishers = $feed->getPublishers();
         $entry = new FeedEntry();
         $entry->setAuthorEmail((string) $user->getEmail());
         $entry->setAuthorName((string) $user->getDisplayName());
         $entry->setFeed($feed);
         $entry->setPublisher($publishers->first());
         $entry->setTitle($row['name']);
         $entry->setSubtitle($row['descript']);
         $feed->addEntry($entry);
         $date_create = new DateTime($row['pub_date']);
         if ($date_create < $date_ref) {
             $date_ref = $date_create;
         }
         $entry->setCreatedOn($date_create);
         if ($row['updater'] != '0000-00-00 00:00:00') {
             $date_update = new DateTime($row['updater']);
             $entry->setUpdatedOn($date_update);
         }
         $sql = 'SELECT sselcont_id, ssel_id, base_id, record_id
                 FROM sselcont
                 WHERE ssel_id = :ssel_id
                 ORDER BY ord ASC';
         $stmt = $appbox->get_connection()->prepare($sql);
         $stmt->execute([':ssel_id' => $row['ssel_id']]);
         $rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
         $stmt->closeCursor();
         foreach ($rs as $row) {
             try {
                 $record = new record_adapter($app, phrasea::sbasFromBas($app, $row['base_id']), $row['record_id']);
                 $item = new FeedItem();
                 $item->setEntry($entry);
                 $entry->addItem($item);
                 $item->setRecordId($record->get_record_id());
                 $item->setSbasId($record->get_sbas_id());
                 $app['orm.em']->persist($item);
             } catch (NotFoundHttpException $e) {
             }
         }
         $app['orm.em']->persist($entry);
         $sql = 'UPDATE ssel SET deleted = "1", migrated="1"
                 WHERE ssel_id = :ssel_id';
         $stmt = $appbox->get_connection()->prepare($sql);
         $stmt->execute([':ssel_id' => $row['ssel_id']]);
         $stmt->closeCursor();
         $app['orm.em']->persist($feed);
         $n++;
         if ($n % 1000 == 0) {
             $app['orm.em']->flush();
             $app['orm.em']->clear();
         }
     }
     $this->set_feed_dates($date_ref);
     $app['orm.em']->flush();
     $app['orm.em']->clear();
     $app['orm.em']->getEventManager()->removeEventSubscriber(new TimestampableListener());
     return true;
 }