Пример #1
0
 /**
  *
  * @param integer $usr_to
  * @param String  $host
  * @param String  $login
  * @param String  $password
  * @param integer $ssl
  * @param integer $retry
  * @param integer $passif
  * @param String  $destfolder
  * @param String  $makedirectory
  * @param String  $logfile
  *
  * @return boolean
  */
 public function export_ftp($usr_to, $host, $login, $password, $ssl, $retry, $passif, $destfolder, $makedirectory, $logfile)
 {
     $email_dest = '';
     if ($usr_to) {
         $user_t = $this->app['repo.users']->find($usr_to);
         $email_dest = $user_t->getEmail();
     }
     $text_mail_receiver = "Bonjour,\n" . "L'utilisateur " . $this->app['authentication']->getUser()->getDisplayName() . " (login : "******") " . "a fait un transfert FTP sur le serveur ayant comme adresse \"" . $host . "\" avec le login \"" . $login . "\"  " . "et pour repertoire de destination \"" . $destfolder . "\"\n";
     $text_mail_sender = "Bonjour,\n" . "Vous avez fait un export FTP  avec les caracteristiques " . "de connexion suivantes\n" . "- adresse du serveur : \"" . $host . "\"\n" . "- login utilisé \"" . $login . "\"\n" . "- repertoire de destination \"" . $destfolder . "\"\n" . "\n";
     $export = new FtpExport();
     $export->setNbretry((int) $retry * 1 > 0 ? (int) $retry : 5)->setMail($email_dest)->setLogfile($logfile)->setFoldertocreate($makedirectory)->setUser($this->app['authentication']->getUser())->setTextMailSender($text_mail_sender)->setTextMailReceiver($text_mail_receiver)->setSendermail($this->app['authentication']->getUser()->getEmail())->setDestfolder($destfolder)->setPassif($passif == '1')->setPwd($password)->setSsl($ssl == '1')->setLogin($login)->setAddr($host);
     $this->app['EM']->persist($export);
     foreach ($this->list['files'] as $file) {
         foreach ($file['subdefs'] as $subdef => $properties) {
             $filename = $file['export_name'] . $properties["ajout"] . '.' . $properties['exportExt'];
             $bfields = isset($properties['businessfields']) ? $properties['businessfields'] : null;
             $element = new FtpExportElement();
             $element->setBaseId($file['base_id'])->setBusinessfields($bfields)->setExport($export)->setFilename($filename)->setFolder($properties['folder'])->setRecordId($file['record_id'])->setSubdef($subdef);
             $export->addElement($element);
             $this->app['EM']->persist($element);
         }
     }
     $this->app['EM']->flush();
     return true;
 }
 public function testFindDoableExports()
 {
     $notDoable1 = new FtpExport();
     $notDoable1->setAddr('Not Doable 1')->setUser(self::$DI['user']);
     $elem1 = new FtpExportElement();
     $elem1->setSubdef('subdef')->setFilename('name')->setBaseId(self::$DI['record_1']->get_base_id())->setRecordId(self::$DI['record_1']->get_record_id())->setDone(true);
     $elem1->setExport($notDoable1);
     $notDoable1->addElement($elem1);
     $notDoable2 = new FtpExport();
     $notDoable2->setAddr('Not Doable 2')->setUser(self::$DI['user']);
     $doable1 = new FtpExport();
     $doable1->setAddr('Doable 1')->setUser(self::$DI['user']);
     $elem2 = new FtpExportElement();
     $elem2->setSubdef('subdef')->setFilename('name')->setBaseId(self::$DI['record_1']->get_base_id())->setRecordId(self::$DI['record_1']->get_record_id())->setDone(true);
     $elem2->setExport($doable1);
     $doable1->addElement($elem2);
     $elem3 = new FtpExportElement();
     $elem3->setSubdef('subdef')->setFilename('name')->setBaseId(self::$DI['record_2']->get_base_id())->setRecordId(self::$DI['record_2']->get_record_id())->setDone(false);
     $elem3->setExport($doable1);
     $doable1->addElement($elem3);
     $doable2 = new FtpExport();
     $doable2->setAddr('Doable 2')->setUser(self::$DI['user']);
     $elem4 = new FtpExportElement();
     $elem4->setSubdef('subdef')->setFilename('name')->setBaseId(self::$DI['record_1']->get_base_id())->setRecordId(self::$DI['record_1']->get_record_id())->setDone(false);
     $elem4->setExport($doable2);
     $doable2->addElement($elem4);
     self::$DI['app']['orm.em']->persist($notDoable1);
     self::$DI['app']['orm.em']->persist($notDoable2);
     self::$DI['app']['orm.em']->persist($doable1);
     self::$DI['app']['orm.em']->persist($doable2);
     self::$DI['app']['orm.em']->flush();
     $doables = self::$DI['app']['orm.em']->getRepository('Phraseanet:FtpExport')->findDoableExports();
     $this->assertCount(2, $doables);
     $this->assertContains($doable1, $doables);
     $this->assertContains($doable2, $doables);
 }
Пример #3
0
 /**
  * {@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 getExport()
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'getExport', array());
     return parent::getExport();
 }