Пример #1
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $appbox, Application $app)
 {
     $dql = 'SELECT u FROM Phraseanet:User u WHERE u.nonce IS NULL';
     $q = $app['orm.em']->createQuery($dql);
     $q->setHint(Query::HINT_FORCE_PARTIAL_LOAD, true);
     $users = $q->getResult();
     $n = 0;
     foreach ($users as $user) {
         $user->setNonce($app['random.medium']->generateString(64));
         $app['orm.em']->persist($user);
         $n++;
         if ($n % 100 === 0) {
             $app['orm.em']->flush();
         }
     }
     $app['orm.em']->flush();
     $sql = 'SELECT task_id, `class` FROM task2';
     $stmt = $appbox->get_connection()->prepare($sql);
     $stmt->execute();
     $rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     $sql = 'UPDATE task2 SET `class` = :class WHERE task_id = :task_id';
     $stmt = $appbox->get_connection()->prepare($sql);
     foreach ($rs as $row) {
         if (strpos($row['class'], 'task_period_') !== false) {
             continue;
         }
         $params = [':task_id' => $row['task_id'], ':class' => str_replace('task_', 'task_period_', $row['class'])];
         $stmt->execute($params);
     }
     $stmt->closeCursor();
     return true;
 }
Пример #2
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $appbox, Application $app)
 {
     $sql = 'SELECT `key`, `value` FROM `registry`
             WHERE `key` = "GV_X_Accel_Redirect"
                 OR `key` = "GV_X_Accel_Redirect_mount_point"
                 OR `key` = "GV_modxsendfile"';
     $stmt = $appbox->get_connection()->prepare($sql);
     $stmt->execute();
     $rows = $stmt->fetchAll(\PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     $registry = ['GV_X_Accel_Redirect' => null, 'GV_X_Accel_Redirect_mount_point' => null, 'GV_modxsendfile' => null];
     foreach ($rows as $row) {
         $registry[$row['key']] = $row['value'];
     }
     $xsendfilePath = $registry['GV_X_Accel_Redirect'];
     $xsendfileMountPoint = $registry['GV_X_Accel_Redirect_mount_point'];
     $config = $app['configuration.store']->setDefault('xsendfile')->getConfig();
     $config['xsendfile']['enabled'] = (bool) $registry['GV_modxsendfile'];
     $config['xsendfile']['type'] = $config['xsendfile']['enabled'] ? 'nginx' : '';
     if (null !== $xsendfilePath && null !== $xsendfileMountPoint) {
         $config['xsendfile']['mapping'] = [['directory' => $xsendfilePath, 'mount-point' => $xsendfileMountPoint]];
     }
     $app['configuration.store']->setConfig($config);
     $toRemove = ['GV_X_Accel_Redirect', 'GV_X_Accel_Redirect_mount_point', 'GV_modxsendfile'];
     $sql = 'DELETE FROM registry WHERE `key` = :k';
     $stmt = $appbox->get_connection()->prepare($sql);
     foreach ($toRemove as $registryKey) {
         $stmt->execute([':k' => $registryKey]);
     }
     $stmt->closeCursor();
     return true;
 }
Пример #3
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $databox, Application $app)
 {
     $sql = 'UPDATE record r, subdef s
             SET r.mime = s.mime
             WHERE r.record_id = s.record_id
               AND s.name="document"';
     $stmt = $databox->get_connection()->prepare($sql);
     $stmt->execute();
     $stmt->closeCursor();
     $sql = 'UPDATE subdef s, record r
             SET s.updated_on = r.moddate, s.created_on = r.credate
             WHERE s.record_id = r.record_id';
     $stmt = $databox->get_connection()->prepare($sql);
     $stmt->execute();
     $stmt->closeCursor();
     $sql = 'UPDATE subdef SET `name` = LOWER( `name` )';
     $stmt = $databox->get_connection()->prepare($sql);
     $stmt->execute();
     $stmt->closeCursor();
     $dom = $databox->get_dom_structure();
     $xpath = $databox->get_xpath_structure();
     $nodes = $xpath->query('//record/subdefs/subdefgroup/subdef');
     foreach ($nodes as $node) {
         $name = mb_strtolower(trim($node->getAttribute('name')));
         if ($name === '') {
             continue;
         }
         $node->setAttribute('name', $name);
     }
     $databox->saveStructure($dom);
     return true;
 }
