示例#1
0
 public function testGet_id()
 {
     $this->feed_datas();
     $log_id = $this->object->get_id();
     $this->assertTrue(is_int($log_id));
     $sql = 'SELECT id FROM log
         WHERE sit_session = :ses_id AND usrid = :usr_id AND site = :site';
     $params = [':ses_id' => self::$DI['app']['session']->get('session_id'), ':usr_id' => self::$DI['app']['authentication']->getUser()->getId(), ':site' => self::$DI['app']['conf']->get(['main', 'key'])];
     $stmt = $this->databox->get_connection()->prepare($sql);
     $stmt->execute($params);
     $this->assertEquals(1, $stmt->rowCount());
     $row = $stmt->fetch(PDO::FETCH_ASSOC);
     $this->assertEquals($this->object->get_id(), $row['id']);
     $log_id = $this->object->get_id();
     $ses_id = self::$DI['app']['session']->get('session_id');
     $usr_id = self::$DI['app']['authentication']->getUser()->getId();
     $this->logout(self::$DI['app']);
     $sql = 'SELECT id FROM log
         WHERE sit_session = :ses_id AND usrid = :usr_id AND site = :site';
     $params = [':ses_id' => $ses_id, ':usr_id' => $usr_id, ':site' => self::$DI['app']['conf']->get(['main', 'key'])];
     $stmt = $this->databox->get_connection()->prepare($sql);
     $stmt->execute($params);
     $this->assertEquals(1, $stmt->rowCount());
     $row = $stmt->fetch(PDO::FETCH_ASSOC);
     $this->assertEquals($log_id, $row['id']);
 }
示例#2
0
 public function log(\databox $databox, $query, $answers, array $coll_ids)
 {
     $conn = $databox->get_connection();
     $sql = "INSERT INTO log_search\n           (id, log_id, date, search, results, coll_id )\n           VALUES\n           (null, :log_id, :date, :query, :nbresults, :colls)";
     $stmt = $conn->prepare($sql);
     $stmt->execute([':log_id' => $this->app['phraseanet.logger']($databox)->get_id(), ':date' => date("Y-m-d H:i:s"), ':query' => $query, ':nbresults' => $answers, ':colls' => implode(',', array_map(function ($coll_id) {
         return (int) $coll_id;
     }, $coll_ids))]);
     $stmt->closeCursor();
     return $this;
 }
 /**
  * @return \Doctrine\DBAL\Query\QueryBuilder
  */
 private function createSelectBuilder()
 {
     $connection = $this->databox->get_connection();
     return $connection->createQueryBuilder()->select('coll_id AS collection_id', 'record_id', 'credate AS created', 'uuid', 'moddate AS updated', 'parent_record_id AS isStory', $connection->quoteIdentifier('type'), 'originalname AS originalName', 'sha256', 'mime')->from('record', 'r');
 }
