/**
  * Get Databases control panel
  *
  * @param Request $request
  * @return Response
  */
 public function getDatabases(Request $request)
 {
     $acl = $this->getAclForUser();
     $sbasIds = array_merge(array_keys($acl->get_granted_sbas(['bas_manage'])), array_keys($acl->get_granted_sbas(['bas_modify_struct'])));
     $sbas = [];
     foreach ($sbasIds as $sbasId) {
         $sbas[$sbasId] = ['version' => 'unknown', 'image' => '/assets/common/images/icons/db-remove.png', 'server_info' => '', 'name' => $this->app->trans('Unreachable server')];
         try {
             $databox = $this->findDataboxById($sbasId);
             /** @var \PDO $pdoConnection */
             $pdoConnection = $databox->get_connection()->getWrappedConnection();
             $sbas[$sbasId] = ['version' => $databox->get_version(), 'image' => '/assets/common/images/icons/foldph20close_0.gif', 'server_info' => $pdoConnection->getAttribute(\PDO::ATTR_SERVER_VERSION), 'name' => \phrasea::sbas_labels($sbasId, $this->app)];
         } catch (\Exception $e) {
         }
     }
     switch ($errorMsg = $request->query->get('error')) {
         case 'scheduler-started':
             $errorMsg = $this->app->trans('Veuillez arreter le planificateur avant la mise a jour');
             break;
         case 'already-started':
             $errorMsg = $this->app->trans('The upgrade is already started');
             break;
         case 'unknow':
             $errorMsg = $this->app->trans('An error occured');
             break;
         case 'bad-email':
             $errorMsg = $this->app->trans('Please fix the database before starting');
             break;
         case 'special-chars':
             $errorMsg = $this->app->trans('Database name can not contains special characters');
             break;
         case 'base-failed':
             $errorMsg = $this->app->trans('Base could not be created');
             break;
         case 'database-failed':
             $errorMsg = $this->app->trans('Database does not exists or can not be accessed');
             break;
         case 'no-empty':
             $errorMsg = $this->app->trans('Database can not be empty');
             break;
         case 'mount-failed':
             $errorMsg = $this->app->trans('Database could not be mounted');
             break;
         case 'innodb-support':
             $errorMsg = $this->app->trans('Database server does not support InnoDB storage engine');
             break;
     }
     return $this->render('admin/databases.html.twig', ['files' => new \DirectoryIterator($this->app['root.path'] . '/lib/conf.d/data_templates'), 'sbas' => $sbas, 'error_msg' => $errorMsg, 'advices' => $request->query->get('advices', []), 'reloadTree' => (bool) $request->query->get('reload-tree')]);
 }
 /**
  * Get Databases control panel
  *
  * @param           $app     Application $app
  * @param           $request Request $request
  * @return Response
  */
 public function getDatabases(Application $app, Request $request)
 {
     $sbasIds = array_merge(array_keys($app['acl']->get($app['authentication']->getUser())->get_granted_sbas(['bas_manage'])), array_keys($app['acl']->get($app['authentication']->getUser())->get_granted_sbas(['bas_modify_struct'])));
     $sbas = [];
     foreach ($sbasIds as $sbasId) {
         $sbas[$sbasId] = ['version' => 'unknown', 'image' => '/skins/icons/db-remove.png', 'server_info' => '', 'name' => $app->trans('Unreachable server')];
         try {
             $databox = $app['phraseanet.appbox']->get_databox($sbasId);
             $sbas[$sbasId] = ['version' => $databox->get_version(), 'image' => '/skins/icons/foldph20close_0.gif', 'server_info' => $databox->get_connection()->getWrappedConnection()->getAttribute(\PDO::ATTR_SERVER_VERSION), 'name' => \phrasea::sbas_labels($sbasId, $app)];
         } catch (\Exception $e) {
         }
     }
     switch ($errorMsg = $request->query->get('error')) {
         case 'scheduler-started':
             $errorMsg = $app->trans('Veuillez arreter le planificateur avant la mise a jour');
             break;
         case 'already-started':
             $errorMsg = $app->trans('The upgrade is already started');
             break;
         case 'unknow':
             $errorMsg = $app->trans('An error occured');
             break;
         case 'bad-email':
             $errorMsg = $app->trans('Please fix the database before starting');
             break;
         case 'special-chars':
             $errorMsg = $app->trans('Database name can not contains special characters');
             break;
         case 'base-failed':
             $errorMsg = $app->trans('Base could not be created');
             break;
         case 'database-failed':
             $errorMsg = $app->trans('Database does not exists or can not be accessed');
             break;
         case 'no-empty':
             $errorMsg = $app->trans('Database can not be empty');
             break;
         case 'mount-failed':
             $errorMsg = $app->trans('Database could not be mounted');
             break;
     }
     $upgrader = new \Setup_Upgrade($app);
     return $app['twig']->render('admin/databases.html.twig', ['files' => new \DirectoryIterator($app['root.path'] . '/lib/conf.d/data_templates'), 'sbas' => $sbas, 'error_msg' => $errorMsg, 'recommendations' => $upgrader->getRecommendations(), 'advices' => $request->query->get('advices', []), 'reloadTree' => (bool) $request->query->get('reload-tree')]);
 }