Пример #4
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $databox, Application $app)
 {
     $sql = 'SELECT id, src FROM metadatas_structure';
     $stmt = $databox->get_connection()->prepare($sql);
     $stmt->execute();
     $rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     $update = [];
     $tagDirname = new \Alchemy\Phrasea\Metadata\Tag\TfDirname();
     $tagBasename = new \Alchemy\Phrasea\Metadata\Tag\TfBasename();
     foreach ($rs as $row) {
         if (strpos(strtolower($row['src']), 'tf-parentdir') !== false) {
             $update[] = ['id' => $row['id'], 'src' => $tagDirname->getTagname()];
         }
         if (strpos(strtolower($row['src']), 'tf-filename') !== false) {
             $update[] = ['id' => $row['id'], 'src' => $tagBasename->getTagname()];
         }
     }
     $sql = 'UPDATE metadatas_structure SET src = :src
             WHERE id = :id';
     $stmt = $databox->get_connection()->prepare($sql);
     foreach ($update as $row) {
         $stmt->execute([':src' => $row['src'], ':id' => $row['id']]);
     }
     $stmt->closeCursor();
     return true;
 }
Пример #5
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $appbox, Application $app)
 {
     $sql = 'SELECT `value` FROM `registry` WHERE `key` = "GV_i18n_service"';
     $stmt = $appbox->get_connection()->prepare($sql);
     $stmt->execute();
     $row = $stmt->fetch(\PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     if (null !== $row && false !== strpos($row['value'], 'localization.webservice.alchemyasp.com')) {
         $sql = 'UPDATE `registry` SET `value` = "http://geonames.alchemyasp.com/" WHERE `key` = "GV_i18n_service"';
         $stmt = $appbox->get_connection()->prepare($sql);
         $stmt->execute();
         $stmt->closeCursor();
     }
     return true;
 }
Пример #6
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $databox, Application $app)
 {
     $conn = $databox->get_connection();
     $sql = 'SELECT value FROM pref WHERE prop = "structure"';
     $stmt = $conn->prepare($sql);
     $stmt->execute();
     $result = $stmt->fetch(PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     if (!$result) {
         throw new \RuntimeException('Unable to find structure');
     }
     $DOMDocument = new DOMDocument();
     $DOMDocument->loadXML($result['value']);
     $XPath = new DOMXPath($DOMDocument);
     foreach ($XPath->query('/record/subdefs/subdefgroup/subdef/delay') as $delay) {
         $delay->nodeValue = min(500, max(50, (int) $delay->nodeValue * 400));
     }
     foreach ($XPath->query('/record/subdefs/subdefgroup/subdef/acodc') as $acodec) {
         if ($acodec->nodeValue == 'faac') {
             $acodec->nodeValue = 'libvo_aacenc';
         }
     }
     $sql = 'UPDATE pref SET value = :structure WHERE prop = "structure"';
     $stmt = $conn->prepare($sql);
     $stmt->execute([':structure' => $DOMDocument->saveXML()]);
     $stmt->closeCursor();
     return true;
 }
Пример #7
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $databox, Application $app)
 {
     $sql = "UPDATE metadatas_structure SET `aggregable`=20 WHERE `aggregable`=1";
     $stmt = $databox->get_connection()->prepare($sql);
     $stmt->execute();
     return true;
 }
