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); }
/** * {@inheritDoc} */ public function setPublisher(\Alchemy\Phrasea\Model\Entities\FeedPublisher $publisher = NULL) { $this->__initializer__ && $this->__initializer__->__invoke($this, 'setPublisher', array($publisher)); return parent::setPublisher($publisher); }
/** * {@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; }