/** * {@inheritdoc} */ public function apply(base $appbox, Application $app) { $sql = 'DELETE FROM FtpExports'; $stmt = $app->getApplicationBox()->get_connection()->prepare($sql); $stmt->execute(); $stmt->closeCursor(); $sql = 'DELETE FROM FtpExportElements'; $stmt = $app->getApplicationBox()->get_connection()->prepare($sql); $stmt->execute(); $stmt->closeCursor(); $conn = $app->getApplicationBox()->get_connection(); $em = $app['orm.em']; $em->getEventManager()->removeEventSubscriber(new TimestampableListener()); $sql = 'SELECT `id`, `crash`, `nbretry`, `mail`, `addr`, `ssl`, `login`, `pwd`, `passif`, `destfolder`, `sendermail`, `text_mail_sender`, `text_mail_receiver`, `usr_id`, `date`, `foldertocreate`, `logfile` FROM ftp_export'; $stmt = $conn->prepare($sql); $stmt->execute(); $rs = $stmt->fetchAll(\PDO::FETCH_ASSOC); $stmt->closeCursor(); $sql = 'SELECT base_id, record_id, subdef, filename, folder, error, done, businessfields FROM ftp_export_elements WHERE ftp_export_id = :export_id'; $stmt = $conn->prepare($sql); $n = 0; foreach ($rs as $row) { if (null === ($user = $this->loadUser($app['orm.em'], $row['usr_id']))) { continue; } $export = new FtpExport(); $export->setAddr($row['addr'])->setCrash($row['crash'])->setNbretry($row['nbretry'])->setMail($row['mail'])->setSsl($row['ssl'])->setLogin($row['login'])->setPwd($row['pwd'])->setPassif($row['passif'])->setDestfolder($row['destfolder'])->setSendermail($row['sendermail'])->setTextMailReceiver($row['text_mail_sender'])->setTextMailSender($row['text_mail_reveiver'])->setUser($user)->setCreated(new \DateTime($row['date']))->setUpdated(new \DateTime($row['date']))->setFoldertocreate($row['foldertocreate'])->setLogfile($row['logfile']); $em->persist($export); $stmt->execute(['export_id' => $row['id']]); $rs = $stmt->fetchAll(\PDO::FETCH_ASSOC); foreach ($rs as $element) { $element = new FtpExportElement(); $element->setBaseId($row['base_id'])->setRecordId($row['record_id'])->setBusinessfields($row['businessfields'])->setCreated(new \DateTime($row['date']))->setUpdated(new \DateTime($row['date']))->setDone(!!$row['done'])->setError(!!$row['error'])->setFilename($row['filename'])->setFolder($row['folder'])->setSubdef($row['subdef'])->setExport($export); $export->addElement($element); $em->persist($element); } $n++; if ($n % 200 === 0) { $em->flush(); $em->clear(); } } $stmt->closeCursor(); $em->flush(); $em->clear(); $em->getEventManager()->addEventSubscriber(new TimestampableListener()); return true; }
/** * {@inheritDoc} */ public function setAddr($addr) { $this->__initializer__ && $this->__initializer__->__invoke($this, 'setAddr', array($addr)); return parent::setAddr($addr); }
public function testFindByUser() { $match1 = new FtpExport(); $match1->setAddr('Match 1')->setUser(self::$DI['user']); $match2 = new FtpExport(); $match2->setAddr('Match 2')->setUser(self::$DI['user']); $noMatch1 = new FtpExport(); $noMatch1->setAddr('No match 1')->setUser(self::$DI['user_alt1']); self::$DI['app']['orm.em']->persist($match1); self::$DI['app']['orm.em']->persist($match2); self::$DI['app']['orm.em']->persist($noMatch1); self::$DI['app']['orm.em']->flush(); $exports = self::$DI['app']['orm.em']->getRepository('Phraseanet:FtpExport')->findByUser(self::$DI['user']); $this->assertCount(2, $exports); $this->assertContains($match1, $exports); $this->assertContains($match2, $exports); }