Пример #8
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $databox, Application $app)
 {
     $sql = "SHOW INDEX FROM metadatas_structure WHERE KEY_NAME = 'sorter'";
     $stmt = $databox->get_connection()->prepare($sql);
     $stmt->execute();
     $rows = $stmt->fetchAll(\PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     if (count($rows) === 0) {
         return true;
     }
     $sql = "DROP INDEX sorter ON  metadatas_structure";
     $stmt = $databox->get_connection()->prepare($sql);
     $stmt->execute();
     $stmt->closeCursor();
     return true;
 }
Пример #9
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $appbox, Application $app)
 {
     if (!$this->hasSessionTable($app)) {
         return true;
     }
     // Remove deleted users sessions
     $sql = 'SELECT s.id FROM `Sessions` s INNER JOIN Users u ON (u.id = s.user_id) WHERE u.deleted = 1';
     $stmt = $appbox->get_connection()->prepare($sql);
     $stmt->execute();
     $rows = $stmt->fetchAll(\PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     foreach ($rows as $row) {
         if (null !== ($session = $app['repo.sessions']->find($row['id']))) {
             $app['orm.em']->remove($session);
         }
     }
     // Remove API sessions
     $query = $app['orm.em']->createQuery('SELECT s FROM Phraseanet:Session s WHERE s.user_agent LIKE :guzzle');
     $query->setParameter(':guzzle', 'Guzzle%');
     foreach ($query->getResult() as $session) {
         $app['orm.em']->remove($session);
     }
     $app['orm.em']->flush();
     return true;
 }
Пример #10
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $appbox, Application $app)
 {
     $sql = 'DELETE FROM Tasks';
     $stmt = $app['phraseanet.appbox']->get_connection()->prepare($sql);
     $stmt->execute();
     $stmt->closeCursor();
     $sql = 'SELECT task_id, active, crashed, name, class, settings FROM task2';
     $stmt = $appbox->get_connection()->prepare($sql);
     $stmt->execute();
     $rs = $stmt->fetchAll(\PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     foreach ($rs as $row) {
         try {
             $job = $this->createJob($app, $row['class']);
         } catch (\RuntimeException $e) {
             continue;
         }
         $settings = simplexml_load_string($row['settings']);
         $period = $job->getEditor()->getDefaultPeriod();
         if ($settings->period) {
             $period = (int) $settings->period;
             unset($settings->period);
             $row['settings'] = $settings->asXML();
         }
         $task = new Task();
         $task->setCrashed($row['crashed'])->setJobId($job->getJobId())->setName($row['name'])->setPeriod($period)->setSettings($row['settings'])->setStatus($row['active'] ? Task::STATUS_STARTED : Task::STATUS_STOPPED);
         $app['EM']->persist($task);
     }
     $app['EM']->flush();
 }
Пример #11
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $databox, Application $app)
 {
     $sql = "UPDATE log_docs SET `action`='mail' WHERE `action`='download' AND LOCATE('@', comment)";
     $stmt = $databox->get_connection()->prepare($sql);
     $stmt->execute();
     return true;
 }
Пример #12
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $appbox, Application $app)
 {
     $sql = 'SELECT id, `usage`
             FROM `order`';
     $stmt = $appbox->get_connection()->prepare($sql);
     $stmt->execute();
     $rs = $stmt->fetchAll(\PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     $sql = 'UPDATE `order` SET `usage` = :usage
             WHERE id = :id';
     $stmt = $appbox->get_connection()->prepare($sql);
     foreach ($rs as $row) {
         $stmt->execute([':usage' => strip_tags($row['usage']), ':id' => $row['id']]);
     }
     $stmt->closeCursor();
     return true;
 }
Пример #13
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $appbox, Application $app)
 {
     $sql = 'DELETE FROM basusr WHERE actif = "0"';
     $stmt = $appbox->get_connection()->prepare($sql);
     $stmt->execute();
     $stmt->closeCursor();
     return true;
 }
Пример #14
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $appbox, Application $app)
 {
     $sql = 'SELECT base_id, usr_id FROM order_masters';
     $stmt = $appbox->get_connection()->prepare($sql);
     $stmt->execute();
     $rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     $sql = 'UPDATE basusr SET order_master="1"
             WHERE base_id = :base_id
               AND usr_id = :usr_id';
     $stmt = $appbox->get_connection()->prepare($sql);
     foreach ($rs as $row) {
         $params = [':base_id' => $row['base_id'], ':usr_id' => $row['usr_id']];
         $stmt->execute($params);
     }
     $stmt->closeCursor();
     return true;
 }
Пример #15
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $databox, Application $app)
 {
     $sql = 'UPDATE record SET parent_record_id = "1"
             WHERE parent_record_id != "0"';
     $stmt = $databox->get_connection()->prepare($sql);
     $stmt->execute();
     $stmt->closeCursor();
     return true;
 }
Пример #16
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $appbox, Application $app)
 {
     $sql = 'UPDATE permalinks SET label = "untitled"
             WHERE label = ""';
     $stmt = $appbox->get_connection()->prepare($sql);
     $stmt->execute();
     $stmt->closeCursor();
     return true;
 }
Пример #17
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $appbox, Application $app)
 {
     $sql = 'UPDATE basusr SET nowatermark=1 WHERE needwatermark=0';
     $stmt = $appbox->get_connection()->prepare($sql);
     $stmt->execute();
     $stmt->closeCursor();
     unset($stmt);
     return true;
 }
