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