/** * 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')]); }
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]); }
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]); }
/** * 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; }
/** * 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(); }
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())); } }