Пример #18
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $appbox, Application $app)
 {
     $perRequest = 100;
     $offset = 0;
     do {
         $sql = sprintf('SELECT id, datas, type FROM notifications ORDER BY id ASC LIMIT %d, %d', $offset, $perRequest);
         $stmt = $appbox->get_connection()->prepare($sql);
         $stmt->execute();
         $rs = $stmt->fetchAll(\PDO::FETCH_ASSOC);
         $stmt->closeCursor();
         $sql = 'UPDATE notifications SET datas = :json WHERE id = :id';
         $stmt = $appbox->get_connection()->prepare($sql);
         foreach ($rs as $row) {
             $json = $row['datas'];
             if (false !== ($sx = @simplexml_load_string($row['datas']))) {
                 $data = [];
                 foreach ($sx->children() as $name => $value) {
                     $data[$name] = (string) $value;
                 }
                 if ($row['type'] === 'notify_uploadquarantine') {
                     $data['reasons'] = [];
                     if (isset($sx->reasons)) {
                         foreach ($sx->reasons as $reason) {
                             $data['reasons'][] = (string) $reason->checkClassName;
                         }
                     }
                 }
                 if (in_array($row['type'], ['notify_autoregister', 'notify_register'])) {
                     $data['base_ids'] = [];
                     if (isset($sx->base_ids)) {
                         foreach ($sx->base_ids as $base_id) {
                             $data['base_ids'][] = (int) $base_id->base_id;
                         }
                     }
                 }
                 $json = json_encode($data);
             }
             $stmt->execute([':id' => $row['id'], ':json' => $json]);
         }
         $stmt->closeCursor();
         $offset += $perRequest;
     } while (count($rs) > 0);
     return true;
 }
Пример #19
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $databox, Application $app)
 {
     $sql = 'TRUNCATE metadatas';
     $stmt = $databox->get_connection()->prepare($sql);
     $stmt->execute();
     $stmt->closeCursor();
     $sql = 'TRUNCATE metadatas_structure';
     $stmt = $databox->get_connection()->prepare($sql);
     $stmt->execute();
     $stmt->closeCursor();
     $sql = 'TRUNCATE technical_datas';
     $stmt = $databox->get_connection()->prepare($sql);
     $stmt->execute();
     $stmt->closeCursor();
     $phrasea_maps = ['pdftext' => 'Phraseanet:pdftext', 'tf-archivedate' => 'Phraseanet:tf-archivedate', 'tf-atime' => 'Phraseanet:tf-atime', 'tf-chgdocdate' => 'Phraseanet:tf-chgdocdate', 'tf-ctime' => 'Phraseanet:tf-ctime', 'tf-editdate' => 'Phraseanet:tf-editdate', 'tf-mtime' => 'Phraseanet:tf-mtime', 'tf-parentdir' => 'Phraseanet:tf-parentdir', 'tf-bits' => 'Phraseanet:tf-bits', 'tf-channels' => 'Phraseanet:tf-channels', 'tf-extension' => 'Phraseanet:tf-extension', 'tf-filename' => 'Phraseanet:tf-filename', 'tf-filepath' => 'Phraseanet:tf-filepath', 'tf-height' => 'Phraseanet:tf-height', 'tf-mimetype' => 'Phraseanet:tf-mimetype', 'tf-recordid' => 'Phraseanet:tf-recordid', 'tf-size' => 'Phraseanet:tf-size', 'tf-width' => 'Phraseanet:tf-width'];
     $sxe = $databox->get_sxml_structure();
     $dom_struct = $databox->get_dom_structure();
     $xp_struct = $databox->get_xpath_structure();
     foreach ($sxe->description->children() as $fname => $field) {
         $src = trim(isset($field['src']) ? $field['src'] : '');
         if (array_key_exists($src, $phrasea_maps)) {
             $src = $phrasea_maps[$src];
         }
         $nodes = $xp_struct->query('/record/description/' . $fname);
         if ($nodes->length > 0) {
             $node = $nodes->item(0);
             $node->setAttribute('src', $src);
             $node->removeAttribute('meta_id');
         }
     }
     $databox->saveStructure($dom_struct);
     $databox->feed_meta_fields();
     $databox->delete_data_from_cache(databox::CACHE_STRUCTURE);
     $databox->delete_data_from_cache(databox::CACHE_META_STRUCT);
     $conn = $app->getApplicationBox()->get_connection();
     $sql = 'DELETE FROM `task2` WHERE class="readmeta"';
     $stmt = $conn->prepare($sql);
     $stmt->execute();
     $stmt->closeCursor();
     unset($stmt);
     return true;
 }
