Switch to FtpExport entities

This commit is contained in:
Romain Neutron
2013-08-29 18:47:26 +02:00
parent 17a4f1970a
commit 9804e3b4c3
12 changed files with 373 additions and 350 deletions

View File

@@ -18,7 +18,7 @@ namespace Alchemy\Phrasea\Core;
*/ */
class Version class Version
{ {
protected static $number = '3.9.0.a5'; protected static $number = '3.9.0.a6';
protected static $name = 'Diplodocus'; protected static $name = 'Diplodocus';
public static function getNumber() public static function getNumber()

View File

@@ -50,7 +50,7 @@ class FtpExport
private $addr; private $addr;
/** /**
* @ORM\Column(type="boolean") * @ORM\Column(type="boolean", name="use_ssl")
*/ */
private $ssl = false; private $ssl = false;
@@ -145,6 +145,7 @@ class FtpExport
* Set crash * Set crash
* *
* @param integer $crash * @param integer $crash
*
* @return FtpExport * @return FtpExport
*/ */
public function setCrash($crash) public function setCrash($crash)
@@ -180,6 +181,7 @@ class FtpExport
* Set nbretry * Set nbretry
* *
* @param integer $nbretry * @param integer $nbretry
*
* @return FtpExport * @return FtpExport
*/ */
public function setNbretry($nbretry) public function setNbretry($nbretry)
@@ -203,6 +205,7 @@ class FtpExport
* Set mail * Set mail
* *
* @param string $mail * @param string $mail
*
* @return FtpExport * @return FtpExport
*/ */
public function setMail($mail) public function setMail($mail)
@@ -226,6 +229,7 @@ class FtpExport
* Set addr * Set addr
* *
* @param string $addr * @param string $addr
*
* @return FtpExport * @return FtpExport
*/ */
public function setAddr($addr) public function setAddr($addr)
@@ -249,11 +253,12 @@ class FtpExport
* Set ssl * Set ssl
* *
* @param boolean $ssl * @param boolean $ssl
*
* @return FtpExport * @return FtpExport
*/ */
public function setSsl($ssl) public function setSsl($ssl)
{ {
$this->ssl = $ssl; $this->ssl = (Boolean) $ssl;
return $this; return $this;
} }
@@ -263,7 +268,7 @@ class FtpExport
* *
* @return boolean * @return boolean
*/ */
public function getSsl() public function isSsl()
{ {
return $this->ssl; return $this->ssl;
} }
@@ -272,6 +277,7 @@ class FtpExport
* Set login * Set login
* *
* @param string $login * @param string $login
*
* @return FtpExport * @return FtpExport
*/ */
public function setLogin($login) public function setLogin($login)
@@ -295,6 +301,7 @@ class FtpExport
* Set pwd * Set pwd
* *
* @param string $pwd * @param string $pwd
*
* @return FtpExport * @return FtpExport
*/ */
public function setPwd($pwd) public function setPwd($pwd)
@@ -318,11 +325,12 @@ class FtpExport
* Set passif * Set passif
* *
* @param boolean $passif * @param boolean $passif
*
* @return FtpExport * @return FtpExport
*/ */
public function setPassif($passif) public function setPassif($passif)
{ {
$this->passif = $passif; $this->passif = (Boolean) $passif;
return $this; return $this;
} }
@@ -332,7 +340,7 @@ class FtpExport
* *
* @return boolean * @return boolean
*/ */
public function getPassif() public function isPassif()
{ {
return $this->passif; return $this->passif;
} }
@@ -341,6 +349,7 @@ class FtpExport
* Set destfolder * Set destfolder
* *
* @param string $destfolder * @param string $destfolder
*
* @return FtpExport * @return FtpExport
*/ */
public function setDestfolder($destfolder) public function setDestfolder($destfolder)
@@ -364,6 +373,7 @@ class FtpExport
* Set sendermail * Set sendermail
* *
* @param string $sendermail * @param string $sendermail
*
* @return FtpExport * @return FtpExport
*/ */
public function setSendermail($sendermail) public function setSendermail($sendermail)
@@ -387,6 +397,7 @@ class FtpExport
* Set textMailSender * Set textMailSender
* *
* @param string $textMailSender * @param string $textMailSender
*
* @return FtpExport * @return FtpExport
*/ */
public function setTextMailSender($textMailSender) public function setTextMailSender($textMailSender)
@@ -410,6 +421,7 @@ class FtpExport
* Set textMailReceiver * Set textMailReceiver
* *
* @param string $textMailReceiver * @param string $textMailReceiver
*
* @return FtpExport * @return FtpExport
*/ */
public function setTextMailReceiver($textMailReceiver) public function setTextMailReceiver($textMailReceiver)
@@ -433,6 +445,7 @@ class FtpExport
* Set usrId * Set usrId
* *
* @param integer $usrId * @param integer $usrId
*
* @return FtpExport * @return FtpExport
*/ */
public function setUsrId($usrId) public function setUsrId($usrId)
@@ -466,6 +479,7 @@ class FtpExport
* Set user * Set user
* *
* @param \User_Adapter $user * @param \User_Adapter $user
*
* @return FtpExport * @return FtpExport
*/ */
public function setUser(\User_Adapter $user) public function setUser(\User_Adapter $user)
@@ -479,6 +493,7 @@ class FtpExport
* Set foldertocreate * Set foldertocreate
* *
* @param string $foldertocreate * @param string $foldertocreate
*
* @return FtpExport * @return FtpExport
*/ */
public function setFoldertocreate($foldertocreate) public function setFoldertocreate($foldertocreate)
@@ -502,11 +517,12 @@ class FtpExport
* Set logfile * Set logfile
* *
* @param boolean $logfile * @param boolean $logfile
*
* @return FtpExport * @return FtpExport
*/ */
public function setLogfile($logfile) public function setLogfile($logfile)
{ {
$this->logfile = $logfile; $this->logfile = (Boolean) $logfile;
return $this; return $this;
} }
@@ -516,7 +532,7 @@ class FtpExport
* *
* @return boolean * @return boolean
*/ */
public function getLogfile() public function isLogfile()
{ {
return $this->logfile; return $this->logfile;
} }
@@ -525,9 +541,10 @@ class FtpExport
* Set created * Set created
* *
* @param \DateTime $created * @param \DateTime $created
*
* @return FtpExport * @return FtpExport
*/ */
public function setCreated($created) public function setCreated(\DateTime $created)
{ {
$this->created = $created; $this->created = $created;
@@ -548,9 +565,10 @@ class FtpExport
* Set updated * Set updated
* *
* @param \DateTime $updated * @param \DateTime $updated
*
* @return FtpExport * @return FtpExport
*/ */
public function setUpdated($updated) public function setUpdated(\DateTime $updated)
{ {
$this->updated = $updated; $this->updated = $updated;
@@ -570,10 +588,11 @@ class FtpExport
/** /**
* Add elements * Add elements
* *
* @param \Entities\FtpExportElement $elements * @param FtpExportElement $elements
*
* @return FtpExport * @return FtpExport
*/ */
public function addElement(\Entities\FtpExportElement $elements) public function addElement(FtpExportElement $elements)
{ {
$this->elements[] = $elements; $this->elements[] = $elements;
@@ -583,17 +602,21 @@ class FtpExport
/** /**
* Remove elements * Remove elements
* *
* @param \Entities\FtpExportElement $elements * @param FtpExportElement $elements
*
* @return FtpExport
*/ */
public function removeElement(\Entities\FtpExportElement $elements) public function removeElement(FtpExportElement $elements)
{ {
$this->elements->removeElement($elements); $this->elements->removeElement($elements);
return $this;
} }
/** /**
* Get elements * Get elements
* *
* @return \Doctrine\Common\Collections\Collection * @return FtpExportElement[]
*/ */
public function getElements() public function getElements()
{ {

View File

@@ -109,6 +109,7 @@ class FtpExportElement
* Set recordId * Set recordId
* *
* @param integer $recordId * @param integer $recordId
*
* @return FtpExportElement * @return FtpExportElement
*/ */
public function setRecordId($recordId) public function setRecordId($recordId)
@@ -132,6 +133,7 @@ class FtpExportElement
* Set baseId * Set baseId
* *
* @param integer $baseId * @param integer $baseId
*
* @return FtpExportElement * @return FtpExportElement
*/ */
public function setBaseId($baseId) public function setBaseId($baseId)
@@ -155,6 +157,7 @@ class FtpExportElement
* Set subdef * Set subdef
* *
* @param string $subdef * @param string $subdef
*
* @return FtpExportElement * @return FtpExportElement
*/ */
public function setSubdef($subdef) public function setSubdef($subdef)
@@ -178,6 +181,7 @@ class FtpExportElement
* Set filename * Set filename
* *
* @param string $filename * @param string $filename
*
* @return FtpExportElement * @return FtpExportElement
*/ */
public function setFilename($filename) public function setFilename($filename)
@@ -201,6 +205,7 @@ class FtpExportElement
* Set folder * Set folder
* *
* @param string $folder * @param string $folder
*
* @return FtpExportElement * @return FtpExportElement
*/ */
public function setFolder($folder) public function setFolder($folder)
@@ -224,11 +229,12 @@ class FtpExportElement
* Set error * Set error
* *
* @param boolean $error * @param boolean $error
*
* @return FtpExportElement * @return FtpExportElement
*/ */
public function setError($error) public function setError($error)
{ {
$this->error = $error; $this->error = (Boolean) $error;
return $this; return $this;
} }
@@ -247,11 +253,12 @@ class FtpExportElement
* Set done * Set done
* *
* @param boolean $done * @param boolean $done
*
* @return FtpExportElement * @return FtpExportElement
*/ */
public function setDone($done) public function setDone($done)
{ {
$this->done = $done; $this->done = (Boolean) $done;
return $this; return $this;
} }
@@ -270,11 +277,12 @@ class FtpExportElement
* Set businessfields * Set businessfields
* *
* @param boolean $businessfields * @param boolean $businessfields
*
* @return FtpExportElement * @return FtpExportElement
*/ */
public function setBusinessfields($businessfields) public function setBusinessfields($businessfields)
{ {
$this->businessfields = $businessfields; $this->businessfields = (Boolean) $businessfields;
return $this; return $this;
} }
@@ -284,7 +292,7 @@ class FtpExportElement
* *
* @return boolean * @return boolean
*/ */
public function getBusinessfields() public function isBusinessfields()
{ {
return $this->businessfields; return $this->businessfields;
} }
@@ -293,9 +301,10 @@ class FtpExportElement
* Set created * Set created
* *
* @param \DateTime $created * @param \DateTime $created
*
* @return FtpExportElement * @return FtpExportElement
*/ */
public function setCreated($created) public function setCreated(\DateTime $created)
{ {
$this->created = $created; $this->created = $created;
@@ -316,9 +325,10 @@ class FtpExportElement
* Set updated * Set updated
* *
* @param \DateTime $updated * @param \DateTime $updated
*
* @return FtpExportElement * @return FtpExportElement
*/ */
public function setUpdated($updated) public function setUpdated(\DateTime $updated)
{ {
$this->updated = $updated; $this->updated = $updated;
@@ -338,10 +348,11 @@ class FtpExportElement
/** /**
* Set export * Set export
* *
* @param \Entities\FtpExport $export * @param FtpExport $export
*
* @return FtpExportElement * @return FtpExportElement
*/ */
public function setExport(\Entities\FtpExport $export = null) public function setExport(FtpExport $export = null)
{ {
$this->export = $export; $this->export = $export;
@@ -351,7 +362,7 @@ class FtpExportElement
/** /**
* Get export * Get export
* *
* @return \Entities\FtpExport * @return FtpExport
*/ */
public function getExport() public function getExport()
{ {

View File

@@ -111,10 +111,10 @@ class FtpExport extends \Entities\FtpExport implements \Doctrine\ORM\Proxy\Proxy
return parent::setSsl($ssl); return parent::setSsl($ssl);
} }
public function getSsl() public function isSsl()
{ {
$this->__load(); $this->__load();
return parent::getSsl(); return parent::isSsl();
} }
public function setLogin($login) public function setLogin($login)
@@ -147,10 +147,10 @@ class FtpExport extends \Entities\FtpExport implements \Doctrine\ORM\Proxy\Proxy
return parent::setPassif($passif); return parent::setPassif($passif);
} }
public function getPassif() public function isPassif()
{ {
$this->__load(); $this->__load();
return parent::getPassif(); return parent::isPassif();
} }
public function setDestfolder($destfolder) public function setDestfolder($destfolder)
@@ -243,10 +243,10 @@ class FtpExport extends \Entities\FtpExport implements \Doctrine\ORM\Proxy\Proxy
return parent::setLogfile($logfile); return parent::setLogfile($logfile);
} }
public function getLogfile() public function isLogfile()
{ {
$this->__load(); $this->__load();
return parent::getLogfile(); return parent::isLogfile();
} }
public function setCreated($created) public function setCreated($created)

View File

@@ -141,10 +141,10 @@ class FtpExportElement extends \Entities\FtpExportElement implements \Doctrine\O
return parent::setBusinessfields($businessfields); return parent::setBusinessfields($businessfields);
} }
public function getBusinessfields() public function isBusinessfields()
{ {
$this->__load(); $this->__load();
return parent::getBusinessfields(); return parent::isBusinessfields();
} }
public function setCreated($created) public function setCreated($created)

View File

@@ -26,10 +26,10 @@ class FtpExportRepository extends EntityRepository
$qb->where($qb->expr()->gte('e.crash', 'e.nbretry')); $qb->where($qb->expr()->gte('e.crash', 'e.nbretry'));
if (null !== $before) { if (null !== $before) {
$qb->where($qb->expr()->lte('e.created', ':created')); $qb->andWhere($qb->expr()->lte('e.created', ':created'));
$qb->setParameter(':created', $before); $qb->setParameter(':created', $before);
} }
return $qb->getQuery()->getResult(); return $qb->getQuery()->getResult();
} }

View File

@@ -759,10 +759,14 @@ class User_Adapter implements User_Interface, cache_cacheableInterface
public function delete() public function delete()
{ {
$repo = $this->app['EM']->getRepository('Entities\UsrAuthProvider'); $repo = $this->app['EM']->getRepository('Entities\UsrAuthProvider');
foreach ($repo->findByUser($this) as $provider) { foreach ($repo->findByUser($this) as $provider) {
$this->app['EM']->remove($provider); $this->app['EM']->remove($provider);
} }
$repo = $this->app['EM']->getRepository('Entities\FtpExport');
foreach ($repo->findByUser($this) as $export) {
$this->app['EM']->remove($export);
}
$this->app['EM']->flush(); $this->app['EM']->flush();
@@ -792,11 +796,6 @@ class User_Adapter implements User_Interface, cache_cacheableInterface
$stmt->execute(array(':usr_id' => $this->get_id())); $stmt->execute(array(':usr_id' => $this->get_id()));
$stmt->closeCursor(); $stmt->closeCursor();
$sql = 'DELETE FROM ftp_export WHERE usr_id = :usr_id';
$stmt = $this->app['phraseanet.appbox']->get_connection()->prepare($sql);
$stmt->execute(array(':usr_id' => $this->get_id()));
$stmt->closeCursor();
$sql = 'DELETE FROM `order` WHERE usr_id = :usr_id'; $sql = 'DELETE FROM `order` WHERE usr_id = :usr_id';
$stmt = $this->app['phraseanet.appbox']->get_connection()->prepare($sql); $stmt = $this->app['phraseanet.appbox']->get_connection()->prepare($sql);
$stmt->execute(array(':usr_id' => $this->get_id())); $stmt->execute(array(':usr_id' => $this->get_id()));

143
lib/classes/patch/3906.php Normal file
View File

@@ -0,0 +1,143 @@
<?php
/*
* This file is part of Phraseanet
*
* (c) 2005-2012 Alchemy
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
use Alchemy\Phrasea\Application;
use Entities\FtpExport;
use Entities\FtpExportElement;
use Gedmo\Timestampable\TimestampableListener;
class patch_3906 implements patchInterface
{
/** @var string */
private $release = '3.9.0.a6';
/** @var array */
private $concern = array(base::APPLICATION_BOX);
/**
* {@inheritdoc}
*/
public function get_release()
{
return $this->release;
}
/**
* {@inheritdoc}
*/
public function require_all_upgrades()
{
return false;
}
/**
* {@inheritdoc}
*/
public function concern()
{
return $this->concern;
}
/**
* {@inheritdoc}
*/
public function apply(base $appbox, Application $app)
{
$conn = $app['phraseanet.appbox']->get_connection();
$em = $app['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) {
try {
$user = \User_Adapter::getInstance($row['usr_id'], $app);
} catch (\Exception $e) {
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(array('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());
}
}

View File

@@ -9,15 +9,11 @@
* file that was distributed with this source code. * file that was distributed with this source code.
*/ */
/** use Entities\FtpExport;
* use Entities\FtpExportElement;
*
* @license http://opensource.org/licenses/gpl-3.0 GPLv3
* @link www.phraseanet.com
*/
class set_exportftp extends set_export class set_exportftp extends set_export
{ {
/** /**
* *
* @param integer $usr_to * @param integer $usr_to
@@ -59,95 +55,44 @@ class set_exportftp extends set_export
. "- repertoire de destination \"" . $destfolder . "\"\n" . "- repertoire de destination \"" . $destfolder . "\"\n"
. "\n"; . "\n";
$fn = "id"; $export = new FtpExport();
$fv = "null"; $export->setNbretry(((int) $retry * 1) > 0 ? (int) $retry : 5)
$fn .= ",crash"; ->setMail($email_dest)
$fv .= ",0"; ->setLogfile($logfile)
$fn .= ",nbretry"; ->setFoldertocreate($makedirectory)
$fv .= ",:nbretry"; ->setUser($this->app['authentication']->getUser())
$fn .= ",mail"; ->setTextMailSender($text_mail_sender)
$fv .= ",:mail"; ->setTextMailReceiver($text_mail_receiver)
$fn .= ",addr"; ->setSendermail($this->app['authentication']->getUser()->get_email())
$fv .= ",:addr"; ->setDestfolder($destfolder)
$fn .= ",login"; ->setPassif($passif == '1')
$fv .= ",:login"; ->setPwd($password)
$fn .= ",`ssl`"; ->setSsl($ssl == '1')
$fv .= ",:ssl"; ->setLogin($login)
$fn .= ",pwd"; ->setAddr($host);
$fv .= ",:pwd";
$fn .= ",passif";
$fv .= ",:passif";
$fn .= ",destfolder";
$fv .= ",:destfolder";
$fn .= ",sendermail";
$fv .= ",:sendermail";
$fn .= ",text_mail_receiver";
$fv .= ",:text_mail_receiver";
$fn .= ",text_mail_sender";
$fv .= ",:text_mail_sender";
$fn .= ",usr_id";
$fv .= ",:usr_id";
$fn .= ",date";
$fv .= ", NOW()";
$fn .= ",foldertocreate";
$fv .= ",:foldertocreate";
$fn .= ",logfile";
$fv .= ",:logfile";
$params = array( $this->app['EM']->persist($export);
':nbretry' => (((int) $retry * 1) > 0 ? (int) $retry : 5)
, ':mail' => $email_dest
, ':addr' => $host
, ':login' => $login
, ':ssl' => ($ssl == '1' ? '1' : '0')
, ':pwd' => $password
, ':passif' => ($passif == "1" ? "1" : "0")
, ':destfolder' => $destfolder
, ':sendermail' => $this->app['authentication']->getUser()->get_email()
, ':text_mail_receiver' => $text_mail_receiver
, ':text_mail_sender' => $text_mail_sender
, ':usr_id' => $this->app['authentication']->getUser()->get_id()
, ':foldertocreate' => $makedirectory
, ':logfile' => ( ! ! $logfile ? '1' : '0')
);
$sql = "INSERT INTO ftp_export ($fn) VALUES ($fv)";
$stmt = $conn->prepare($sql);
$stmt->execute($params);
$stmt->closeCursor();
$ftp_export_id = $conn->lastInsertId();
$sql = 'INSERT INTO ftp_export_elements
(id, ftp_export_id, base_id, record_id, subdef, filename, folder, businessfields)
VALUES
(null, :ftp_export_id, :base_id, :record_id, :subdef,
:filename, :folder, :businessfields)';
$stmt = $conn->prepare($sql);
foreach ($this->list['files'] as $file) { foreach ($this->list['files'] as $file) {
foreach ($file['subdefs'] as $subdef => $properties) { foreach ($file['subdefs'] as $subdef => $properties) {
$filename = $file['export_name'] $filename = $file['export_name'] . $properties["ajout"] . '.' . $properties['exportExt'];
. $properties["ajout"] . '.'
. $properties['exportExt'];
$bfields = isset($properties['businessfields']) ? $properties['businessfields'] : null; $bfields = isset($properties['businessfields']) ? $properties['businessfields'] : null;
$params = array( $element = new FtpExportElement();
':ftp_export_id' => $ftp_export_id $element->setBaseId($file['base_id'])
, ':base_id' => $file['base_id'] ->setBusinessfields($bfields)
, ':record_id' => $file['record_id'] ->setExport($export)
, ':subdef' => $subdef ->setFilename($filename)
, ':filename' => $filename ->setFolder($properties['folder'])
, ':folder' => $properties['folder'] ->setRecordId($file['record_id'])
, ':businessfields' => $bfields ->setSubdef($subdef);
); $export->addElement($element);
$stmt->execute($params);
$this->app['EM']->persist($element);
} }
} }
$stmt->closeCursor(); $this->app['EM']->flush();
return true; return true;
} }

View File

@@ -12,6 +12,8 @@ use Alchemy\Phrasea\Core\Configuration\Configuration;
use Alchemy\Phrasea\Exception\InvalidArgumentException; use Alchemy\Phrasea\Exception\InvalidArgumentException;
use Alchemy\Phrasea\Notification\Mail\MailSuccessFTPSender; use Alchemy\Phrasea\Notification\Mail\MailSuccessFTPSender;
use Alchemy\Phrasea\Notification\Receiver; use Alchemy\Phrasea\Notification\Receiver;
use Entities\FtpExport;
use Entities\FtpExportElement;
class task_period_ftp extends task_appboxAbstract class task_period_ftp extends task_appboxAbstract
{ {
@@ -258,88 +260,39 @@ class task_period_ftp extends task_appboxAbstract
protected function retrieveContent(appbox $appbox) protected function retrieveContent(appbox $appbox)
{ {
$conn = $appbox->get_connection(); foreach ($this->dependencyContainer['EM']
->getRepository('Entities\FtpExport')
$time2sleep = null; ->findCrashedExports(new \DateTime('-1 month')) as $export) {
$ftp_exports = array(); $this->dependencyContainer['EM']->remove($export);
$period = $this->period;
$time2sleep = (int) ($period);
$sql = "SELECT id FROM ftp_export WHERE crash>=nbretry
AND date < :date";
$params = array(':date' => $this->dependencyContainer['date-formatter']->format_mysql(new DateTime('-30 days')));
$stmt = $conn->prepare($sql);
$stmt->execute($params);
$rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt->closeCursor();
foreach ($rs as $rowtask) {
$sql = "DELETE FROM ftp_export WHERE id = :export_id";
$stmt = $conn->prepare($sql);
$stmt->execute(array(':export_id' => $rowtask['id']));
$stmt->closeCursor();
$sql = "DELETE FROM ftp_export_elements WHERE ftp_export_id = :export_id";
$stmt = $conn->prepare($sql);
$stmt->execute(array(':export_id' => $rowtask['id']));
$stmt->closeCursor();
} }
$this->dependencyContainer['EM']->flush();
$sql = "SELECT * FROM ftp_export WHERE crash<nbretry ORDER BY id";
$stmt = $conn->prepare($sql); return $this->dependencyContainer['EM']
$stmt->execute(); ->getRepository('Entities\FtpExport')
$rs = $stmt->fetchAll(PDO::FETCH_ASSOC); ->findDoableExports();
$stmt->closeCursor();
foreach ($rs as $row) {
$ftp_exports[$row["id"]] = array_merge(array('files' => array()), $row);
}
$sql = "SELECT e.* from ftp_export f
INNER JOIN ftp_export_elements e
ON (f.id=e.ftp_export_id AND f.crash<f.nbretry
AND (e.done = 0 or error=1))
ORDER BY f.id";
$stmt = $conn->prepare($sql);
$stmt->execute();
$rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt->closeCursor();
foreach ($rs as $rowtask) {
if (isset($ftp_exports[$rowtask["ftp_export_id"]])) {
$ftp_exports[$rowtask["ftp_export_id"]]["files"][] = $rowtask;
}
}
return $ftp_exports;
} }
protected function processOneContent(appbox $appbox, $ftp_export) protected function processOneContent(appbox $appbox, $export)
{ {
$conn = $appbox->get_connection(); $conn = $appbox->get_connection();
$id = $ftp_export['id']; $id = $export->getId();
$ftp_export[$id]["crash"] = $ftp_export["crash"];
$ftp_export[$id]["nbretry"] = $ftp_export["nbretry"] < 1 ? 3 : (int) $ftp_export["nbretry"];
$state = ""; $state = "";
$ftp_server = $ftp_export["addr"]; $ftp_server = $export->getAddr();
$ftp_user_name = $ftp_export["login"]; $ftp_user_name = $export->getLogin();
$ftp_user_pass = $ftp_export["pwd"]; $ftp_user_pass = $export->getPwd();
$usr_id = (int) $ftp_export["usr_id"]; $usr_id = $export->getUsrId();
$ftpLog = $ftp_user_name . "@" . p4string::addEndSlash($ftp_server) . $ftp_export["destfolder"]; $ftpLog = $ftp_user_name . "@" . p4string::addEndSlash($ftp_server) . $export->getDestfolder();
if ($ftp_export["crash"] == 0) { if ($export->getCrash() == 0) {
$line = sprintf( $line = sprintf(
_('task::ftp:Etat d\'envoi FTP vers le serveur' . _('task::ftp:Etat d\'envoi FTP vers le serveur' .
' "%1$s" avec le compte "%2$s" et pour destination le dossier : "%3$s"') . PHP_EOL ' "%1$s" avec le compte "%2$s" et pour destination le dossier : "%3$s"') . PHP_EOL
, $ftp_server , $ftp_server
, $ftp_user_name , $ftp_user_name
, $ftp_export["destfolder"] , $export->getDestfolder()
); );
$state .= $line; $state .= $line;
$this->logger->addDebug($line); $this->logger->addDebug($line);
@@ -347,18 +300,18 @@ class task_period_ftp extends task_appboxAbstract
$state .= $line = sprintf( $state .= $line = sprintf(
_("task::ftp:TENTATIVE no %s, %s") _("task::ftp:TENTATIVE no %s, %s")
, $ftp_export["crash"] + 1 , $export->getCrash() + 1
, " (" . date('r') . ")" , " (" . date('r') . ")"
) . PHP_EOL; ) . PHP_EOL;
$this->logger->addDebug($line); $this->logger->addDebug($line);
try { try {
$ssl = ($ftp_export['ssl'] == '1'); $ssl = $export->isSsl();
$ftp_client = $this->dependencyContainer['phraseanet.ftp.client']($ftp_server, 21, 300, $ssl, $this->proxy, $this->proxyport); $ftp_client = $this->dependencyContainer['phraseanet.ftp.client']($ftp_server, 21, 300, $ssl, $this->proxy, $this->proxyport);
$ftp_client->login($ftp_user_name, $ftp_user_pass); $ftp_client->login($ftp_user_name, $ftp_user_pass);
if ($ftp_export["passif"] == "1") { if ($export->isPassif()) {
try { try {
$ftp_client->passive(true); $ftp_client->passive(true);
} catch (Exception $e) { } catch (Exception $e) {
@@ -366,26 +319,26 @@ class task_period_ftp extends task_appboxAbstract
} }
} }
if (trim($ftp_export["destfolder"]) != '') { if (trim($export->getDestfolder()) != '') {
try { try {
$ftp_client->chdir($ftp_export["destfolder"]); $ftp_client->chdir($export->getDestFolder());
$ftp_export["destfolder"] = '/' . $ftp_export["destfolder"]; $export->setDestfolder('/' . $export->getDestfolder());
} catch (Exception $e) { } catch (Exception $e) {
$this->logger->addDebug($e->getMessage()); $this->logger->addDebug($e->getMessage());
} }
} else { } else {
$ftp_export["destfolder"] = '/'; $export->setDestfolder('/');
} }
if (trim($ftp_export["foldertocreate"]) != '') { if (trim($export->getFoldertocreate()) != '') {
try { try {
$ftp_client->mkdir($ftp_export["foldertocreate"]); $ftp_client->mkdir($export->getFoldertocreate());
} catch (Exception $e) { } catch (Exception $e) {
$this->logger->addDebug($e->getMessage()); $this->logger->addDebug($e->getMessage());
} }
try { try {
$new_dir = $ftp_client->add_end_slash($ftp_export["destfolder"]) $new_dir = $ftp_client->add_end_slash($export->getDestfolder())
. $ftp_export["foldertocreate"]; . $export->getFoldertocreate();
$ftp_client->chdir($new_dir); $ftp_client->chdir($new_dir);
} catch (Exception $e) { } catch (Exception $e) {
$this->logger->addDebug($e->getMessage()); $this->logger->addDebug($e->getMessage());
@@ -395,38 +348,43 @@ class task_period_ftp extends task_appboxAbstract
$obj = array(); $obj = array();
$basefolder = ''; $basefolder = '';
if (!in_array(trim($ftp_export["destfolder"]), array('.', './', ''))) { if (!in_array(trim($export->getDestfolder()), array('.', './', ''))) {
$basefolder = p4string::addEndSlash($ftp_export["destfolder"]); $basefolder = p4string::addEndSlash($export->getDestfolder());
} }
$basefolder .= $ftp_export["foldertocreate"]; $basefolder .= $export->getFoldertocreate();
if (in_array(trim($basefolder), array('.', './', ''))) { if (in_array(trim($basefolder), array('.', './', ''))) {
$basefolder = '/'; $basefolder = '/';
} }
foreach ($ftp_export['files'] as $fileid => $file) { foreach ($export->getElements() as $exportElement) {
$base_id = $file["base_id"]; if ($exportElement->isDone()) {
$record_id = $file["record_id"]; continue;
$subdef = $file['subdef']; }
$base_id = $exportElement->getBaseId();
$record_id = $exportElement->getRecordId();
$subdef = $exportElement->getSubdef();
$localfile = null;
try { try {
$sbas_id = phrasea::sbasFromBas($this->dependencyContainer, $base_id); $sbas_id = phrasea::sbasFromBas($this->dependencyContainer, $base_id);
$record = new record_adapter($this->dependencyContainer, $sbas_id, $record_id); $record = new record_adapter($this->dependencyContainer, $sbas_id, $record_id);
$sdcaption = $record->get_caption()->serialize(caption_record::SERIALIZE_XML, $ftp_export["businessfields"]); $sdcaption = $record->get_caption()->serialize(caption_record::SERIALIZE_XML, $exportElement->isBusinessfields());
$remotefile = $file["filename"]; $remotefile = $exportElement->getFilename();
if ($subdef == 'caption') { if ($subdef == 'caption') {
$desc = $record->get_caption()->serialize(\caption_record::SERIALIZE_XML, $ftp_export["businessfields"]); $desc = $record->get_caption()->serialize(\caption_record::SERIALIZE_XML, $exportElement->isBusinessfields());
$localfile = $this->dependencyContainer['root.path'] . '/tmp/' . md5($desc . time() . mt_rand()); $localfile = $this->dependencyContainer['root.path'] . '/tmp/' . md5($desc . time() . mt_rand());
if (file_put_contents($localfile, $desc) === false) { if (file_put_contents($localfile, $desc) === false) {
throw new Exception('Impossible de creer un fichier temporaire'); throw new Exception('Impossible de creer un fichier temporaire');
} }
} elseif ($subdef == 'caption-yaml') { } elseif ($subdef == 'caption-yaml') {
$desc = $record->get_caption()->serialize(\caption_record::SERIALIZE_YAML, $ftp_export["businessfields"]); $desc = $record->get_caption()->serialize(\caption_record::SERIALIZE_YAML, $exportElement->isBusinessfields());
$localfile = $this->dependencyContainer['root.path'] . '/tmp/' . md5($desc . time() . mt_rand()); $localfile = $this->dependencyContainer['root.path'] . '/tmp/' . md5($desc . time() . mt_rand());
if (file_put_contents($localfile, $desc) === false) { if (file_put_contents($localfile, $desc) === false) {
@@ -445,7 +403,7 @@ class task_period_ftp extends task_appboxAbstract
} }
} }
$current_folder = p4string::delEndSlash(str_replace('//', '/', $basefolder . $file['folder'])); $current_folder = p4string::delEndSlash(str_replace('//', '/', $basefolder . $exportElement->getFolder()));
if ($ftp_client->pwd() != $current_folder) { if ($ftp_client->pwd() != $current_folder) {
try { try {
@@ -466,11 +424,11 @@ class task_period_ftp extends task_appboxAbstract
unlink($localfile); unlink($localfile);
} }
$sql = "UPDATE ftp_export_elements" $exportElement
. " SET done='1', error='0' WHERE id = :file_id"; ->setDone(true)
$stmt = $conn->prepare($sql); ->setError(false);
$stmt->execute(array(':file_id' => $file['id'])); $this->dependencyContainer['EM']->persist($exportElement);
$stmt->closeCursor(); $this->dependencyContainer['EM']->flush();
$this->logexport($record, $obj, $ftpLog); $this->logexport($record, $obj, $ftpLog);
} catch (Exception $e) { } catch (Exception $e) {
$state .= $line = sprintf(_('task::ftp:File "%1$s" (record %2$s) de la base "%3$s"' . $state .= $line = sprintf(_('task::ftp:File "%1$s" (record %2$s) de la base "%3$s"' .
@@ -480,39 +438,28 @@ class task_period_ftp extends task_appboxAbstract
$this->logger->addDebug($line); $this->logger->addDebug($line);
$done = $file['error']; // One failure max
$exportElement
$sql = "UPDATE ftp_export_elements" ->setDone($exportElement->isError())
. " SET done = :done, error='1' WHERE id = :file_id"; ->setError(true);
$stmt = $conn->prepare($sql); $this->dependencyContainer['EM']->persist($exportElement);
$stmt->execute(array(':done' => $done, ':file_id' => $file['id'])); $this->dependencyContainer['EM']->flush();
$stmt->closeCursor();
} }
} }
if ($ftp_export['logfile']) { if ($export->isLogfile()) {
$this->logger->addDebug("logfile "); $this->logger->addDebug("logfile ");
$date = new DateTime(); $date = new DateTime();
$remote_file = $date->format('U');
$sql = 'SELECT filename, folder'
. ' FROM ftp_export_elements'
. ' WHERE ftp_export_id = :ftp_export_id'
. ' AND error = "0" AND done="1"';
$stmt = $conn->prepare($sql);
$stmt->execute(array(':ftp_export_id' => $id));
$rs = $stmt->fetchAll(\PDO::FETCH_ASSOC);
$stmt->closeCursor();
$buffer = '#transfert finished ' . $date->format(DATE_ATOM) . "\n\n"; $buffer = '#transfert finished ' . $date->format(DATE_ATOM) . "\n\n";
foreach ($rs as $row) { foreach ($export->getElements() as $exportElement) {
$filename = $row['filename']; if (!$exportElement->isDone() || $exportElement->isError()) {
$folder = $row['folder']; continue;
}
$root = $ftp_export['foldertocreate']; $filename = $exportElement->getFilename();
$folder = $exportElement->getFilename();
$root = $export->getFoldertocreate();
$buffer .= $root . '/' . $folder . $filename . "\n"; $buffer .= $root . '/' . $folder . $filename . "\n";
} }
@@ -522,11 +469,8 @@ class task_period_ftp extends task_appboxAbstract
file_put_contents($tmpfile, $buffer); file_put_contents($tmpfile, $buffer);
$remotefile = $date->format('U') . '-transfert.log'; $remotefile = $date->format('U') . '-transfert.log';
$ftp_client->chdir($export->getDestFolder());
$ftp_client->chdir($ftp_export["destfolder"]);
$ftp_client->put($remotefile, $tmpfile); $ftp_client->put($remotefile, $tmpfile);
unlink($tmpfile); unlink($tmpfile);
} }
@@ -537,15 +481,14 @@ class task_period_ftp extends task_appboxAbstract
$this->logger->addDebug($line); $this->logger->addDebug($line);
$sql = "UPDATE ftp_export SET crash=crash+1,date=now()" $export->incrementCrash();
. " WHERE id = :export_id"; $this->dependencyContainer['EM']->persist($export);
$stmt = $conn->prepare($sql); $this->dependencyContainer['EM']->flush();
$stmt->execute(array(':export_id' => $ftp_export['id']));
$stmt->closeCursor();
unset($ftp_client); unset($ftp_client);
} }
$this->finalize($appbox, $id);
$this->finalize($appbox, $export);
} }
protected function postProcessOneContent(appbox $appbox, $row) protected function postProcessOneContent(appbox $appbox, $row)
@@ -553,112 +496,78 @@ class task_period_ftp extends task_appboxAbstract
return $this; return $this;
} }
public function finalize(appbox $appbox, $id) public function finalize(appbox $appbox, FtpExport $export)
{ {
$conn = $appbox->get_connection(); $conn = $appbox->get_connection();
$sql = 'SELECT crash, nbretry FROM ftp_export WHERE id = :export_id'; if ($export->getCrash() >= $export->getNbretry()) {
$this->send_mails($appbox, $export);
$stmt = $conn->prepare($sql);
$stmt->execute(array(':export_id' => $id));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt->closeCursor();
if ($row && $row['crash'] >= $row['nbretry']) {
$this->send_mails($appbox, $id);
return $this; return $this;
} }
$total = count($export->getElements());
$done = count($export->getElements()->filter(function (FtpExportElement $element) {
return $element->isDone();
}));
$error = count($export->getElements()->filter(function (FtpExportElement $element) {
return $element->isError();
}));
$sql = 'SELECT count(id) as total, sum(error) as errors, sum(done) as done' if ($done === $total) {
. ' FROM ftp_export_elements WHERE ftp_export_id = :export_id'; $this->send_mails($appbox, $export);
$stmt = $conn->prepare($sql);
$stmt->execute(array(':export_id' => $id));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt->closeCursor();
if ($row && $row['done'] == (int) $row['total']) { if ((int) $error === 0) {
$this->send_mails($appbox, $id); $this->dependencyContainer['EM']->remove($export);
$this->dependencyContainer['EM']->flush();
if ((int) $row['errors'] === 0) {
$sql = 'DELETE FROM ftp_export WHERE id = :export_id';
$stmt = $conn->prepare($sql);
$stmt->execute(array(':export_id' => $id));
$stmt->closeCursor();
$sql = 'DELETE FROM ftp_export_elements WHERE ftp_export_id = :export_id';
$stmt = $conn->prepare($sql);
$stmt->execute(array(':export_id' => $id));
$stmt->closeCursor();
} else { } else {
$sql = 'UPDATE ftp_export SET crash = nbretry'; $export->setCrash($export->getNbretry());
$stmt = $conn->prepare($sql); foreach ($export->getElements() as $element) {
$stmt->execute(); if (!$element->isError()) {
$stmt->closeCursor(); $this->dependencyContainer['EM']->remove($export);
$sql = 'DELETE FROM ftp_export_elements WHERE ftp_export_id = :export_id AND error="0"'; }
$stmt = $conn->prepare($sql); }
$stmt->execute(array(':export_id' => $id)); $this->dependencyContainer['EM']->flush();
$stmt->closeCursor();
} }
return $this; return $this;
} }
} }
public function send_mails(appbox $appbox, $id) public function send_mails(appbox $appbox, FtpExport $export)
{ {
$conn = $appbox->get_connection();
$sql = 'SELECT filename, base_id, record_id, subdef, error, done'
. ' FROM ftp_export_elements WHERE ftp_export_id = :export_id';
$transferts = array(); $transferts = array();
$transfert_status = _('task::ftp:Tous les documents ont ete transferes avec succes'); $transfert_status = _('task::ftp:Tous les documents ont ete transferes avec succes');
$stmt = $conn->prepare($sql); foreach ($export->getElements() as $element) {
$stmt->execute(array(':export_id' => $id)); if (!$element->isError() && $element->isDone()) {
$rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt->closeCursor();
foreach ($rs as $row) {
if ($row['error'] == '0' && $row['done'] == '1') {
$transferts[] = $transferts[] =
'<li>' . sprintf(_('task::ftp:Record %1$s - %2$s de la base (%3$s - %4$s) - %5$s') '<li>' . sprintf(_('task::ftp:Record %1$s - %2$s de la base (%3$s - %4$s) - %5$s')
, $row["record_id"], $row["filename"] , $element->getRecordId(), $element->getFilename()
, phrasea::sbas_labels(phrasea::sbasFromBas($this->dependencyContainer, $row["base_id"]), $this->dependencyContainer) , phrasea::sbas_labels(phrasea::sbasFromBas($this->dependencyContainer, $element->getBaseId()), $this->dependencyContainer)
, phrasea::bas_labels($row['base_id'], $this->dependencyContainer), $row['subdef']) . ' : ' . _('Transfert OK') . '</li>'; , phrasea::bas_labels($element->getBaseId(), $this->dependencyContainer), $element->getSubdef()) . ' : ' . _('Transfert OK') . '</li>';
} else { } else {
$transferts[] = $transferts[] =
'<li>' . sprintf(_('task::ftp:Record %1$s - %2$s de la base (%3$s - %4$s) - %5$s') '<li>' . sprintf(_('task::ftp:Record %1$s - %2$s de la base (%3$s - %4$s) - %5$s')
, $row["record_id"], $row["filename"] , $element->getRecordId(), $element->getFilename()
, phrasea::sbas_labels(phrasea::sbasFromBas($this->dependencyContainer, $row["base_id"]), $this->dependencyContainer), phrasea::bas_labels($row['base_id'], $this->dependencyContainer) , phrasea::sbas_labels(phrasea::sbasFromBas($this->dependencyContainer, $element->getBaseId()), $this->dependencyContainer), phrasea::bas_labels($element->getBaseId(), $this->dependencyContainer)
, $row['subdef']) . ' : ' . _('Transfert Annule') . '</li>'; , $element->getSubdef()) . ' : ' . _('Transfert Annule') . '</li>';
$transfert_status = _('task::ftp:Certains documents n\'ont pas pu etre tranferes'); $transfert_status = _('task::ftp:Certains documents n\'ont pas pu etre tranferes');
} }
} }
$sql = 'SELECT addr, crash, nbretry, sendermail, mail, text_mail_sender, text_mail_receiver' if ($export->getCrash() >= $export->getNbretry()) {
. ' FROM ftp_export WHERE id = :export_id'; $connection_status = _('Des difficultes ont ete rencontres a la connection au serveur distant');
} else {
$stmt = $conn->prepare($sql); $connection_status = _('La connection vers le serveur distant est OK');
$stmt->execute(array(':export_id' => $id));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt->closeCursor();
if ($row) {
if ($row['crash'] >= $row['nbretry']) {
$connection_status = _('Des difficultes ont ete rencontres a la connection au serveur distant');
} else {
$connection_status = _('La connection vers le serveur distant est OK');
}
$text_mail_sender = $row['text_mail_sender'];
$text_mail_receiver = $row['text_mail_receiver'];
$mail = $row['mail'];
$sendermail = $row['sendermail'];
$ftp_server = $row['addr'];
} }
$text_mail_sender = $export->getTextMailSender();
$text_mail_receiver = $export->getTextMailReceiver();
$mail = $export->getMail();
$sendermail = $export->getSendermail();
$ftp_server = $export->getAddr();
$message = "\n\n----------------------------------------\n\n"; $message = "\n\n----------------------------------------\n\n";
$message = $connection_status . "\n"; $message = $connection_status . "\n";
$message .= $transfert_status . "\n"; $message .= $transfert_status . "\n";
@@ -669,11 +578,10 @@ class task_period_ftp extends task_appboxAbstract
$sender_message = $text_mail_sender . $message; $sender_message = $text_mail_sender . $message;
$receiver_message = $text_mail_receiver . $message; $receiver_message = $text_mail_receiver . $message;
$receiver = null;
try { try {
$receiver = new Receiver(null, $sendermail); $receiver = new Receiver(null, $sendermail);
} catch (InvalidArgumentException $e) { } catch (InvalidArgumentException $e) {
$receiver = null;
} }
if ($receiver) { if ($receiver) {
@@ -682,24 +590,20 @@ class task_period_ftp extends task_appboxAbstract
$this->dependencyContainer['notification.deliverer']->deliver($mail); $this->dependencyContainer['notification.deliverer']->deliver($mail);
} }
$receiver = null;
try { try {
$receiver = new Receiver(null, $mail); $receiver = new Receiver(null, $mail);
} catch (InvalidArgumentException $e) { $mail = MailSuccessFTPSender::create($this->dependencyContainer, $receiver, null, $receiver_message);
}
if ($receiver) {
$mail = MailSuccessFTP::create($this->dependencyContainer, $receiver, null, $receiver_message);
$mail->setServer($ftp_server); $mail->setServer($ftp_server);
$this->dependencyContainer['notification.deliverer']->deliver($mail); $this->dependencyContainer['notification.deliverer']->deliver($mail);
} catch (\Exception $e) {
$this->log('Unable to deliver success message');
} }
} }
public function logexport(record_adapter $record, $obj, $ftpLog) public function logexport(record_adapter $record, $obj, $ftpLog)
{ {
foreach ($obj as $oneObj) { foreach ($obj as $oneObj) {
$this->app['phraseanet.logger']($record->get_databox()) $this->dependencyContainer['phraseanet.logger']($record->get_databox())
->log($record, Session_Logger::EVENT_EXPORTFTP, $ftpLog, ''); ->log($record, Session_Logger::EVENT_EXPORTFTP, $ftpLog, '');
} }

View File

@@ -86,14 +86,16 @@ class FtpExportRepositoryTest extends \PhraseanetPHPUnitAbstract
->setAddr('Good 2') ->setAddr('Good 2')
->setUser(self::$DI['user']) ->setUser(self::$DI['user'])
->setCrash(2) ->setCrash(2)
->setNbretry(3); ->setNbretry(3)
->setCreated(new \DateTime('-9 days'));
$good3 = new FtpExport(); $good3 = new FtpExport();
$good3 $good3
->setAddr('Good 3') ->setAddr('Good 3')
->setUser(self::$DI['user']) ->setUser(self::$DI['user'])
->setCrash(12) ->setCrash(12)
->setNbretry(23); ->setNbretry(23)
->setCreated(new \DateTime('-6 days'));
self::$DI['app']['EM']->persist($failure1); self::$DI['app']['EM']->persist($failure1);
self::$DI['app']['EM']->persist($failure2); self::$DI['app']['EM']->persist($failure2);
@@ -181,10 +183,6 @@ class FtpExportRepositoryTest extends \PhraseanetPHPUnitAbstract
self::$DI['app']['EM']->persist($notDoable2); self::$DI['app']['EM']->persist($notDoable2);
self::$DI['app']['EM']->persist($doable1); self::$DI['app']['EM']->persist($doable1);
self::$DI['app']['EM']->persist($doable2); self::$DI['app']['EM']->persist($doable2);
self::$DI['app']['EM']->persist($elem1);
self::$DI['app']['EM']->persist($elem2);
self::$DI['app']['EM']->persist($elem3);
self::$DI['app']['EM']->persist($elem4);
self::$DI['app']['EM']->flush(); self::$DI['app']['EM']->flush();

Binary file not shown.