示例#4
0
 /**
  * Return a maximum of 100 recods without UUIDs
  *
  * @param  \databox $databox
  * @return array
  */
 protected function getNullUUIDs(\databox $databox)
 {
     $sql = 'SELECT r.coll_id, r.type, r.record_id, s.path, s.file, r.xml
             FROM record r, subdef s
                     WHERE ISNULL(uuid)
                     AND s.record_id = r.record_id AND s.name="document"
                     AND parent_record_id = 0 LIMIT 100';
     $stmt = $databox->get_connection()->prepare($sql);
     $stmt->execute();
     $rs = $stmt->fetchAll(\PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     return $rs;
 }
 private function getNbRowLogs(\databox $databox)
 {
     $stmt = $databox->get_connection()->prepare('SELECT COUNT(l.id) as nb_log FROM log_docs l WHERE l.action = "download"');
     $stmt->execute();
     $row = $stmt->fetch();
     $stmt->closeCursor();
     unset($stmt);
     return $row['nb_log'];
 }
示例#6
0
 public function delete_injected_rights_sbas(databox $databox)
 {
     $sql = 'DELETE FROM collusr WHERE usr_id = :usr_id AND site = :site';
     $params = [':usr_id' => $this->user->getId(), ':site' => $this->app['conf']->get(['main', 'key'])];
     $stmt = $databox->get_connection()->prepare($sql);
     $stmt->execute($params);
     $stmt->closeCursor();
     return $this;
 }
示例#7
0
 public static function load(Application $app, databox $databox)
 {
     if (!$app['authentication']->isAuthenticated()) {
         throw new Exception_Session_LoggerNotFound('Not authenticated');
     }
     $sql = 'SELECT id FROM log
         WHERE site = :site AND sit_session = :ses_id';
     $params = [':site' => $app['conf']->get(['main', 'key']), ':ses_id' => $app['session']->get('session_id')];
     $stmt = $databox->get_connection()->prepare($sql);
     $stmt->execute($params);
     $row = $stmt->fetch(PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     if (!$row) {
         throw new Exception_Session_LoggerNotFound('Logger not found');
     }
     return new self($databox, $row['id']);
 }
示例#8
0
 /**
  *
  * @param  Application    $app
  * @param  databox        $databox
  * @param  string         $token
  * @param  int            $record_id
  * @param  string         $name
  * @return record_adapter
  */
 public static function challenge_token(Application $app, databox $databox, $token, $record_id, $name)
 {
     $sql = 'SELECT p.id
         FROM permalinks p, subdef s
         WHERE s.record_id = :record_id
           AND s.name = :name
           AND s.subdef_id = p.subdef_id
           AND activated = "1"
           AND token = :token';
     $params = [':record_id' => $record_id, ':token' => $token, ':name' => $name];
     $stmt = $databox->get_connection()->prepare($sql);
     $stmt->execute($params);
     $row = $stmt->fetch(PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     unset($stmt);
     if ($row) {
         return new record_adapter($app, $databox->get_sbas_id(), $record_id);
     }
     return null;
 }
示例#9
0
 public static function insertClient(Application $app, \databox $databox)
 {
     $connbas = $databox->get_connection();
     $sql = 'SELECT site_id FROM clients WHERE site_id = :site_id';
     $stmt = $connbas->prepare($sql);
     $stmt->execute([':site_id' => $app['conf']->get('servername')]);
     $rowCount = $stmt->rowCount();
     $stmt->closeCursor();
     if ($rowCount > 0) {
         return;
     }
     $sql = 'INSERT INTO clients (site_id) VALUES (:site_id)';
     $stmt = $connbas->prepare($sql);
     $stmt->execute([':site_id' => $app['conf']->get('servername')]);
     $stmt->closeCursor();
     return;
 }
示例#10
0
 public static function create(Application $app, databox $databox, appbox $appbox, $name, User $user = null)
 {
     $sbas_id = $databox->get_sbas_id();
     $connbas = $databox->get_connection();
     $conn = $appbox->get_connection();
     $new_bas = false;
     $prefs = '<?xml version="1.0" encoding="UTF-8"?>
         <baseprefs>
             <status>0</status>
             <sugestedValues>
             </sugestedValues>
         </baseprefs>';
     $sql = "INSERT INTO coll (coll_id, asciiname, prefs, logo)\n                VALUES (null, :name, :prefs, '')";
     $params = [':name' => $name, 'prefs' => $prefs];
     $stmt = $connbas->prepare($sql);
     $stmt->execute($params);
     $stmt->closeCursor();
     $new_id = (int) $connbas->lastInsertId();
     $sql = "INSERT INTO bas (base_id, active, ord, server_coll_id, sbas_id, aliases)\n            VALUES\n            (null, 1, :ord, :server_coll_id, :sbas_id, '')";
     $stmt = $conn->prepare($sql);
     $stmt->execute([':server_coll_id' => $new_id, ':sbas_id' => $sbas_id, ':ord' => self::getNewOrder($conn, $sbas_id)]);
     $stmt->closeCursor();
     $new_bas = $conn->lastInsertId();
     $databox->delete_data_from_cache(databox::CACHE_COLLECTIONS);
     $appbox->delete_data_from_cache(appbox::CACHE_LIST_BASES);
     cache_databox::update($app, $sbas_id, 'structure');
     phrasea::reset_baseDatas($appbox);
     $collection = self::get_from_coll_id($app, $databox, $new_id);
     if (null !== $user) {
         $collection->set_admin($new_bas, $user);
     }
     return $collection;
 }
示例#11
0
 /**
  *
  * @param databox $databox
  * @param integer $original_name
  * @param integer $caseSensitive
  * @param integer $offset_start
  * @param integer $how_many
  *
  * @return array
  */
 public static function get_records_by_originalname(databox $databox, $original_name, $caseSensitive = false, $offset_start = 0, $how_many = 10)
 {
     $offset_start = (int) ($offset_start < 0 ? 0 : $offset_start);
     $how_many = (int) ($how_many > 20 || $how_many < 1 ? 10 : $how_many);
     $sql = sprintf('SELECT record_id FROM record
         WHERE originalname = :original_name ' . ($caseSensitive ? 'COLLATE utf8_bin' : 'COLLATE utf8_unicode_ci') . ' LIMIT %d, %d', $offset_start, $how_many);
     $stmt = $databox->get_connection()->prepare($sql);
     $stmt->execute([':original_name' => $original_name]);
     $rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     $records = [];
     foreach ($rs as $row) {
         $records[] = $databox->get_record($row['record_id']);
     }
     return $records;
 }
示例#12
0
 /**
  * @param  Application  $app
  * @param  databox      $databox
  * @param  media_subdef $media_subdef
  * @return $this
  */
 public static function create(Application $app, databox $databox, media_subdef $media_subdef)
 {
     $sql = 'INSERT INTO permalinks
         (id, subdef_id, token, activated, created_on, last_modified, label)
         VALUES (null, :subdef_id, :token, :activated, NOW(), NOW(), "")';
     $params = [':subdef_id' => $media_subdef->get_subdef_id(), ':token' => $app['random.medium']->generateString(64, TokenManipulator::LETTERS_AND_NUMBERS), ':activated' => '1'];
     $error = null;
     $stmt = $databox->get_connection()->prepare($sql);
     try {
         $stmt->execute($params);
     } catch (DBALException $e) {
         $error = $e;
     }
     $stmt->closeCursor();
     if ($error) {
         throw new RuntimeException('Permalink already exists', $e->getCode(), $e);
     }
     $permalink = self::getPermalink($app, $databox, $media_subdef);
     $permalink->set_label(strip_tags($media_subdef->get_record()->get_title(false, null, true)));
     return $permalink;
 }
示例#13
0
 /**
  * Add a migration column to the table
  *
  * @param \databox $databox
  */
 protected function ensureMigrateColumn(\databox $databox)
 {
     try {
         $sql = 'ALTER TABLE `record`
                 ADD `migrate35` TINYINT( 1 ) UNSIGNED NOT NULL ,
                 ADD INDEX ( `migrate35` ) ';
         $stmt = $databox->get_connection()->prepare($sql);
         $stmt->execute();
         $stmt->closeCursor();
     } catch (\Exception $e) {
     }
 }
示例#14
0
 /**
  *
  * @param \Alchemy\Phrasea\Application $app
  * @param databox                      $databox
  * @param type                         $name
  * @param type                         $multi
  *
  * @return databox_field
  *
  * @throws \Exception_InvalidArgument
  */
 public static function create(Application $app, databox $databox, $name, $multi)
 {
     $sorter = 0;
     $sql = 'SELECT (MAX(sorter) + 1) as sorter FROM metadatas_structure';
     $stmt = $databox->get_connection()->prepare($sql);
     $stmt->execute();
     $row = $stmt->fetch(PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     if ($row) {
         $sorter = max(1, (int) $row['sorter']);
     }
     $sql = "INSERT INTO metadatas_structure\n        (`id`, `name`, `src`, `readonly`, `indexable`, `type`, `tbranch`,\n          `thumbtitle`, `multi`, `business`, `aggregable`,\n          `report`, `sorter`)\n        VALUES (null, :name, '', 0, 1, 'string', '',\n          null, :multi,\n          0, 0, 1, :sorter)";
     $name = self::generateName($name);
     if ($name === '') {
         throw new \Exception_InvalidArgument();
     }
     $multi = $multi ? 1 : 0;
     $stmt = $databox->get_connection()->prepare($sql);
     $stmt->execute([':name' => $name, ':sorter' => $sorter, ':multi' => $multi]);
     $id = $databox->get_connection()->lastInsertId();
     $stmt->closeCursor();
     $databox->delete_data_from_cache(databox::CACHE_META_STRUCT);
     return self::get_instance($app, $databox, $id);
 }
示例#15
0
 public static function deleteStatus(Application $app, \databox $databox, $bit)
 {
     $status = self::getStatus($app, $databox->get_sbas_id());
     if (isset($status[$bit])) {
         $doc = $databox->get_dom_structure();
         if ($doc) {
             $xpath = $databox->get_xpath_structure();
             $entries = $xpath->query("/record/statbits/bit[@n=" . $bit . "]");
             foreach ($entries as $sbit) {
                 if ($p = $sbit->previousSibling) {
                     if ($p->nodeType == XML_TEXT_NODE && $p->nodeValue == "\n\t\t") {
                         $p->parentNode->removeChild($p);
                     }
                 }
                 if ($sbit->parentNode->removeChild($sbit)) {
                     $sql = 'UPDATE record SET status = status&(~(1<<' . $bit . '))';
                     $stmt = $databox->get_connection()->prepare($sql);
                     $stmt->execute();
                     $stmt->closeCursor();
                 }
             }
             $databox->saveStructure($doc);
             if (null !== $status[$bit]['img_off']) {
                 $app['filesystem']->remove($status[$bit]['path_off']);
             }
             if (null !== $status[$bit]['img_on']) {
                 $app['filesystem']->remove($status[$bit]['path_on']);
             }
             unset(self::$_status[$databox->get_sbas_id()]->status[$bit]);
             return true;
         }
     }
     return false;
 }