Пример #20
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $databox, Application $app)
 {
     try {
         $sql = 'ALTER TABLE `metadatas` DROP INDEX `unique`';
         $stmt = $databox->get_connection()->prepare($sql);
         $stmt->execute();
         $stmt->closeCursor();
     } catch (DBALException $e) {
     }
     return true;
 }
Пример #21
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $databox, Application $app)
 {
     $sql = 'SELECT id, src FROM metadatas_structure';
     $stmt = $databox->get_connection()->prepare($sql);
     $stmt->execute();
     $rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     $update = [];
     foreach ($rs as $row) {
         $src = str_replace(['/rdf:RDF/rdf:Description/PHRASEANET:', '/rdf:RDF/rdf:Description/'], ['Phraseanet:', ''], $row['src']);
         $update[] = ['id' => $row['id'], 'src' => $src];
     }
     $sql = 'UPDATE metadatas_structure SET src = :src WHERE id = :id';
     $stmt = $databox->get_connection()->prepare($sql);
     foreach ($update as $row) {
         $stmt->execute([':src' => $row['src'], ':id' => $row['id']]);
     }
     $stmt->closeCursor();
     return true;
 }
Пример #22
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $appbox, Application $app)
 {
     $conn = $appbox->get_connection();
     $sql = 'SELECT sbas_id, record_id, id FROM BasketElements';
     $stmt = $conn->prepare($sql);
     $stmt->execute();
     $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     foreach ($result as $row) {
         $sbas_id = (int) $row['sbas_id'];
         try {
             $connbas = $app->findDataboxById($sbas_id)->get_connection();
             $connbas->connect();
         } catch (\Exception $e) {
             $conn->exec('DELETE FROM ValidationDatas WHERE basket_element_id = ' . $row['id']);
             $conn->exec('DELETE FROM BasketElements WHERE id = ' . $row['id']);
             continue;
         }
         $sql = 'SELECT record_id FROM record WHERE record_id = :record_id';
         $stmt = $connbas->prepare($sql);
         $stmt->execute([':record_id' => $row['record_id']]);
         $rowCount = $stmt->rowCount();
         $stmt->closeCursor();
         if ($rowCount == 0) {
             $conn->exec('DELETE FROM ValidationDatas WHERE basket_element_id = ' . $row['id']);
             $conn->exec('DELETE FROM BasketElements WHERE id = ' . $row['id']);
         }
     }
     $dql = "SELECT b FROM Phraseanet:Basket b WHERE b.description != ''";
     $n = 0;
     $perPage = 100;
     $query = $app['orm.em']->createQuery($dql)->setFirstResult($n)->setMaxResults($perPage);
     $paginator = new Paginator($query, true);
     $count = count($paginator);
     while ($n < $count) {
         $query = $app['orm.em']->createQuery($dql)->setFirstResult($n)->setMaxResults($perPage);
         $paginator = new Paginator($query, true);
         foreach ($paginator as $basket) {
             $htmlDesc = $basket->getDescription();
             $description = trim(strip_tags(str_replace("<br />", "\n", $htmlDesc)));
             if ($htmlDesc == $description) {
                 continue;
             }
             $basket->setDescription($description);
         }
         $n += $perPage;
         $app['orm.em']->flush();
     }
     $app['orm.em']->flush();
     return true;
 }