Exemple #3
0
 public function SearchTermJson(Application $app, Request $request)
 {
     if (null === ($lng = $request->get('lng'))) {
         $data = explode('_', $app['locale']);
         if (count($data) > 0) {
             $lng = $data[0];
         }
     }
     $html = '';
     $sbid = (int) $request->get('sbid');
     try {
         $databox = $app['phraseanet.appbox']->get_databox($sbid);
         $html = "" . '<LI id="TX_P.' . $sbid . '.T" class="expandable">' . "\n";
         $html .= "\t" . '<div class="hitarea expandable-hitarea"></div>' . "\n";
         $html .= "\t" . '<span>' . \phrasea::sbas_labels($sbid, $app) . '</span>' . "\n";
         if ($request->get('t')) {
             if ($request->get('field') != '') {
                 $domth = $databox->get_dom_thesaurus();
                 $dom_struct = $databox->get_dom_structure();
             } else {
                 $domth = $databox->get_dom_thesaurus();
             }
             $q = null;
             if ($request->get('field') != '') {
                 // search only in the branch(es) linked to this field
                 if ($dom_struct) {
                     $xpath = new \DOMXPath($dom_struct);
                     if ($znode = $xpath->query('/record/description/' . $request->get('field'))->item(0)) {
                         $q = '(' . $znode->getAttribute('tbranch') . ')';
                     }
                 }
             } else {
                 // search in the whole thesaurus
                 $q = '/thesaurus';
             }
             if ($q !== null && $domth) {
                 $xpath = new \DOMXPath($domth);
                 $t = $this->splitTermAndContext($request->get('t'));
                 $q2 = 'starts-with(@w, \'' . \thesaurus::xquery_escape($app['unicode']->remove_indexer_chars($t[0])) . '\')';
                 if ($t[1]) {
                     $q2 .= ' and starts-with(@k, \'' . \thesaurus::xquery_escape($app['unicode']->remove_indexer_chars($t[1])) . '\')';
                 }
                 $q2 = '//sy[' . $q2 . ' and @lng=\'' . $lng . '\']';
                 $q .= $q2;
                 $nodes = $xpath->query($q);
                 for ($i = 0; $i < $nodes->length; $i++) {
                     $nodes->item($i)->setAttribute('bold', '1');
                     for ($n = $nodes->item($i)->parentNode; $n && $n->nodeType == XML_ELEMENT_NODE && $n->nodeName == 'te'; $n = $n->parentNode) {
                         $n->setAttribute('open', '1');
                     }
                 }
                 $this->getHTMLTerm($sbid, $lng, $domth->documentElement, $html);
             }
         } else {
             $html .= "\t" . '<ul style="display: none;">loading</ul>' . "\n";
         }
         $html .= "" . '</LI>' . "\n";
     } catch (\Exception $e) {
     }
     return $app->json(['parm' => ['sbid' => $request->get('sbid'), 't' => $request->get('t'), 'field' => $request->get('field'), 'lng' => $request->get('lng'), 'debug' => $request->get('debug')], 'html' => $html]);
 }
Exemple #4
0
 public function loadThesaurus(Application $app, Request $request)
 {
     if (null === $request->get("bid")) {
         return new Response('Missing bid parameter', 400);
     }
     $updated = false;
     $validThesaurus = true;
     $ctlist = [];
     $name = \phrasea::sbas_labels($request->get('bid'), $app);
     try {
         $databox = $app['phraseanet.appbox']->get_databox((int) $request->get('bid'));
         $connbas = $databox->get_connection();
         $domct = $databox->get_dom_cterms();
         $domth = $databox->get_dom_thesaurus();
         $now = date("YmdHis");
         if (!$domct && $request->get('repair') == 'on') {
             $domct = new \DOMDocument();
             $domct->load(__DIR__ . "/../../../../conf.d/blank_cterms.xml");
             $domct->documentElement->setAttribute("creation_date", $now);
             $databox->saveCterms($domct);
         }
         if (!$domth && $request->get('repair') == 'on') {
             $domth = new \DOMDocument();
             $domth->load(__DIR__ . "/../../../../conf.d/blank_thesaurus.xml");
             $domth->documentElement->setAttribute("creation_date", $now);
             $databox->saveThesaurus($domth);
         }
         if ($domct && $domth) {
             $oldversion = $domth->documentElement->getAttribute("version");
             if ($this->fixThesaurus($app, $domct, $domth, $connbas) != $oldversion) {
                 $updated = true;
                 $databox->saveCterms($domct);
                 $databox->saveThesaurus($domth);
             }
             for ($ct = $domct->documentElement->firstChild; $ct; $ct = $ct->nextSibling) {
                 if ($ct->nodeName == "te") {
                     $ctlist[] = ['id' => $ct->getAttribute("id"), 'field' => $ct->getAttribute("field")];
                 }
             }
         } else {
             $validThesaurus = false;
         }
     } catch (\Exception $e) {
     }
     return $app['twig']->render('thesaurus/load-thesaurus.html.twig', ['bid' => $request->get('bid'), 'name' => $name, 'cterms' => $ctlist, 'valid_thesaurus' => $validThesaurus, 'updated' => $updated]);
 }