Пример #23
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $appbox, Application $app)
 {
     $sql = "SELECT usr_id, prop, value FROM usr_settings\n                WHERE prop = 'editing_top_box'\n                  OR prop = 'editing_right_box'\n                  OR prop = 'editing_left_box'";
     $stmt = $appbox->get_connection()->prepare($sql);
     $stmt->execute();
     $rows = $stmt->fetchAll(\PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     $sql = 'UPDATE usr_settings SET value = :value
             WHERE usr_id = :usr_id
                 AND prop = :prop';
     $stmt = $appbox->get_connection()->prepare($sql);
     foreach ($rows as $row) {
         $value = $row['value'];
         if ('px' === substr($value, -2)) {
             $value = 35;
         } elseif ('%' === substr($value, -1)) {
             $value = substr($value, 0, -1);
         }
         $stmt->execute([':value' => $value, ':usr_id' => $row['usr_id'], ':prop' => $row['prop']]);
     }
     $stmt->closeCursor();
     return true;
 }
Пример #24
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $appbox, Application $app)
 {
     $sql = 'SELECT base_id, ord, sbas_id
             FROM  `bas`
             ORDER BY sbas_id, ord';
     $stmt = $appbox->get_connection()->prepare($sql);
     $stmt->execute();
     $rs = $stmt->fetchAll(\PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     $sbasData = [];
     $sbas_id = null;
     $reorder = [];
     foreach ($rs as $row) {
         $sbasData[$row['sbas_id']][] = ['base_id' => $row['base_id']];
         if ($sbas_id !== $row['sbas_id']) {
             $orders = [];
         }
         $sbas_id = $row['sbas_id'];
         if (in_array($row['ord'], $orders, true)) {
             $reorder[] = $row['sbas_id'];
         }
         $orders[] = $row['ord'];
     }
     $reorder = array_unique($reorder);
     if (count($reorder) > 0) {
         $sql = 'UPDATE bas SET ord = :ord WHERE base_id = :base_id';
         $stmt = $appbox->get_connection()->prepare($sql);
         foreach ($reorder as $sbas_id) {
             $i = 1;
             foreach ($sbasData[$sbas_id] as $data) {
                 $stmt->execute(['base_id' => $data['base_id'], 'ord' => $i++]);
             }
         }
         $stmt->closeCursor();
     }
     return true;
 }
Пример #25
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $appbox, Application $app)
 {
     $sql = 'REPLACE INTO records_rights
             (
                 SELECT null as id, usr_id, b.sbas_id, record_id, "1" as document, null as preview,
                     "push" as `case`, pushFrom as pusher_usr_id
                 FROM sselcont c, ssel s, bas b
                 WHERE c.ssel_id = s.ssel_id
                     AND b.base_id = c.base_id
                     AND c.canHD = 1
              )';
     $stmt = $appbox->get_connection()->prepare($sql);
     $stmt->execute();
     $stmt->closeCursor();
     return true;
 }
Пример #26
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $appbox, Application $app)
 {
     // Clean validation sessions where initiator_id does not exist anymore
     $sql = 'SELECT DISTINCT(v.id) AS validation_session_id FROM `ValidationSessions` v LEFT JOIN Users u ON (v.initiator_id = u.id) WHERE u.id IS NULL';
     $stmt = $appbox->get_connection()->prepare($sql);
     $stmt->execute();
     $rows = $stmt->fetchAll(\PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     foreach ($rows as $row) {
         try {
             $vsession = $app['orm.em']->createQuery('SELECT PARTIAL s.{id} FROM Phraseanet:ValidationSession s WHERE s.id = :id')->setParameters(['id' => $row['validation_session_id']])->setHint(Query::HINT_FORCE_PARTIAL_LOAD, true)->getSingleResult();
             $app['orm.em']->remove($vsession);
         } catch (NoResultException $e) {
         }
     }
     $app['orm.em']->flush();
     return true;
 }
Пример #27
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $appbox, Application $app)
 {
     $conn = $appbox->get_connection();
     $sql = 'SELECT settings
             FROM task2
             WHERE class="task_period_cindexer" LIMIT 1';
     $stmt = $conn->prepare($sql);
     $stmt->execute();
     $row = $stmt->fetch(\PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     if (!$row) {
         return false;
     }
     $sxe = simplexml_load_string($row['settings']);
     $indexer = $sxe->binpath . '/phraseanet_indexer';
     $app['conf']->set(['main', 'binaries', 'phraseanet_indexer'], $indexer);
     return true;
 }
Пример #28
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $appbox, Application $app)
 {
     try {
         $sql = 'SELECT usr_id, user_agent, ip, platform, browser, app,
                     browser_version, screen, token, nonce, lastaccess, created_on
                 FROM cache';
         $stmt = $appbox->get_connection()->prepare($sql);
         $stmt->execute();
         $rs = $stmt->fetchAll(\PDO::FETCH_ASSOC);
         $stmt->closeCursor();
     } catch (DBALException $e) {
         // this may fail on oldest versions
         return false;
     }
     foreach ($rs as $row) {
         if (null === ($user = $this->loadUser($app['EM'], $row['usr_id']))) {
             continue;
         }
         $created = $updated = null;
         if ('0000-00-00 00:00:00' !== $row['created_on']) {
             $created = \DateTime::createFromFormat('Y-m-d H:i:s', $row['created_on']);
         }
         if ('0000-00-00 00:00:00' !== $row['lastaccess']) {
             $updated = \DateTime::createFromFormat('Y-m-d H:i:s', $row['lastaccess']);
         }
         $session = new Session();
         $session->setUser($user)->setUserAgent($row['user_agent'])->setUpdated($updated)->setToken($row['token'])->setPlatform($row['platform'])->setNonce($row['nonce'])->setIpAddress($row['ip'])->setCreated($created)->setBrowserVersion($row['browser_version'])->setBrowserName($row['browser']);
         $sizes = explode('x', $row['screen']);
         if (2 === count($sizes)) {
             $session->setScreenWidth($sizes[0])->setScreenHeight($sizes[1]);
         }
         if (false !== ($apps = @unserialize($row['app']))) {
             foreach ($apps as $appli) {
                 $module = new SessionModule();
                 $module->setModuleId($appli)->setCreated($created)->setSession($session)->setUpdated($updated);
                 $session->addModule($module);
                 $app['EM']->persist($module);
             }
         }
         $app['EM']->persist($session);
     }
     $app['EM']->flush();
     return true;
 }
Пример #29
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $appbox, Application $app)
 {
     $propSql = $propArgs = [];
     $n = 0;
     foreach ($app['settings']->getUsersSettings() as $prop => $value) {
         if ('start_page_query' === $prop) {
             continue;
         }
         $propSql[] = '(prop = :prop_' . $n . ' AND value = :value_' . $n . ')';
         $propArgs[':prop_' . $n] = $prop;
         $propArgs[':value_' . $n] = $value;
         $n++;
     }
     $sql = "DELETE FROM usr_settings\n                WHERE 1 AND (" . implode(' OR ', $propSql) . " OR value IS NULL OR (value = 1 AND prop LIKE 'notification_%'))";
     $stmt = $appbox->get_connection()->prepare($sql);
     $stmt->execute($propArgs);
     $stmt->closeCursor();
     return true;
 }
Пример #30
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $databox, Application $app)
 {
     $conn = $databox->get_connection();
     $removeProc = "DROP PROCEDURE IF EXISTS explode_log_table";
     $stmt = $conn->prepare($removeProc);
     $stmt->execute();
     $stmt->closeCursor();
     unset($stmt);
     $procedure = "\n        CREATE PROCEDURE explode_log_table(bound VARCHAR(255))\n        BEGIN\n            DECLARE l_log_id INT UNSIGNED DEFAULT 0;\n            DECLARE l_coll_list TEXT;\n            DECLARE occurance INT DEFAULT 0;\n            DECLARE i INT DEFAULT 0;\n            DECLARE dest_coll_id INT;\n            DECLARE done INT DEFAULT 0;\n            DECLARE result_set CURSOR FOR\n            SELECT l.id, l.coll_list\n            FROM log l\n            LEFT JOIN log_colls lc ON (lc.log_id = l.id)\n            WHERE (lc.log_id IS NULL) AND coll_list != '';\n            DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;\n            OPEN result_set;\n            read_loop: LOOP\n                FETCH result_set INTO l_log_id, l_coll_list;\n                IF done THEN\n                LEAVE read_loop;\n                END IF;\n                SET occurance = (SELECT  LENGTH(l_coll_list) - LENGTH(REPLACE(l_coll_list, bound, ''))+1);\n                SET i=1;\n            START TRANSACTION;\n                WHILE i <= occurance DO\n                    SET dest_coll_id = (SELECT REPLACE(\n                        SUBSTRING(\n                            SUBSTRING_INDEX(l_coll_list, bound, i),\n                            LENGTH(SUBSTRING_INDEX(l_coll_list, bound, i - 1)) + 1\n                        ),\n                        ',',\n                        ''\n                    ));\n                    IF dest_coll_id > 0 THEN\n                        INSERT INTO log_colls VALUES (null, l_log_id, dest_coll_id);\n                    END IF;\n                    SET i = i + 1;\n                END WHILE;\n            COMMIT;\n            END LOOP;\n            CLOSE result_set;\n        END;";
     $stmt = $conn->prepare($procedure);
     $stmt->execute();
     $stmt->closeCursor();
     $sql = "CALL explode_log_table(',')";
     $stmt = $conn->prepare($sql);
     $stmt->execute();
     $stmt->closeCursor();
     $stmt = $conn->prepare($removeProc);
     $stmt->execute();
     $stmt->closeCursor();
     return true;
 }