Exemple #5
0
 /**
  * La liste des base authorisee sous forme de string
  *
  * @param string $separator
  *
  * @return string
  */
 public function getListeBase($separator)
 {
     $all_coll = $this->getAllColl();
     $liste = '';
     foreach ($all_coll as $sbas => $info) {
         $liste .= phrasea::sbas_labels($sbas, $this->app) . ' ' . $separator . ' ';
     }
     return $liste;
 }
Exemple #6
0
 /**
  * Constructor
  *
  * @param Application $app
  * @param string      $d1      the minimal date of the report
  * @param string      $d2      the maximal date of the report
  * @param integer     $sbas_id the id of the base where we want to connect
  * @param string      $collist
  */
 public function __construct(Application $app, $d1, $d2, $sbas_id, $collist)
 {
     $this->app = $app;
     $this->dmin = $d1;
     $this->dmax = $d2;
     $this->sbas_id = $sbas_id;
     $this->list_coll_id = $collist;
     $this->user_id = $this->app->getAuthenticatedUser()->getId();
     $this->periode = sprintf('%s - %s ', $this->app['date-formatter']->getPrettyString(new \DateTime($d1)), $this->app['date-formatter']->getPrettyString(new \DateTime($d2)));
     $this->dbname = phrasea::sbas_labels($sbas_id, $app);
     $this->cor = $this->setCor();
     $this->jour = $this->setDay();
     $this->month = $this->setMonth();
 }
Exemple #7
0
 private function send_mails(Application $app, FtpExport $export)
 {
     $transferts = [];
     $transfert_status = $this->translator->trans('task::ftp:Tous les documents ont ete transferes avec succes');
     foreach ($export->getElements() as $element) {
         if (!$element->isError() && $element->isDone()) {
             $transferts[] = '<li>' . $this->translator->trans('task::ftp:Record %recordid% - %filename% de la base (%databoxname% - %collectionname%) - %subdefname%', ['%recordid%' => $element->getRecordId(), '%filename%' => $element->getFilename(), '%databoxname%' => \phrasea::sbas_labels(\phrasea::sbasFromBas($app, $element->getBaseId()), $app), '%collectionname%' => \phrasea::bas_labels($element->getBaseId(), $app), $element->getSubdef(), '%subdefname%' => $element->getSubdef()]) . ' : ' . $this->translator->trans('Transfert OK') . '</li>';
         } else {
             $transferts[] = '<li>' . $this->translator->trans('task::ftp:Record %recordid% - %filename% de la base (%databoxname% - %collectionname%) - %subdefname%', ['%recordid%' => $element->getRecordId(), '%filename%' => $element->getFilename(), '%databoxname%' => \phrasea::sbas_labels(\phrasea::sbasFromBas($app, $element->getBaseId()), $app), '%collectionname%' => \phrasea::bas_labels($element->getBaseId(), $app), $element->getSubdef(), '%subdefname%' => $element->getSubdef()]) . ' : ' . $this->translator->trans('Transfert Annule') . '</li>';
             $transfert_status = $this->translator->trans('task::ftp:Certains documents n\'ont pas pu etre tranferes');
         }
     }
     if ($export->getCrash() >= $export->getNbretry()) {
         $connection_status = $this->translator->trans('Des difficultes ont ete rencontres a la connection au serveur distant');
     } else {
         $connection_status = $this->translator->trans('La connection vers le serveur distant est OK');
     }
     $text_mail_sender = $export->getTextMailSender();
     $text_mail_receiver = $export->getTextMailReceiver();
     $sendermail = $export->getSendermail();
     $ftp_server = $export->getAddr();
     $message = "\n\n----------------------------------------\n\n";
     $message = $connection_status . "\n";
     $message .= $transfert_status . "\n";
     $message .= $this->translator->trans("task::ftp:Details des fichiers") . "\n\n";
     $message .= implode("\n", $transferts);
     $sender_message = $text_mail_sender . $message;
     $receiver_message = $text_mail_receiver . $message;
     try {
         $receiver = new Receiver(null, $sendermail);
         $mail = MailSuccessFTPSender::create($app, $receiver, null, $sender_message);
         $mail->setServer($ftp_server);
         $app['notification.deliverer']->deliver($mail);
     } catch (InvalidArgumentException $e) {
     }
     try {
         $receiver = new Receiver(null, $export->getMail());
         $mail = MailSuccessFTPReceiver::create($app, $receiver, null, $receiver_message);
         $mail->setServer($ftp_server);
         $app['notification.deliverer']->deliver($mail);
     } catch (\Exception $e) {
         $this->log('debug', sprintf('Unable to deliver success message : %s', $e->getMessage()));
     }
 }