Update latests classes

This commit is contained in:
Romain Neutron
2012-09-21 16:12:18 +02:00
parent 6072ede5c8
commit f0433e997c
13 changed files with 507 additions and 707 deletions

View File

@@ -9,6 +9,8 @@
* file that was distributed with this source code. * file that was distributed with this source code.
*/ */
use Alchemy\Phrasea\Application;
/** /**
* *
* @license http://opensource.org/licenses/gpl-3.0 GPLv3 * @license http://opensource.org/licenses/gpl-3.0 GPLv3
@@ -31,14 +33,16 @@ class collection implements cache_cacheableInterface
protected $databox; protected $databox;
protected $is_active; protected $is_active;
protected $binary_logo; protected $binary_logo;
protected $app;
const PIC_LOGO = 'minilogos'; const PIC_LOGO = 'minilogos';
const PIC_WM = 'wm'; const PIC_WM = 'wm';
const PIC_STAMP = 'stamp'; const PIC_STAMP = 'stamp';
const PIC_PRESENTATION = 'presentation'; const PIC_PRESENTATION = 'presentation';
protected function __construct($coll_id, databox &$databox) protected function __construct(Application $app, $coll_id, databox &$databox)
{ {
$this->app = $app;
$this->databox = $databox; $this->databox = $databox;
$this->sbas_id = (int) $databox->get_sbas_id(); $this->sbas_id = (int) $databox->get_sbas_id();
$this->coll_id = (int) $coll_id; $this->coll_id = (int) $coll_id;
@@ -78,7 +82,7 @@ class collection implements cache_cacheableInterface
$this->name = $row['asciiname']; $this->name = $row['asciiname'];
$this->prefs = $row['prefs']; $this->prefs = $row['prefs'];
$conn = connection::getPDOConnection(); $conn = connection::getPDOConnection($this->app);
$sql = 'SELECT server_coll_id, sbas_id, base_id, active FROM bas $sql = 'SELECT server_coll_id, sbas_id, base_id, active FROM bas
WHERE server_coll_id = :coll_id AND sbas_id = :sbas_id'; WHERE server_coll_id = :coll_id AND sbas_id = :sbas_id';
@@ -120,10 +124,9 @@ class collection implements cache_cacheableInterface
$this->is_active = true; $this->is_active = true;
$this->delete_data_from_cache(); $this->delete_data_from_cache();
$appbox = appbox::get_instance(\bootstrap::getCore());
$appbox->delete_data_from_cache(appbox::CACHE_LIST_BASES); $appbox->delete_data_from_cache(appbox::CACHE_LIST_BASES);
$this->databox->delete_data_from_cache(databox::CACHE_COLLECTIONS); $this->databox->delete_data_from_cache(databox::CACHE_COLLECTIONS);
cache_databox::update($this->databox->get_sbas_id(), 'structure'); cache_databox::update($this->app, $this->databox->get_sbas_id(), 'structure');
return $this; return $this;
} }
@@ -136,10 +139,9 @@ class collection implements cache_cacheableInterface
$stmt->closeCursor(); $stmt->closeCursor();
$this->is_active = false; $this->is_active = false;
$this->delete_data_from_cache(); $this->delete_data_from_cache();
$appbox = appbox::get_instance(\bootstrap::getCore());
$appbox->delete_data_from_cache(appbox::CACHE_LIST_BASES); $appbox->delete_data_from_cache(appbox::CACHE_LIST_BASES);
$this->databox->delete_data_from_cache(databox::CACHE_COLLECTIONS); $this->databox->delete_data_from_cache(databox::CACHE_COLLECTIONS);
cache_databox::update($this->databox->get_sbas_id(), 'structure'); cache_databox::update($this->app, $this->databox->get_sbas_id(), 'structure');
return $this; return $this;
} }
@@ -158,7 +160,7 @@ class collection implements cache_cacheableInterface
$stmt->closeCursor(); $stmt->closeCursor();
foreach ($rs as $row) { foreach ($rs as $row) {
$record = new record_adapter($this->databox->get_sbas_id(), $row['record_id']); $record = $this->databox->get_record($row['record_id']);
$record->delete(); $record->delete();
unset($record); unset($record);
} }
@@ -218,7 +220,7 @@ class collection implements cache_cacheableInterface
$this->delete_data_from_cache(); $this->delete_data_from_cache();
phrasea::reset_baseDatas(); phrasea::reset_baseDatas($this->databox->get_appbox());
return $this; return $this;
} }
@@ -331,7 +333,7 @@ class collection implements cache_cacheableInterface
$stmt->execute(array(':coll_id' => $this->get_coll_id())); $stmt->execute(array(':coll_id' => $this->get_coll_id()));
$stmt->closeCursor(); $stmt->closeCursor();
$appbox = appbox::get_instance(\bootstrap::getCore()); $appbox = $this->databox->get_appbox();
$sql = "DELETE FROM bas WHERE base_id = :base_id"; $sql = "DELETE FROM bas WHERE base_id = :base_id";
$stmt = $appbox->get_connection()->prepare($sql); $stmt = $appbox->get_connection()->prepare($sql);
@@ -363,17 +365,16 @@ class collection implements cache_cacheableInterface
* @param int $base_id * @param int $base_id
* @return collection * @return collection
*/ */
public static function get_from_base_id($base_id) public static function get_from_base_id(Application $app, $base_id)
{ {
$coll_id = phrasea::collFromBas($base_id); $coll_id = phrasea::collFromBas($app, $base_id);
$sbas_id = phrasea::sbasFromBas($base_id); $sbas_id = phrasea::sbasFromBas($app, $base_id);
if ( ! $sbas_id || ! $coll_id) { if ( ! $sbas_id || ! $coll_id) {
throw new Exception_Databox_CollectionNotFound(sprintf("Collection could not be found")); throw new Exception_Databox_CollectionNotFound(sprintf("Collection could not be found"));
} }
$appbox = \appbox::get_instance(\bootstrap::getCore()); $databox = $app['phraseanet.appbox']->get_databox($sbas_id);
$databox = $appbox->get_databox($sbas_id);
return self::get_from_coll_id($databox, $coll_id); return self::get_from_coll_id($app, $databox, $coll_id);
} }
/** /**
@@ -382,13 +383,13 @@ class collection implements cache_cacheableInterface
* @param int $coll_id * @param int $coll_id
* @return collection * @return collection
*/ */
public static function get_from_coll_id(databox $databox, $coll_id) public static function get_from_coll_id(Application $app, databox $databox, $coll_id)
{ {
assert(is_int($coll_id)); assert(is_int($coll_id));
$key = sprintf('%d_%d', $databox->get_sbas_id(), $coll_id); $key = sprintf('%d_%d', $databox->get_sbas_id(), $coll_id);
if ( ! isset(self::$_collections[$key])) { if ( ! isset(self::$_collections[$key])) {
self::$_collections[$key] = new self($coll_id, $databox); self::$_collections[$key] = new self($app, $coll_id, $databox);
} }
return self::$_collections[$key]; return self::$_collections[$key];
@@ -443,11 +444,12 @@ class collection implements cache_cacheableInterface
return $this->available; return $this->available;
} }
public function unmount_collection(appbox &$appbox) public function unmount_collection(Application $app)
{ {
$appbox = $app['phraseanet.appbox'];
$params = array(':base_id' => $this->get_base_id()); $params = array(':base_id' => $this->get_base_id());
$query = new User_Query($appbox); $query = new User_Query($app);
$total = $query->on_base_ids(array($this->get_base_id())) $total = $query->on_base_ids(array($this->get_base_id()))
->include_phantoms(false) ->include_phantoms(false)
->include_special_users(true) ->include_special_users(true)
@@ -483,21 +485,18 @@ class collection implements cache_cacheableInterface
$stmt->execute($params); $stmt->execute($params);
$stmt->closeCursor(); $stmt->closeCursor();
phrasea::reset_baseDatas(); phrasea::reset_baseDatas($appbox);
return $this; return $this;
} }
public static function create(databox $databox, appbox $appbox, $name, User_Adapter $user = null) public static function create(Application $app, databox $databox, appbox $appbox, $name, User_Adapter $user = null)
{ {
$sbas_id = $databox->get_sbas_id(); $sbas_id = $databox->get_sbas_id();
$connbas = $databox->get_connection(); $connbas = $databox->get_connection();
$conn = $appbox->get_connection(); $conn = $appbox->get_connection();
$new_bas = false; $new_bas = false;
$appbox = appbox::get_instance(\bootstrap::getCore());
$session = $appbox->get_session();
$prefs = '<?xml version="1.0" encoding="UTF-8"?> $prefs = '<?xml version="1.0" encoding="UTF-8"?>
<baseprefs> <baseprefs>
<status>0</status> <status>0</status>
@@ -531,16 +530,15 @@ class collection implements cache_cacheableInterface
$databox->delete_data_from_cache(databox::CACHE_COLLECTIONS); $databox->delete_data_from_cache(databox::CACHE_COLLECTIONS);
$appbox->delete_data_from_cache(appbox::CACHE_LIST_BASES); $appbox->delete_data_from_cache(appbox::CACHE_LIST_BASES);
cache_databox::update($sbas_id, 'structure'); cache_databox::update($app, $sbas_id, 'structure');
phrasea::reset_baseDatas(); phrasea::reset_baseDatas($appbox);
if (null !== $user) { if (null !== $user) {
self::set_admin($new_bas, $user); self::set_admin($new_bas, $user);
$appbox->get_session()->renew_phrasea_session();
} }
return self::get_from_coll_id($databox, $new_id); return self::get_from_coll_id($app, $databox, $new_id);
} }
public function set_admin($base_id, user_adapter $user) public function set_admin($base_id, user_adapter $user)
@@ -571,47 +569,44 @@ class collection implements cache_cacheableInterface
return true; return true;
} }
public static function mount_collection($sbas_id, $coll_id, User_Adapter $user) public static function mount_collection(Application $app, databox $databox, $coll_id, User_Adapter $user)
{ {
$appbox = appbox::get_instance(\bootstrap::getCore());
$session = $appbox->get_session();
$sql = "INSERT INTO bas (base_id, active, server_coll_id, sbas_id, aliases) $sql = "INSERT INTO bas (base_id, active, server_coll_id, sbas_id, aliases)
VALUES VALUES
(null, 1, :server_coll_id, :sbas_id, '')"; (null, 1, :server_coll_id, :sbas_id, '')";
$stmt = $appbox->get_connection()->prepare($sql); $stmt = $databox->get_appbox()->get_connection()->prepare($sql);
$stmt->execute(array(':server_coll_id' => $coll_id, ':sbas_id' => $sbas_id)); $stmt->execute(array(':server_coll_id' => $coll_id, ':sbas_id' => $sbas_id));
$stmt->closeCursor(); $stmt->closeCursor();
$new_bas = $appbox->get_connection()->lastInsertId(); $new_bas = $databox->get_appbox()->get_connection()->lastInsertId();
$appbox->delete_data_from_cache(appbox::CACHE_LIST_BASES); $databox->get_appbox()->delete_data_from_cache(appbox::CACHE_LIST_BASES);
$databox = $appbox->get_databox((int) $sbas_id);
$databox->delete_data_from_cache(databox::CACHE_COLLECTIONS); $databox->delete_data_from_cache(databox::CACHE_COLLECTIONS);
cache_databox::update($sbas_id, 'structure'); cache_databox::update($app, $sbas_id, 'structure');
phrasea::reset_baseDatas(); phrasea::reset_baseDatas($databox->get_appbox());
self::set_admin($new_bas, $user); self::set_admin($new_bas, $user);
return $new_bas; return $new_bas;
} }
public static function getLogo($base_id, $printname = false) public static function getLogo($base_id, Application $app, $printname = false)
{ {
$base_id_key = $base_id . '_' . ($printname ? '1' : '0'); $base_id_key = $base_id . '_' . ($printname ? '1' : '0');
if ( ! isset(self::$_logos[$base_id_key])) { if ( ! isset(self::$_logos[$base_id_key])) {
$registry = registry::get_instance(); $registry = $app['phraseanet.registry'];
if (is_file($registry->get('GV_RootPath') . 'config/minilogos/' . $base_id)) { if (is_file($registry->get('GV_RootPath') . 'config/minilogos/' . $base_id)) {
$name = phrasea::bas_names($base_id); $name = phrasea::bas_names($base_id, $app);
self::$_logos[$base_id_key] = '<img title="' . $name self::$_logos[$base_id_key] = '<img title="' . $name
. '" src="' . $registry->get('GV_STATIC_URL') . '" src="' . $registry->get('GV_STATIC_URL')
. '/custom/minilogos/' . $base_id . '" />'; . '/custom/minilogos/' . $base_id . '" />';
} elseif ($printname) { } elseif ($printname) {
self::$_logos[$base_id_key] = phrasea::bas_names($base_id); self::$_logos[$base_id_key] = phrasea::bas_names($base_id, $app);
} }
} }
@@ -622,8 +617,7 @@ class collection implements cache_cacheableInterface
{ {
if ( ! isset(self::$_watermarks['base_id'])) { if ( ! isset(self::$_watermarks['base_id'])) {
$registry = registry::get_instance(); if (is_file(__DIR__ . '/../../config/wm/' . $base_id))
if (is_file($registry->get('GV_RootPath') . 'config/wm/' . $base_id))
self::$_watermarks['base_id'] = '<img src="/custom/wm/' . $base_id . '" />'; self::$_watermarks['base_id'] = '<img src="/custom/wm/' . $base_id . '" />';
} }
@@ -634,8 +628,7 @@ class collection implements cache_cacheableInterface
{ {
if ( ! isset(self::$_presentations['base_id'])) { if ( ! isset(self::$_presentations['base_id'])) {
$registry = registry::get_instance(); if (is_file(__DIR__ . '/../../config/presentation/' . $base_id))
if (is_file($registry->get('GV_RootPath') . 'config/presentation/' . $base_id))
self::$_presentations['base_id'] = '<img src="/custom/presentation/' . $base_id . '" />'; self::$_presentations['base_id'] = '<img src="/custom/presentation/' . $base_id . '" />';
} }
@@ -646,8 +639,7 @@ class collection implements cache_cacheableInterface
{ {
if ( ! isset(self::$_stamps['base_id'])) { if ( ! isset(self::$_stamps['base_id'])) {
$registry = registry::get_instance(); if (is_file(__DIR__ . '/../../config/stamp/' . $base_id))
if (is_file($registry->get('GV_RootPath') . 'config/stamp/' . $base_id))
self::$_stamps['base_id'] = '<img src="/custom/stamp/' . $base_id . '" />'; self::$_stamps['base_id'] = '<img src="/custom/stamp/' . $base_id . '" />';
} }

View File

@@ -9,6 +9,8 @@
* file that was distributed with this source code. * file that was distributed with this source code.
*/ */
use Alchemy\Phrasea\Application;
/** /**
* *
* @license http://opensource.org/licenses/gpl-3.0 GPLv3 * @license http://opensource.org/licenses/gpl-3.0 GPLv3
@@ -33,13 +35,19 @@ class connection
* @var Array * @var Array
*/ */
public static $log = array(); public static $log = array();
protected $app;
public function __construct(Application $app)
{
$this->app = $app;
}
/** /**
* *
*/ */
public function __destruct() public function __destruct()
{ {
self::printLog(); self::printLog($this->app);
return; return;
} }
@@ -48,10 +56,9 @@ class connection
* *
* @return Void * @return Void
*/ */
public static function printLog() public static function printLog(Application $app)
{ {
$registry = registry::get_instance(); if (!$app['phraseanet.registry']->get('GV_debug')) {
if ( ! $registry->get('GV_debug')) {
return; return;
} }
@@ -65,7 +72,7 @@ class connection
$totalTime += $entry['time']; $totalTime += $entry['time'];
$string = $entry['time'] . "\t" . ' - ' . $query . ' - ' . "\n"; $string = $entry['time'] . "\t" . ' - ' . $query . ' - ' . "\n";
file_put_contents($registry->get('GV_RootPath') . 'logs/mysql_log.log', $string, FILE_APPEND); file_put_contents($app['phraseanet.registry']->get('GV_RootPath') . 'logs/mysql_log.log', $string, FILE_APPEND);
} }
$string = count(self::$log) . ' queries - ' . $totalTime $string = count(self::$log) . ' queries - ' . $totalTime
. "\nEND OF QUERY " . $_SERVER['PHP_SELF'] . "\nEND OF QUERY " . $_SERVER['PHP_SELF']
@@ -79,7 +86,7 @@ class connection
} }
$string .= "\n\n\n\n"; $string .= "\n\n\n\n";
file_put_contents($registry->get('GV_RootPath') . 'logs/mysql_log.log', $string, FILE_APPEND); file_put_contents($app['phraseanet.registry']->get('GV_RootPath') . 'logs/mysql_log.log', $string, FILE_APPEND);
return; return;
} }
@@ -88,10 +95,10 @@ class connection
* *
* @return type * @return type
*/ */
protected static function instantiate() protected static function instantiate(Application $app)
{ {
if ( ! self::$_selfinstance) if (!self::$_selfinstance)
self::$_selfinstance = new self(); self::$_selfinstance = new self($app);
return; return;
} }
@@ -101,9 +108,9 @@ class connection
* @param string $name * @param string $name
* @return connection_pdo * @return connection_pdo
*/ */
public static function getPDOConnection($name = null, registryInterface $registry = null) public static function getPDOConnection(Application $app, $name = null, registryInterface $registry = null)
{ {
self::instantiate(); self::instantiate($app);
if (trim($name) == '') { if (trim($name) == '') {
$name = 'appbox'; $name = 'appbox';
} elseif (is_int((int) $name)) { } elseif (is_int((int) $name)) {
@@ -112,19 +119,17 @@ class connection
return false; return false;
} }
if ( ! isset(self::$_PDO_instance[$name])) { if (!isset(self::$_PDO_instance[$name])) {
$hostname = $port = $user = $password = $dbname = false; $hostname = $port = $user = $password = $dbname = false;
$connection_params = array(); $connection_params = array();
if (trim($name) !== 'appbox') { if (trim($name) !== 'appbox') {
$connection_params = phrasea::sbas_params(); $connection_params = phrasea::sbas_params($app);
} else { } else {
$configuration = \Alchemy\Phrasea\Core\Configuration::build(); $choosenConnexion = $app['phraseanet.configuration']->getPhraseanet()->get('database');
$choosenConnexion = $configuration->getPhraseanet()->get('database'); $connexion = $app['phraseanet.configuration']->getConnexion($choosenConnexion);
$connexion = $configuration->getConnexion($choosenConnexion);
$hostname = $connexion->get('host'); $hostname = $connexion->get('host');
$port = $connexion->get('port'); $port = $connexion->get('port');
@@ -142,6 +147,7 @@ class connection
} }
try { try {
$registry = $registry ? : $app['phraseanet.registry'];
self::$_PDO_instance[$name] = new connection_pdo($name, $hostname, $port, $user, $password, $dbname, array(), $registry); self::$_PDO_instance[$name] = new connection_pdo($name, $hostname, $port, $user, $password, $dbname, array(), $registry);
self::$_PDO_instance[$name]->query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'"); self::$_PDO_instance[$name]->query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");
} catch (Exception $e) { } catch (Exception $e) {

View File

@@ -1,19 +1,19 @@
<?php <?php
use Alchemy\Phrasea\Application;
use Alchemy\Phrasea\Core\Configuration;
class liste class liste
{ {
public static function filter($lst) public static function filter(Application $app, $lst)
{ {
$appbox = appbox::get_instance(\bootstrap::getCore());
$session = $appbox->get_session();
if ( ! is_array($lst)) if ( ! is_array($lst))
explode(';', $lst); explode(';', $lst);
$okbrec = array(); $okbrec = array();
$user = User_Adapter::getInstance($session->get_usr_id(), $appbox); $user = $app['phraseanet.user'];
foreach ($lst as $basrec) { foreach ($lst as $basrec) {
$basrec = explode("_", $basrec); $basrec = explode("_", $basrec);
@@ -21,7 +21,7 @@ class liste
continue; continue;
} }
try { try {
$record = new record_adapter($basrec[0], $basrec[1]); $record = new record_adapter($app, $basrec[0], $basrec[1]);
} catch (Exception $e) { } catch (Exception $e) {
continue; continue;
} }
@@ -41,7 +41,7 @@ class liste
continue; continue;
try { try {
$connsbas = connection::getPDOConnection($basrec[0]); $connsbas = connection::getPDOConnection($app, $basrec[0]);
$sql = 'SELECT record_id FROM record WHERE ((status ^ ' . $user->ACL()->get_mask_xor($record->get_base_id()) . ') $sql = 'SELECT record_id FROM record WHERE ((status ^ ' . $user->ACL()->get_mask_xor($record->get_base_id()) . ')
& ' . $user->ACL()->get_mask_and($record->get_base_id()) . ')=0' . & ' . $user->ACL()->get_mask_and($record->get_base_id()) . ')=0' .

View File

@@ -1,19 +1,20 @@
<?php <?php
use Alchemy\Phrasea\Application;
class login class login
{ {
public function get_cgus() public function get_cgus(Application $app)
{ {
return databox_cgu::getHome(); return databox_cgu::getHome($app);
} }
public function register_enabled() public function register_enabled(Application $app)
{ {
$registry = registry::get_instance(); require_once __DIR__ . '/deprecated/inscript.api.php';
require_once $registry->get('GV_RootPath') . 'lib/classes/deprecated/inscript.api.php';
$bases = giveMeBases(); $bases = giveMeBases($app);
if ($bases) { if ($bases) {
foreach ($bases as $base) { foreach ($bases as $base) {
@@ -26,22 +27,22 @@ class login
return false; return false;
} }
public function get_register_link() public function get_register_link(Application $app)
{ {
$demandLinkBox = ''; $demandLinkBox = '';
if (self::register_enabled()) { if (self::register_enabled($app)) {
$demandLinkBox = '<a href="/login/register/" rel="external" class="link pointer" id="register-tab">' . _('login:: register') . '</a>'; $demandLinkBox = '<a href="/login/register/" rel="external" class="link pointer" id="register-tab">' . _('login:: register') . '</a>';
} }
return $demandLinkBox; return $demandLinkBox;
} }
public function get_guest_link() public function get_guest_link(Application $app)
{ {
$inviteBox = ''; $inviteBox = '';
if (phrasea::guest_allowed()) { if (phrasea::guest_allowed($app)) {
$inviteBox = '<a class="link" rel="external" href="/prod/?nolog=1">' . _('login:: guest Access') . '</a>'; $inviteBox = '<a class="link" rel="external" href="/prod/?nolog=1">' . _('login:: guest Access') . '</a>';
} }

View File

@@ -1,11 +1,13 @@
<?php <?php
use Alchemy\Phrasea\Application;
class mail class mail
{ {
public static function mail_test($email) public static function mail_test(Application $app, $email)
{ {
$registry = registry::get_instance(); $registry = $app['phraseanet.registry'];
$from = array('email' => $registry->get('GV_defaulmailsenderaddr'), 'name' => $registry->get('GV_defaulmailsenderaddr')); $from = array('email' => $registry->get('GV_defaulmailsenderaddr'), 'name' => $registry->get('GV_defaulmailsenderaddr'));
$subject = _('mail:: test d\'envoi d\'email'); $subject = _('mail:: test d\'envoi d\'email');
@@ -14,33 +16,26 @@ class mail
$to = array('email' => $email, 'name' => $email); $to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $message, $to, $from); return self::send_mail($app, $subject, $message, $to, $from);
} }
public static function send_validation_results($email, $subject, $from, $message) public static function ftp_sent(Application $app, $email, $subject, $body)
{ {
$to = array('email' => $email, 'name' => $email); $to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $message, $to, $from); return self::send_mail($app, $subject, $body, $to);
} }
public static function ftp_sent($email, $subject, $body) public static function ftp_receive(Application $app, $email, $body)
{
$to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $body, $to);
}
public static function ftp_receive($email, $body)
{ {
$subject = _("task::ftp:Someone has sent some files onto FTP server"); $subject = _("task::ftp:Someone has sent some files onto FTP server");
$to = array('email' => $email, 'name' => $email); $to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $body, $to); return self::send_mail($app, $subject, $body, $to);
} }
public static function send_documents($email, $url, $from, $endate_obj, $message = '', $accuse) public static function send_documents(Application $app, $email, $url, $from, $endate_obj, $message = '', $accuse)
{ {
$subject = _('export::vous avez recu des documents'); $subject = _('export::vous avez recu des documents');
@@ -49,7 +44,7 @@ class mail
$body .= '<br><div>' . $body .= '<br><div>' .
sprintf( sprintf(
_('Attention, ce lien lien est valable jusqu\'au %s'), phraseadate::getDate($endate_obj) . ' ' . phraseadate::getTime($endate_obj) _('Attention, ce lien lien est valable jusqu\'au %s'), $app['date-formatter']->getDate($endate_obj) . ' ' . $app['date-formatter']->getTime($endate_obj)
) )
. '</div>'; . '</div>';
@@ -59,10 +54,10 @@ class mail
$to = array('email' => $email, 'name' => $email); $to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $body, $to, $from, array(), $accuse); return self::send_mail($app, $subject, $body, $to, $from, array(), $accuse);
} }
public static function forgot_passord($email, $login, $url) public static function forgot_passord(Application $app, $email, $login, $url)
{ {
$subject = _('login:: Forgot your password'); // Registration order on . $subject = _('login:: Forgot your password'); // Registration order on .
@@ -72,12 +67,12 @@ class mail
$to = array('email' => $email, 'name' => $email); $to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $body, $to); return self::send_mail($app, $subject, $body, $to);
} }
public static function register_confirm($email, $accept, $deny) public static function register_confirm(Application $app, $email, $accept, $deny)
{ {
$registry = registry::get_instance(); $registry = $app['phraseanet.registry'];
$subject = sprintf(_('login::register:email: Votre compte %s'), $registry->get('GV_homeTitle')); $subject = sprintf(_('login::register:email: Votre compte %s'), $registry->get('GV_homeTitle'));
$body = '<div>' . _('login::register:email: Voici un compte rendu du traitement de vos demandes d\'acces :') . "</div>\n"; $body = '<div>' . _('login::register:email: Voici un compte rendu du traitement de vos demandes d\'acces :') . "</div>\n";
@@ -91,35 +86,14 @@ class mail
$to = array('email' => $email, 'name' => $email); $to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $body, $to); return self::send_mail($app, $subject, $body, $to);
} }
public static function register_user($email, $auto, $others) public static function reset_email(Application $app, $email, $usr_id)
{ {
$registry = registry::get_instance(); $registry = $app['phraseanet.registry'];
$subject = sprintf(_('login::register:email: Votre compte %s'), $registry->get('GV_homeTitle'));
$body = "<div>" . _('login::register:Votre inscription a ete prise en compte') . "</div>\n";
if ($auto != '') {
$body .= "<br/>\n<div>" . _('login::register: vous avez des a present acces aux collections suivantes : ') . "</div>\n<ul>" . $auto . "</ul>\n";
}
if ($others != '') {
$body .= "<br/>\n<div>" . _('login::register: vos demandes concernat les collections suivantes sont sujettes a approbation d\'un administrateur') . "</div>\n<ul>" . $others . "</ul>\n";
$body .= "<br/>\n<div>" . _('login::register : vous serez avertis par email lorsque vos demandes seront traitees') . "</div>\n";
}
$to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $body, $to);
}
public static function reset_email($email, $usr_id)
{
$registry = registry::get_instance();
$date = new DateTime('1 day'); $date = new DateTime('1 day');
$token = random::getUrlToken(\random::TYPE_EMAIL, $usr_id, $date, $email); $token = random::getUrlToken($app, \random::TYPE_EMAIL, $usr_id, $date, $email);
$url = $registry->get('GV_ServerName') . 'account/reset-email/?token=' . $token; $url = $registry->get('GV_ServerName') . 'account/reset-email/?token=' . $token;
@@ -130,12 +104,12 @@ class mail
$to = array('email' => $email, 'name' => $email); $to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $body, $to); return self::send_mail($app, $subject, $body, $to);
} }
public static function change_mail_information($display_name, $old_email, $new_email) public static function change_mail_information(Application $app, $display_name, $old_email, $new_email)
{ {
$registry = registry::get_instance(); $registry = $app['phraseanet.registry'];
$subject = sprintf(_('Update of your email address on %s'), $registry->get('GV_homeTitle')); $subject = sprintf(_('Update of your email address on %s'), $registry->get('GV_homeTitle'));
$body = "<div>" . sprintf(_('Dear %s,'), $display_name) . "</div>\n<br/>\n"; $body = "<div>" . sprintf(_('Dear %s,'), $display_name) . "</div>\n<br/>\n";
@@ -152,30 +126,15 @@ class mail
$to_old = array('email' => $old_email, 'name' => $display_name); $to_old = array('email' => $old_email, 'name' => $display_name);
$to_new = array('email' => $new_email, 'name' => $display_name); $to_new = array('email' => $new_email, 'name' => $display_name);
$res_old = $old_email ? self::send_mail($subject, $body, $to_old) : true; $res_old = $old_email ? self::send_mail($app, $subject, $body, $to_old) : true;
$res_new = $new_email ? self::send_mail($subject, $body, $to_new) : true; $res_new = $new_email ? self::send_mail($app, $subject, $body, $to_new) : true;
return $res_old && $res_new; return $res_old && $res_new;
} }
public static function change_password(User_Adapter $user, $ip, \DateTime $date) public static function send_credentials(Application $app, $url, $login, $email)
{ {
$registry = registry::get_instance(); $registry = $app['phraseanet.registry'];
$subject = sprintf(_('Your account update on %s'), $registry->get('GV_homeTitle'));
$body = "<div>" . sprintf(_('Dear %s,'), $user->get_display_name()) . "</div><br/>\n\n";
$body .= "<div>" . sprintf(_('The password of your account %s has been successfully updated'), $user->get_login()) . "</div><br/>\n\n";
$body .= "<div>" . sprintf(_('For your interest, the request has been done from %s at %s'), $ip, $date->format(DATE_ATOM)) . "</div>\n";
$to = array('email' => $user->get_email(), 'name' => $user->get_email());
return self::send_mail($subject, $body, $to);
}
public static function send_credentials($url, $login, $email)
{
$registry = registry::get_instance();
$subject = sprintf(_('Your account on %s'), $registry->get('GV_homeTitle')); $subject = sprintf(_('Your account on %s'), $registry->get('GV_homeTitle'));
@@ -185,12 +144,12 @@ class mail
$to = array('email' => $email, 'name' => $email); $to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $body, $to); return self::send_mail($app, $subject, $body, $to);
} }
public static function mail_confirm_registered($email) public static function mail_confirm_registered(Application $app, $email)
{ {
$registry = \registry::get_instance(); $registry = $app['phraseanet.registry'];
$subject = _('login::register: sujet email : confirmation de votre adresse email'); $subject = _('login::register: sujet email : confirmation de votre adresse email');
@@ -200,10 +159,10 @@ class mail
$to = array('email' => $email, 'name' => $email); $to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $body, $to); return self::send_mail($app, $subject, $body, $to);
} }
public static function mail_confirm_unregistered($email, array $others) public static function mail_confirm_unregistered(Application $app, $email, array $others)
{ {
$subject = _('login::register: sujet email : confirmation de votre adresse email'); $subject = _('login::register: sujet email : confirmation de votre adresse email');
@@ -219,14 +178,14 @@ class mail
$to = array('email' => $email, 'name' => $email); $to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $body, $to); return self::send_mail($app, $subject, $body, $to);
} }
public static function mail_confirmation($email, $usr_id) public static function mail_confirmation(Application $app, $email, $usr_id)
{ {
$registry = registry::get_instance(); $registry = $app['phraseanet.registry'];
$expire = new DateTime('+3 days'); $expire = new DateTime('+3 days');
$token = random::getUrlToken(\random::TYPE_PASSWORD, $usr_id, $expire, $email); $token = random::getUrlToken($app, \random::TYPE_PASSWORD, $usr_id, $expire, $email);
$subject = _('login::register: sujet email : confirmation de votre adresse email'); $subject = _('login::register: sujet email : confirmation de votre adresse email');
@@ -235,7 +194,7 @@ class mail
$to = array('email' => $email, 'name' => $email); $to = array('email' => $email, 'name' => $email);
return self::send_mail($subject, $body, $to); return self::send_mail($app, $subject, $body, $to);
} }
public static function validateEmail($email) public static function validateEmail($email)
@@ -243,11 +202,9 @@ class mail
return PHPMailer::ValidateAddress($email); return PHPMailer::ValidateAddress($email);
} }
public static function send_mail($subject, $body, $to, $from = false, $files = array(), $reading_confirm_to = false) public static function send_mail(Application $app, $subject, $body, $to, $from = false, $files = array(), $reading_confirm_to = false)
{ {
$Core = \bootstrap::getCore(); $registry = $app['phraseanet.registry'];
$registry = $Core->getRegistry();
if ( ! isset($to['email']) || ! PHPMailer::ValidateAddress($to['email'])) { if ( ! isset($to['email']) || ! PHPMailer::ValidateAddress($to['email'])) {
return false; return false;
@@ -255,8 +212,6 @@ class mail
$mail = new PHPMailer(); $mail = new PHPMailer();
$body = eregi_replace("[\]", '', $body);
$body .= "<br/><br/><br/><br/>\n\n\n\n"; $body .= "<br/><br/><br/><br/>\n\n\n\n";
$body .= '<div style="font-style:italic;">' . _('si cet email contient des liens non cliquables copiez/collez ces liens dans votre navigateur.') . '</div>'; $body .= '<div style="font-style:italic;">' . _('si cet email contient des liens non cliquables copiez/collez ces liens dans votre navigateur.') . '</div>';
$body .= "<br/>\n"; $body .= "<br/>\n";
@@ -270,13 +225,13 @@ class mail
$mail->CharSet = 'utf-8'; $mail->CharSet = 'utf-8';
$mail->Encoding = 'base64'; //'quoted-printable'; $mail->Encoding = 'base64'; //'quoted-printable';
$registry = registry::get_instance(); $registry = $app['phraseanet.registry'];
if ($registry->get('GV_smtp')) { if ($registry->get('GV_smtp')) {
$mail->IsSMTP(); $mail->IsSMTP();
if ($registry->get('GV_smtp_host') != '') if ($registry->get('GV_smtp_host') != '')
$mail->Host = $registry->get('GV_smtp_host'); $mail->Host = $registry->get('GV_smtp_host');
// $mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
if ($registry->get('GV_smtp_auth')) { if ($registry->get('GV_smtp_auth')) {
$mail->SMTPAuth = true; $mail->SMTPAuth = true;
@@ -311,7 +266,7 @@ class mail
$mail->AddAttachment($f); // attachment $mail->AddAttachment($f); // attachment
} }
if ($Core->getConfiguration()->getEnvironnement() !== 'test') { if ($app->getEnvironment() !== 'test') {
$mail->Send(); $mail->Send();
} }

View File

@@ -9,13 +9,14 @@
* file that was distributed with this source code. * file that was distributed with this source code.
*/ */
use Alchemy\Phrasea\Core\Configuration;
class p4file class p4file
{ {
public static function apache_tokenize($file) public static function apache_tokenize(\registry $registry, $file)
{ {
$ret = false; $ret = false;
$registry = registry::get_instance();
if ($registry->get('GV_h264_streaming') && is_file($file)) { if ($registry->get('GV_h264_streaming') && is_file($file)) {
if (($pos = mb_strpos($file, $registry->get('GV_mod_auth_token_directory_path'))) === false) { if (($pos = mb_strpos($file, $registry->get('GV_mod_auth_token_directory_path'))) === false) {
@@ -56,143 +57,4 @@ class p4file
return $ret; return $ret;
} }
public static function archiveFile(system_file &$system_file, $base_id, $delete = true, $name = false)
{
throw new Exception('This method is deprecated');
$appbox = appbox::get_instance(\bootstrap::getCore());
$session = $appbox->get_session();
$registry = $appbox->get_registry();
$system_file->set_phrasea_tech_field(system_file::TECH_FIELD_ORIGINALNAME, $name ? $name : $system_file->getFilename());
$system_file->set_phrasea_tech_field(system_file::TECH_FIELD_PARENTDIRECTORY, null);
$system_file->set_phrasea_tech_field(system_file::TECH_FIELD_SUBPATH, null);
$go = User_Adapter::getInstance($session->get_usr_id(), $appbox)
->ACL()
->has_right_on_base($base_id, 'canaddrecord');
if ( ! $go) {
echo "\ndroits insuffisants";
return false;
}
$sbas_id = phrasea::sbasFromBas($base_id);
$databox = $appbox->get_databox($sbas_id);
$collection = collection::get_from_base_id($base_id);
$collprefs = simplexml_load_string($collection->get_prefs());
$server_coll_id = phrasea::collFromBas($base_id);
if ($collprefs === false) {
if (GV_debug)
echo 'Error loading collprefs';
return false;
}
$metadatas = $system_file->extract_metadatas($databox->get_meta_structure());
$status = "0";
if ($collprefs->status)
$status = (string) ($collprefs->status);
$record_id = $record = false;
try {
$record = record_adapter::create($collection, $system_file, $name);
$record_id = $record->get_record_id();
$record->set_metadatas($metadatas['metadatas'], true);
} catch (Exception $e) {
echo $e->getMessage();
if ($record instanceof record_adapter)
$record->delete();
return false;
}
$record->set_binary_status(databox_status::dec2bin($status));
$record->rebuild_subdefs();
$record->reindex();
if ($delete) {
@unlink($system_file->getPathname());
unset($system_file);
}
return $record_id;
}
public static function check_file_error($filename, $sbas_id, $originalname)
{
throw new Exception('This method is deprecated');
$core = \bootstrap::getCore();
$appbox = \appbox::get_instance($core);
$checks = array();
$system_file = new system_file($filename);
$doctype = $system_file->get_phrasea_type();
$databox = $appbox->get_databox($sbas_id);
if ($baseprefs = $databox->get_sxml_structure()) {
$file_checks = $baseprefs->filechecks;
$checks = $file_checks->$doctype;
$checks = $checks[0];
} else {
throw new Exception(_('prod::erreur : impossible de lire les preferences de base'));
}
$errors = array();
$media = $core['mediavorus']->guess($filename);
$width = $height = 0;
$colorSpace = null;
if ($media instanceof \MediaVorus\Media\Image) {
$width = $media->getWidth();
$height = $media->getHeight();
$colorSpace = strtolower($media->getColorSpace());
}
foreach ($checks as $name => $value) {
switch ($name) {
case 'name':
$records = record_adapter::get_records_by_originalname($databox, $original_name, false, 0, 1);
if (count($records) > 0)
$errors[] = sprintf(_('Le fichier \'%s\' existe deja'), $originalname);
break;
case 'size':
if (min($width, $height) < (int) $value) {
$errors[] = sprintf(_('Taille trop petite : %dpx'), $min);
}
break;
case 'color_space':
$required = strtolower(in_array($value, array('sRGB', 'RGB')) ? 'RGB' : $value);
$go = false;
if ( ! $colorSpace || $required == $colorSpace) {
$go = true;
} elseif ($required == 'rgb' && in_array($colorSpace, array('srgb', 'rgb')) > 0) {
$go = true;
}
if ( ! $go) {
$errors[] = sprintf(_('Mauvais mode colorimetrique : %s'), $colorSpace);
}
break;
}
}
return $errors;
}
} }

View File

@@ -9,6 +9,10 @@
* file that was distributed with this source code. * file that was distributed with this source code.
*/ */
use Alchemy\Phrasea\Application;
use Alchemy\Phrasea\Core\Configuration;
use Alchemy\Phrasea\Exception\RuntimeException;
class phrasea class phrasea
{ {
private static $_bas2sbas = false; private static $_bas2sbas = false;
@@ -26,10 +30,10 @@ class phrasea
const CACHE_SBAS_FROM_BAS = 'sbas_from_bas'; const CACHE_SBAS_FROM_BAS = 'sbas_from_bas';
const CACHE_SBAS_PARAMS = 'sbas_params'; const CACHE_SBAS_PARAMS = 'sbas_params';
public static function is_scheduler_started() public static function is_scheduler_started(Application $app)
{ {
$retval = false; $retval = false;
$conn = connection::getPDOConnection(); $conn = connection::getPDOConnection($app);
$sql = 'SELECT schedstatus FROM sitepreff'; $sql = 'SELECT schedstatus FROM sitepreff';
$stmt = $conn->prepare($sql); $stmt = $conn->prepare($sql);
@@ -44,10 +48,8 @@ class phrasea
return $retval; return $retval;
} }
public static function start(\Alchemy\Phrasea\Core $Core) public static function start(Configuration $configuration)
{ {
$configuration = $Core->getConfiguration();
$choosenConnexion = $configuration->getPhraseanet()->get('database'); $choosenConnexion = $configuration->getPhraseanet()->get('database');
$connexion = $configuration->getConnexion($choosenConnexion); $connexion = $configuration->getConnexion($choosenConnexion);
@@ -58,23 +60,27 @@ class phrasea
$password = $connexion->get('password'); $password = $connexion->get('password');
$dbname = $connexion->get('dbname'); $dbname = $connexion->get('dbname');
if ( ! extension_loaded('phrasea2')) if (!extension_loaded('phrasea2')) {
printf("Missing Extension php-phrasea"); throw new RuntimeException('Phrasea extension is required');
}
if (function_exists('phrasea_conn')) if (!function_exists('phrasea_conn')) {
if (phrasea_conn($hostname, $port, $user, $password, $dbname) !== true) throw new RuntimeException('Phrasea extension requires upgrade');
self::headers(500); }
if (phrasea_conn($hostname, $port, $user, $password, $dbname) !== true) {
throw new RuntimeException('Unable to initialize Phrasea connection');
}
} }
public function getHome($type = 'PUBLI', $context = 'prod') public function getHome(Application $app, $type = 'PUBLI', $context = 'prod')
{ {
$appbox = appbox::get_instance(\bootstrap::getCore()); $appbox = $app['phraseanet.appbox'];
$session = $appbox->get_session();
$registry = $appbox->get_registry(); $registry = $appbox->get_registry();
$user = User_Adapter::getInstance($session->get_usr_id(), $appbox); $user = $app['phraseanet.user'];
if ($type == 'HELP') { if ($type == 'HELP') {
if (file_exists($registry->get('GV_RootPath') . "config/help_" . $session->get_I18n() . ".php")) { if (file_exists($registry->get('GV_RootPath') . "config/help_" . $app['locale.I18n'] . ".php")) {
require($registry->get('GV_RootPath') . "config/help_" . $session->get_I18n() . ".php"); require($registry->get('GV_RootPath') . "config/help_" . $app['locale.I18n'] . ".php");
} elseif (file_exists($registry->get('GV_RootPath') . 'config/help.php')) {// on verifie si il y a une home personnalisee sans langage } elseif (file_exists($registry->get('GV_RootPath') . 'config/help.php')) {// on verifie si il y a une home personnalisee sans langage
require($registry->get('GV_RootPath') . 'config/help.php'); require($registry->get('GV_RootPath') . 'config/help.php');
} else { } else {
@@ -101,7 +107,7 @@ class phrasea
foreach ($searchSet->bases as $bases) foreach ($searchSet->bases as $bases)
$bas = array_merge($bas, $bases); $bas = array_merge($bas, $bases);
} else { } else {
$user = User_Adapter::getInstance($session->get_usr_id(), $appbox); $user = $app['phraseanet.user'];
$bas = array_keys($user->ACL()->get_granted_base()); $bas = array_keys($user->ACL()->get_granted_base());
} }
@@ -150,22 +156,21 @@ class phrasea
return; return;
} }
public static function clear_sbas_params() public static function clear_sbas_params(Application $app)
{ {
self::$_sbas_params = null; self::$_sbas_params = null;
$appbox = appbox::get_instance(\bootstrap::getCore()); $app['phraseanet.appbox']->delete_data_from_cache(self::CACHE_SBAS_PARAMS);
$appbox->delete_data_from_cache(self::CACHE_SBAS_PARAMS);
return true; return true;
} }
public static function sbas_params() public static function sbas_params(Application $app)
{ {
if (self::$_sbas_params) { if (self::$_sbas_params) {
return self::$_sbas_params; return self::$_sbas_params;
} }
$appbox = appbox::get_instance(\bootstrap::getCore()); $appbox = $app['phraseanet.appbox'];
try { try {
self::$_sbas_params = $appbox->get_data_from_cache(self::CACHE_SBAS_PARAMS); self::$_sbas_params = $appbox->get_data_from_cache(self::CACHE_SBAS_PARAMS);
@@ -191,14 +196,13 @@ class phrasea
return self::$_sbas_params; return self::$_sbas_params;
} }
public static function guest_allowed() public static function guest_allowed(Application $app)
{ {
$usr_id = User_Adapter::get_usr_id_from_login('invite'); $usr_id = User_Adapter::get_usr_id_from_login($app, 'invite');
if ( ! $usr_id) { if (!$usr_id) {
return false; return false;
} }
$appbox = appbox::get_instance(\bootstrap::getCore()); $user = User_Adapter::getInstance($usr_id, $app);
$user = User_Adapter::getInstance($usr_id, $appbox);
return count($user->ACL()->get_granted_base()) > 0; return count($user->ACL()->get_granted_base()) > 0;
} }
@@ -243,10 +247,10 @@ class phrasea
return $array; return $array;
} }
public static function sbasFromBas($base_id) public static function sbasFromBas(Application $app, $base_id)
{ {
if ( ! self::$_bas2sbas) { if (!self::$_bas2sbas) {
$appbox = appbox::get_instance(\bootstrap::getCore()); $appbox = $app['phraseanet.appbox'];
try { try {
self::$_bas2sbas = $appbox->get_data_from_cache(self::CACHE_SBAS_FROM_BAS); self::$_bas2sbas = $appbox->get_data_from_cache(self::CACHE_SBAS_FROM_BAS);
} catch (Exception $e) { } catch (Exception $e) {
@@ -267,10 +271,10 @@ class phrasea
return isset(self::$_bas2sbas[$base_id]) ? self::$_bas2sbas[$base_id] : false; return isset(self::$_bas2sbas[$base_id]) ? self::$_bas2sbas[$base_id] : false;
} }
public static function baseFromColl($sbas_id, $coll_id) public static function baseFromColl($sbas_id, $coll_id, Application $app)
{ {
if ( ! self::$_coll2bas) { if (!self::$_coll2bas) {
$conn = connection::getPDOConnection(); $conn = connection::getPDOConnection($app);
$sql = 'SELECT base_id, server_coll_id, sbas_id FROM bas'; $sql = 'SELECT base_id, server_coll_id, sbas_id FROM bas';
$stmt = $conn->prepare($sql); $stmt = $conn->prepare($sql);
$stmt->execute(); $stmt->execute();
@@ -278,7 +282,7 @@ class phrasea
$stmt->closeCursor(); $stmt->closeCursor();
foreach ($rs as $row) { foreach ($rs as $row) {
if ( ! isset(self::$_coll2bas[$row['sbas_id']])) if (!isset(self::$_coll2bas[$row['sbas_id']]))
self::$_coll2bas[$row['sbas_id']] = array(); self::$_coll2bas[$row['sbas_id']] = array();
self::$_coll2bas[$row['sbas_id']][$row['server_coll_id']] = (int) $row['base_id']; self::$_coll2bas[$row['sbas_id']][$row['server_coll_id']] = (int) $row['base_id'];
} }
@@ -287,10 +291,9 @@ class phrasea
return isset(self::$_coll2bas[$sbas_id][$coll_id]) ? self::$_coll2bas[$sbas_id][$coll_id] : false; return isset(self::$_coll2bas[$sbas_id][$coll_id]) ? self::$_coll2bas[$sbas_id][$coll_id] : false;
} }
public static function reset_baseDatas() public static function reset_baseDatas(appbox $appbox)
{ {
self::$_coll2bas = self::$_bas2coll = self::$_bas_names = self::$_bas2sbas = null; self::$_coll2bas = self::$_bas2coll = self::$_bas_names = self::$_bas2sbas = null;
$appbox = appbox::get_instance(\bootstrap::getCore());
$appbox->delete_data_from_cache( $appbox->delete_data_from_cache(
array( array(
self::CACHE_BAS_2_COLL self::CACHE_BAS_2_COLL
@@ -303,10 +306,9 @@ class phrasea
return; return;
} }
public static function reset_sbasDatas() public static function reset_sbasDatas(appbox $appbox)
{ {
self::$_sbas_names = self::$_sbas_params = self::$_bas2sbas = null; self::$_sbas_names = self::$_sbas_params = self::$_bas2sbas = null;
$appbox = appbox::get_instance(\bootstrap::getCore());
$appbox->delete_data_from_cache( $appbox->delete_data_from_cache(
array( array(
self::CACHE_SBAS_NAMES self::CACHE_SBAS_NAMES
@@ -318,10 +320,10 @@ class phrasea
return; return;
} }
public static function collFromBas($base_id) public static function collFromBas(Application $app, $base_id)
{ {
if ( ! self::$_bas2coll) { if (!self::$_bas2coll) {
$conn = connection::getPDOConnection(); $conn = connection::getPDOConnection($app);
$sql = 'SELECT base_id, server_coll_id FROM bas'; $sql = 'SELECT base_id, server_coll_id FROM bas';
$stmt = $conn->prepare($sql); $stmt = $conn->prepare($sql);
$stmt->execute(); $stmt->execute();
@@ -336,10 +338,10 @@ class phrasea
return isset(self::$_bas2coll[$base_id]) ? self::$_bas2coll[$base_id] : false; return isset(self::$_bas2coll[$base_id]) ? self::$_bas2coll[$base_id] : false;
} }
public static function sbas_names($sbas_id) public static function sbas_names($sbas_id, Application $app)
{ {
if ( ! self::$_sbas_names) { if (!self::$_sbas_names) {
$appbox = appbox::get_instance(\bootstrap::getCore()); $appbox = $app['phraseanet.appbox'];
try { try {
self::$_sbas_names = $appbox->get_data_from_cache(self::CACHE_SBAS_NAMES); self::$_sbas_names = $appbox->get_data_from_cache(self::CACHE_SBAS_NAMES);
} catch (Exception $e) { } catch (Exception $e) {
@@ -360,10 +362,10 @@ class phrasea
return isset(self::$_sbas_names[$sbas_id]) ? self::$_sbas_names[$sbas_id] : 'Unknown base'; return isset(self::$_sbas_names[$sbas_id]) ? self::$_sbas_names[$sbas_id] : 'Unknown base';
} }
public static function bas_names($base_id) public static function bas_names($base_id, Application $app)
{ {
if ( ! self::$_bas_names) { if (!self::$_bas_names) {
$appbox = appbox::get_instance(\bootstrap::getCore()); $appbox = $app['phraseanet.appbox'];
try { try {
self::$_bas_names = $appbox->get_data_from_cache(self::CACHE_BAS_NAMES); self::$_bas_names = $appbox->get_data_from_cache(self::CACHE_BAS_NAMES);
} catch (Exception $e) { } catch (Exception $e) {
@@ -423,9 +425,9 @@ class phrasea
return; return;
} }
public static function scheduler_key($renew = false) public static function scheduler_key(Application $app, $renew = false)
{ {
$conn = connection::getPDOConnection(); $conn = connection::getPDOConnection($app);
$schedulerkey = false; $schedulerkey = false;

View File

@@ -1,5 +1,7 @@
<?php <?php
use Alchemy\Phrasea\Application;
/* /*
* Phraseanet Date class, mostly inspired by : * Phraseanet Date class, mostly inspired by :
* *
@@ -16,16 +18,21 @@
class phraseadate class phraseadate
{ {
private $app;
public function __construct(Application $app)
{
$this->app = $app;
}
/** /**
* *
* @param DateTime $date * @param DateTime $date
* @return string * @return string
*/ */
public static function getTime(DateTime $date) public function getTime(DateTime $date)
{ {
$locale = Session_Handler::get_locale(); switch ($this->app['locale']) {
switch ($locale) {
default: default:
case 'fr_FR': case 'fr_FR':
case 'de_DE': case 'de_DE':
@@ -44,7 +51,7 @@ class phraseadate
* @param DateTime $date * @param DateTime $date
* @return string * @return string
*/ */
public static function getDate(DateTime $date) public function getDate(DateTime $date)
{ {
$compareTo = new DateTime('now'); $compareTo = new DateTime('now');
$diff = $compareTo->format('U') - $date->format('U'); $diff = $compareTo->format('U') - $date->format('U');
@@ -55,9 +62,9 @@ class phraseadate
} }
if ($dayDiff < 365) { if ($dayDiff < 365) {
return self::formatDate($date, Session_Handler::get_locale(), 'DAY_MONTH'); return $this->formatDate($date, $this->app['locale'], 'DAY_MONTH');
} else { } else {
return self::formatDate($date, Session_Handler::get_locale(), 'DAY_MONTH_YEAR'); return $this->formatDate($date, $this->app['locale'], 'DAY_MONTH_YEAR');
} }
} }
@@ -66,7 +73,7 @@ class phraseadate
* @param DateTime $date * @param DateTime $date
* @return string * @return string
*/ */
public static function getPrettyString(DateTime $date = null) public function getPrettyString(DateTime $date = null)
{ {
if (is_null($date)) { if (is_null($date)) {
return null; return null;
@@ -80,7 +87,7 @@ class phraseadate
return ''; return '';
} }
$date_string = self::formatDate($date, Session_Handler::get_locale(), 'DAY_MONTH'); $date_string = $this->formatDate($date, $this->app['locale'], 'DAY_MONTH');
if ($dayDiff == 0) { if ($dayDiff == 0) {
if ($diff < 60) { if ($diff < 60) {
@@ -101,7 +108,7 @@ class phraseadate
} elseif ($dayDiff < 365 && $dayDiff > 0) { } elseif ($dayDiff < 365 && $dayDiff > 0) {
return $date_string; return $date_string;
} else { } else {
return self::formatDate($date, Session_Handler::get_locale(), 'DAY_MONTH_YEAR'); return $this->formatDate($date, $this->app['locale'], 'DAY_MONTH_YEAR');
} }
} }
@@ -110,7 +117,7 @@ class phraseadate
* @param DateTime $date * @param DateTime $date
* @return string * @return string
*/ */
public static function format_mysql(DateTime $date) public function format_mysql(DateTime $date)
{ {
return $date->format(DATE_ISO8601); return $date->format(DATE_ISO8601);
} }
@@ -171,7 +178,7 @@ class phraseadate
* @param string $format * @param string $format
* @return string * @return string
*/ */
public static function isodateToDate($isodelimdate, $format) public function isodateToDate($isodelimdate, $format)
{ {
$tc = array(); $tc = array();
$bal = array(); $bal = array();
@@ -234,7 +241,7 @@ class phraseadate
* @param string $format * @param string $format
* @return string * @return string
*/ */
public static function dateToIsodate($strdate, $format) public function dateToIsodate($strdate, $format)
{ {
$v_y = $v_m = $v_d = $v_h = $v_n = $v_s = 0; $v_y = $v_m = $v_d = $v_h = $v_n = $v_s = 0;
$v = str_replace( $v = str_replace(

View File

@@ -9,6 +9,8 @@
* file that was distributed with this source code. * file that was distributed with this source code.
*/ */
use Alchemy\Phrasea\Core\Configuration;
/** /**
* *
* *
@@ -18,23 +20,19 @@
class queries class queries
{ {
public static function tree_topics() public static function tree_topics($I18N)
{ {
$appbox = appbox::get_instance(\bootstrap::getCore());
$session = $appbox->get_session();
$registry = $appbox->get_registry();
$out = ''; $out = '';
$xmlTopics = null; $xmlTopics = null;
$sxTopics = null; $sxTopics = null;
if (file_exists($registry->get('GV_RootPath') . 'config/topics/topics_' . $session->get_I18n() . '.xml')) if (file_exists(__DIR__ . '/../../config/topics/topics_' . $I18N . '.xml'))
$xmlTopics = $registry->get('GV_RootPath') . 'config/topics/topics_' . $session->get_I18n() . '.xml'; $xmlTopics = __DIR__ . '/../../config/topics/topics_' . $I18N . '.xml';
if ( ! $xmlTopics) { if ( ! $xmlTopics) {
if (file_exists($registry->get('GV_RootPath') . 'config/topics/topics.xml')) { if (file_exists(__DIR__ . '/../../config/topics/topics.xml')) {
$xmlTopics = $registry->get('GV_RootPath') . 'config/topics/topics.xml'; $xmlTopics = __DIR__ . '/../../config/topics/topics.xml';
} }
} }
@@ -65,40 +63,32 @@ class queries
return $out; return $out;
} }
public static function topics_exists() public static function topics_exists($I18n)
{ {
$appbox = appbox::get_instance(\bootstrap::getCore()); if (file_exists(__DIR__ . '/../../config/topics/topics_' . $I18n . '.xml')) {
$session = $appbox->get_session();
$registry = $appbox->get_registry();
if (file_exists($registry->get('GV_RootPath') . 'config/topics/topics_' . $session->get_I18n() . '.xml')) {
return true; return true;
} }
if (file_exists($registry->get('GV_RootPath') . 'config/topics/topics.xml')) { if (file_exists(__DIR__ . '/../../config/topics/topics.xml')) {
return true; return true;
} }
return false; return false;
} }
public static function dropdown_topics() public static function dropdown_topics($I18n)
{ {
$appbox = appbox::get_instance(\bootstrap::getCore());
$session = $appbox->get_session();
$registry = $appbox->get_registry();
$out = ''; $out = '';
$xmlTopics = ''; $xmlTopics = '';
$sxTopics = null; $sxTopics = null;
if (file_exists($registry->get('GV_RootPath') . 'config/topics/topics_' . $session->get_I18n() . '.xml')) if (file_exists(__DIR__ . '/../../config/topics/topics_' . $I18n . '.xml'))
$xmlTopics = $registry->get('GV_RootPath') . 'config/topics/topics_' . $session->get_I18n() . '.xml'; $xmlTopics = __DIR__ . '/../../config/topics/topics_' . $I18n . '.xml';
if ($xmlTopics == '') { if ($xmlTopics == '') {
if (file_exists($registry->get('GV_RootPath') . 'config/topics/topics.xml')) { if (file_exists(__DIR__ . '/../../config/topics/topics.xml')) {
$xmlTopics = $registry->get('GV_RootPath') . 'config/topics/topics.xml'; $xmlTopics = __DIR__ . '/../../config/topics/topics.xml';
} }
} }
@@ -200,14 +190,10 @@ class queries
return $out; return $out;
} }
public static function history() public static function history(appbox $appbox, $usr_id)
{ {
$appbox = appbox::get_instance(\bootstrap::getCore());
$session = $appbox->get_session();
$conn = $appbox->get_connection(); $conn = $appbox->get_connection();
$usr_id = $session->get_usr_id();
$sql = "SELECT query from dsel where usr_id = :usr_id $sql = "SELECT query from dsel where usr_id = :usr_id
ORDER BY id DESC LIMIT 0,25"; ORDER BY id DESC LIMIT 0,25";
@@ -219,8 +205,6 @@ class queries
$history = '<ul>'; $history = '<ul>';
foreach ($rs as $row) { foreach ($rs as $row) {
$longueur = strlen($row["query"]);
$history .= '<li onclick="doSpecialSearch(\'' . str_replace(array("'", '"'), array("\'", '&quot;'), $row["query"]) . '\')">' . $row["query"] . '</li>'; $history .= '<li onclick="doSpecialSearch(\'' . str_replace(array("'", '"'), array("\'", '&quot;'), $row["query"]) . '\')">' . $row["query"] . '</li>';
} }

View File

@@ -9,6 +9,8 @@
* file that was distributed with this source code. * file that was distributed with this source code.
*/ */
use Alchemy\Phrasea\Application;
class random class random
{ {
/** /**
@@ -36,14 +38,13 @@ class random
* *
* @return Void * @return Void
*/ */
public static function cleanTokens() public static function cleanTokens(Application $app)
{ {
try { try {
$conn = connection::getPDOConnection(); $conn = connection::getPDOConnection($app);
$date = new DateTime(); $date = new DateTime();
$date = phraseadate::format_mysql($date); $date = $app['date-formatter']->format_mysql($date);
$registry = registry::get_instance();
$sql = 'SELECT * FROM tokens WHERE expire_on < :date $sql = 'SELECT * FROM tokens WHERE expire_on < :date
AND datas IS NOT NULL AND (type="download" OR type="email")'; AND datas IS NOT NULL AND (type="download" OR type="email")';
@@ -55,7 +56,7 @@ class random
switch ($row['type']) { switch ($row['type']) {
case 'download': case 'download':
case 'email': case 'email':
$file = $registry->get('GV_RootPath') . 'tmp/download/' . $row['value'] . '.zip'; $file = __DIR__ . '/../../tmp/download/' . $row['value'] . '.zip';
if (is_file($file)) if (is_file($file))
unlink($file); unlink($file);
break; break;
@@ -108,10 +109,10 @@ class random
* @param mixed content $datas * @param mixed content $datas
* @return boolean * @return boolean
*/ */
public static function getUrlToken($type, $usr, DateTime $end_date = null, $datas = '') public static function getUrlToken(Application $app, $type, $usr, DateTime $end_date = null, $datas = '')
{ {
self::cleanTokens(); self::cleanTokens($app);
$conn = connection::getPDOConnection(); $conn = connection::getPDOConnection($app);
$token = $test = false; $token = $test = false;
switch ($type) { switch ($type) {
@@ -164,12 +165,12 @@ class random
return $token; return $token;
} }
public static function removeToken($token) public static function removeToken(Application $app, $token)
{ {
self::cleanTokens(); self::cleanTokens($app);
try { try {
$conn = connection::getPDOConnection(); $conn = connection::getPDOConnection($app);
$sql = 'DELETE FROM tokens WHERE value = :token'; $sql = 'DELETE FROM tokens WHERE value = :token';
$stmt = $conn->prepare($sql); $stmt = $conn->prepare($sql);
$stmt->execute(array(':token' => $token)); $stmt->execute(array(':token' => $token));
@@ -183,10 +184,10 @@ class random
return false; return false;
} }
public static function updateToken($token, $datas) public static function updateToken(Application $app, $token, $datas)
{ {
try { try {
$conn = connection::getPDOConnection(); $conn = connection::getPDOConnection($app);
$sql = 'UPDATE tokens SET datas = :datas $sql = 'UPDATE tokens SET datas = :datas
WHERE value = :token'; WHERE value = :token';
@@ -203,11 +204,11 @@ class random
return false; return false;
} }
public static function helloToken($token) public static function helloToken(Application $app, $token)
{ {
self::cleanTokens(); self::cleanTokens($app);
$conn = connection::getPDOConnection(); $conn = connection::getPDOConnection($app);
$sql = 'SELECT * FROM tokens $sql = 'SELECT * FROM tokens
WHERE value = :token WHERE value = :token
AND (expire_on > NOW() OR expire_on IS NULL)'; AND (expire_on > NOW() OR expire_on IS NULL)';
@@ -230,9 +231,9 @@ class random
* @return string The desired token * @return string The desired token
* @throws \Exception_NotFound * @throws \Exception_NotFound
*/ */
public static function getValidationToken($userId, $basketId) public static function getValidationToken(Application $app, $userId, $basketId)
{ {
$conn = \connection::getPDOConnection(); $conn = \connection::getPDOConnection($app);
$sql = ' $sql = '
SELECT value FROM tokens SELECT value FROM tokens
WHERE type = :type WHERE type = :type

View File

@@ -9,6 +9,9 @@
* file that was distributed with this source code. * file that was distributed with this source code.
*/ */
use Alchemy\Phrasea\Application;
use Alchemy\Phrasea\Cache\ArrayCache;
/** /**
* *
* @license http://opensource.org/licenses/gpl-3.0 GPLv3 * @license http://opensource.org/licenses/gpl-3.0 GPLv3
@@ -27,6 +30,7 @@ class registry implements registryInterface
* @var registry * @var registry
*/ */
protected static $_instance; protected static $_instance;
protected $app;
const TYPE_BOOLEAN = 'boolean'; const TYPE_BOOLEAN = 'boolean';
const TYPE_ARRAY = 'array'; const TYPE_ARRAY = 'array';
@@ -34,35 +38,21 @@ class registry implements registryInterface
const TYPE_INTEGER = 'integer'; const TYPE_INTEGER = 'integer';
const TYPE_STRING = 'string'; const TYPE_STRING = 'string';
/**
*
* @return registry
*/
public static function get_instance()
{
if ( ! self::$_instance instanceof self) {
self::$_instance = new self();
}
return self::$_instance;
}
/** /**
* *
* @param \Alchemy\Phrasea\Cache\Cache $cache * @param \Alchemy\Phrasea\Cache\Cache $cache
* @return registry * @return registry
*/ */
protected function __construct() public function __construct(Application $app)
{ {
$this->cache = new Alchemy\Phrasea\Cache\ArrayCache(); $this->app = $app;
$this->cache = new ArrayCache();
$configuration = \Alchemy\Phrasea\Core\Configuration::build();
$this->cache->save('GV_RootPath', dirname(dirname(__DIR__)) . '/'); $this->cache->save('GV_RootPath', dirname(dirname(__DIR__)) . '/');
if ($configuration->isInstalled()) { if ($app['phraseanet.configuration']->isInstalled()) {
$this->cache->save('GV_ServerName', $configuration->getPhraseanet()->get('servername')); $this->cache->save('GV_ServerName', $app['phraseanet.configuration']->getPhraseanet()->get('servername'));
$this->cache->save('GV_debug', $configuration->isDebug()); $this->cache->save('GV_debug', $app['phraseanet.configuration']->isDebug());
$this->cache->save('GV_maintenance', $configuration->isMaintained()); $this->cache->save('GV_maintenance', $app['phraseanet.configuration']->isMaintained());
} }
return $this; return $this;
@@ -78,7 +68,7 @@ class registry implements registryInterface
$rs = array(); $rs = array();
$loaded = false; $loaded = false;
try { try {
$conn = connection::getPDOConnection(); $conn = connection::getPDOConnection($this->app);
$sql = 'SELECT `key`, `value`, `type` FROM registry'; $sql = 'SELECT `key`, `value`, `type` FROM registry';
$stmt = $conn->prepare($sql); $stmt = $conn->prepare($sql);
$stmt->execute(); $stmt->execute();
@@ -95,7 +85,7 @@ class registry implements registryInterface
switch ($row['type']) { switch ($row['type']) {
case self::TYPE_BOOLEAN: case self::TYPE_BOOLEAN:
$value = ! ! $row['value']; $value = !!$row['value'];
break; break;
case self::TYPE_INTEGER: case self::TYPE_INTEGER:
$value = (int) $row['value']; $value = (int) $row['value'];
@@ -126,10 +116,10 @@ class registry implements registryInterface
*/ */
public function get($key, $defaultvalue = null) public function get($key, $defaultvalue = null)
{ {
if ( ! $this->cache->contains($key)) if (!$this->cache->contains($key))
$this->load(); $this->load();
if ( ! $this->cache->contains($key) && ! is_null($defaultvalue)) { if (!$this->cache->contains($key) && !is_null($defaultvalue)) {
return $defaultvalue; return $defaultvalue;
} }
@@ -159,7 +149,7 @@ class registry implements registryInterface
break; break;
case self::TYPE_BOOLEAN: case self::TYPE_BOOLEAN:
$sql_value = $value ? '1' : '0'; $sql_value = $value ? '1' : '0';
$value = ! ! $value; $value = !!$value;
break; break;
case self::TYPE_INTEGER: case self::TYPE_INTEGER:
$sql_value = (int) $value; $sql_value = (int) $value;
@@ -167,7 +157,7 @@ class registry implements registryInterface
break; break;
} }
$conn = connection::getPDOConnection(); $conn = connection::getPDOConnection($this->app);
$sql = 'REPLACE INTO registry (`id`, `key`, `value`, `type`) $sql = 'REPLACE INTO registry (`id`, `key`, `value`, `type`)
VALUES (null, :key, :value, :type)'; VALUES (null, :key, :value, :type)';
@@ -200,7 +190,7 @@ class registry implements registryInterface
public function un_set($key) public function un_set($key)
{ {
$this->load(); $this->load();
$conn = connection::getPDOConnection(); $conn = connection::getPDOConnection($this->app);
$sql = 'DELETE FROM registry WHERE `key` = :key'; $sql = 'DELETE FROM registry WHERE `key` = :key';
$stmt = $conn->prepare($sql); $stmt = $conn->prepare($sql);

View File

@@ -8,6 +8,8 @@
* file that was distributed with this source code. * file that was distributed with this source code.
*/ */
use Alchemy\Phrasea\Application;
/** /**
* *
* This file MUST NOT contains any default PHP function as * This file MUST NOT contains any default PHP function as
@@ -144,12 +146,12 @@ class setup
return; return;
} }
public function create_global_values(registryInterface &$registry, $datas = array()) public function create_global_values(Application $app, $datas = array())
{ {
require(__DIR__ . "/../../lib/conf.d/_GV_template.inc"); require(__DIR__ . "/../../lib/conf.d/_GV_template.inc");
if ($registry->is_set('GV_timezone')) if ($app['phraseanet.registry']->is_set('GV_timezone'))
date_default_timezone_set($registry->get('GV_timezone')); date_default_timezone_set($app['phraseanet.registry']->get('GV_timezone'));
else else
date_default_timezone_set('Europe/Berlin'); date_default_timezone_set('Europe/Berlin');
@@ -240,7 +242,10 @@ class setup
if ($error === false) { if ($error === false) {
foreach ($vars as $key => $values) { foreach ($vars as $key => $values) {
$registry->set($key, $values['value'], $values['type']); if ($key == 'GV_sit' && null !== $app['phraseanet.registry']->get('GV_sit')) {
continue;
}
$app['phraseanet.registry']->set($key, $values['value'], $values['type']);
} }
return true; return true;
@@ -352,305 +357,302 @@ class setup
); );
} }
public static function check_phrasea()
public static function check_phrasea() {
{ $constraints = array();
$constraints = array(); if (function_exists('phrasea_info')) {
if (function_exists('phrasea_info')) { foreach (phrasea_info() as $name => $value) {
foreach (phrasea_info() as $name => $value) { switch ($name) {
switch ($name) { default:
default: $result = true;
$result = true; $message = $name . ' = ' . $value;
$message = $name . ' = ' . $value; break;
break; case 'temp_writable':
case 'temp_writable': $result = $value == '1';
$result = $value == '1'; if ($result)
if ($result) $message = 'Directory is writeable';
$message = 'Directory is writeable'; else
else $message = 'Directory MUST be writable';
$message = 'Directory MUST be writable'; break;
break; case 'version':
case 'version': $result = version_compare($value, '1.18.0.3', '>=');
$result = version_compare($value, '1.18.0.3', '>='); if ($result)
if ($result) $message = sprintf('Phrasea version %s is ok', $value);
$message = sprintf('Phrasea version %s is ok', $value); else
else $message = sprintf('Phrasea version %s is NOT ok', $value);
$message = sprintf('Phrasea version %s is NOT ok', $value); break;
break;
}
$blocker = $name == 'temp_writable' ? ($value ? '' : 'blocker') : '';
$constraints[] = new Setup_Constraint($name, $result, $message, true);
} }
$blocker = $name == 'temp_writable' ? ($value ? '' : 'blocker') : '';
$constraints[] = new Setup_Constraint($name, $result, $message, true);
} }
return new Setup_ConstraintsIterator($constraints);
} }
public static function check_writability(registryInterface $registry) return new Setup_ConstraintsIterator($constraints);
{ }
$root = p4string::addEndSlash(realpath(__DIR__ . '/../../'));
$pathes = array( public static function check_writability(registryInterface $registry)
$root . 'config', {
$root . 'config/stamp', $root = p4string::addEndSlash(realpath(__DIR__ . '/../../'));
$root . 'config/status',
$root . 'config/minilogos',
$root . 'config/templates',
$root . 'config/topics',
$root . 'config/wm',
$root . 'logs',
$root . 'tmp',
$root . 'www/custom',
$root . 'tmp/locks',
$root . 'tmp/cache_twig',
$root . 'tmp/cache_minify',
$root . 'tmp/lazaret',
$root . 'tmp/desc_tmp',
$root . 'tmp/download',
$root . 'tmp/batches');
if ($registry->is_set('GV_base_datapath_noweb')) { $pathes = array(
$pathes[] = $registry->get('GV_base_datapath_noweb'); $root . 'config',
} $root . 'config/stamp',
$root . 'config/status',
$root . 'config/minilogos',
$root . 'config/templates',
$root . 'config/topics',
$root . 'config/wm',
$root . 'logs',
$root . 'tmp',
$root . 'www/custom',
$root . 'tmp/locks',
$root . 'tmp/cache_twig',
$root . 'tmp/cache_minify',
$root . 'tmp/lazaret',
$root . 'tmp/desc_tmp',
$root . 'tmp/download',
$root . 'tmp/batches');
$constraints = array(); if ($registry->is_set('GV_base_datapath_noweb')) {
$pathes[] = $registry->get('GV_base_datapath_noweb');
foreach ($pathes as $p) {
if (!is_writable($p)) {
$message = sprintf('%s not writeable', $p);
} else {
$message = sprintf('%s OK', $p);
}
$constraints[] = new Setup_Constraint(
'Writeability test', is_writable($p), $message, true
);
}
$php_constraints = new Setup_ConstraintsIterator($constraints);
return $php_constraints;
} }
/** $constraints = array();
*
*/ foreach ($pathes as $p) {
public static function check_php_version() if (!is_writable($p)) {
{ $message = sprintf('%s not writeable', $p);
$version_ok = version_compare(PHP_VERSION, '5.3.3', '>');
if (!$version_ok) {
$message = sprintf(
'Wrong PHP version : % ; PHP >= 5.3.3 required'
, PHP_VERSION
);
} else { } else {
$message = sprintf('PHP version OK : %s', PHP_VERSION); $message = sprintf('%s OK', $p);
} }
$constraints = array(
new Setup_Constraint('PHP Version', $version_ok, $message) $constraints[] = new Setup_Constraint(
'Writeability test', is_writable($p), $message, true
); );
return new Setup_ConstraintsIterator($constraints);
} }
$php_constraints = new Setup_ConstraintsIterator($constraints);
public static function check_php_extension() return $php_constraints;
{ }
$constraints = array();
foreach (self::$PHP_EXT as $ext) {
if ('pcntl' === $ext && 0 === stripos(strtolower(PHP_OS), 'win')) { /**
continue; *
} */
public static function check_php_version()
{
$version_ok = version_compare(PHP_VERSION, '5.3.3', '>');
if (!$version_ok) {
$message = sprintf(
'Wrong PHP version : % ; PHP >= 5.3.3 required'
, PHP_VERSION
);
} else {
$message = sprintf('PHP version OK : %s', PHP_VERSION);
}
$constraints = array(
new Setup_Constraint('PHP Version', $version_ok, $message)
);
if (extension_loaded($ext) !== true) { return new Setup_ConstraintsIterator($constraints);
$blocker = true; }
if (in_array($ext, array('ftp', 'twig', 'gmagick', 'imagick', 'pcntl'))) {
$blocker = false;
}
$constraints[] = new Setup_Constraint(sprintf('Extension %s', $ext), false, sprintf('%s missing', $ext), $blocker); public static function check_php_extension()
} else { {
$constraints[] = new Setup_Constraint(sprintf('Extension %s', $ext), true, sprintf('%s loaded', $ext)); $constraints = array();
} foreach (self::$PHP_EXT as $ext) {
if ('pcntl' === $ext && 0 === stripos(strtolower(PHP_OS), 'win')) {
continue;
} }
return new Setup_ConstraintsIterator($constraints); if (extension_loaded($ext) !== true) {
} $blocker = true;
if (in_array($ext, array('ftp', 'twig', 'gmagick', 'imagick', 'pcntl'))) {
public static function check_cache_server() $blocker = false;
{
$availables_caches = array('memcache', 'redis');
$constraints = array();
foreach ($availables_caches as $ext) {
if (extension_loaded($ext) === true) {
$constraints[] = new Setup_Constraint(sprintf('Extension %s', $ext), true, sprintf('%s loaded', $ext), false);
} else
$constraints[] = new Setup_Constraint(sprintf('Extension %s', $ext), false, sprintf('%s not loaded', $ext), false);
}
return new Setup_ConstraintsIterator($constraints);
}
public static function check_cache_opcode()
{
$availables = array('XCache', 'apc', 'eAccelerator', 'phpa', 'WinCache');
$constraints = array();
$found = 0;
foreach ($availables as $ext) {
if (extension_loaded($ext) === true) {
$constraints[] = new Setup_Constraint($ext, true, sprintf('%s loaded', $ext), false);
$found++;
} }
$constraints[] = new Setup_Constraint(sprintf('Extension %s', $ext), false, sprintf('%s missing', $ext), $blocker);
} else {
$constraints[] = new Setup_Constraint(sprintf('Extension %s', $ext), true, sprintf('%s loaded', $ext));
} }
if ($found > 1)
$constraints[] = new Setup_Constraint('Multiple opcode caches', false, _('Many opcode cache load is forbidden'), true);
if ($found === 0)
$constraints[] = new Setup_Constraint('No opcode cache', false, _('No opcode cache were detected. Phraseanet strongly recommends the use of XCache or APC.'), false);
return new Setup_ConstraintsIterator($constraints);
} }
public static function check_php_configuration() return new Setup_ConstraintsIterator($constraints);
{ }
$nonblockers = array('log_errors', 'display_startup_errors', 'display_errors', 'output_buffering');
$constraints = array(); public static function check_cache_server()
foreach (self::$PHP_REQ as $conf => $value) { {
if (($tmp = self::test_php_conf($conf, $value)) !== $value) { $availables_caches = array('memcache', 'redis');
$constraints[] = new Setup_Constraint($conf, false, sprintf(_('setup::Configuration mauvaise : pour la variable %1$s, configuration donnee : %2$s ; attendue : %3$s'), $conf, $tmp, $value), true);
} else { $constraints = array();
$constraints[] = new Setup_Constraint($conf, true, sprintf('%s = `%s` => OK', $conf, $value), true); foreach ($availables_caches as $ext) {
} if (extension_loaded($ext) === true) {
$constraints[] = new Setup_Constraint(sprintf('Extension %s', $ext), true, sprintf('%s loaded', $ext), false);
} else
$constraints[] = new Setup_Constraint(sprintf('Extension %s', $ext), false, sprintf('%s not loaded', $ext), false);
}
return new Setup_ConstraintsIterator($constraints);
}
public static function check_cache_opcode()
{
$availables = array('XCache', 'apc', 'eAccelerator', 'phpa', 'WinCache');
$constraints = array();
$found = 0;
foreach ($availables as $ext) {
if (extension_loaded($ext) === true) {
$constraints[] = new Setup_Constraint($ext, true, sprintf('%s loaded', $ext), false);
$found++;
} }
foreach (self::$PHP_CONF as $conf => $value) { }
if ($conf == 'memory_limit') {
$memoryFound = self::test_php_conf($conf, $value);
switch (strtolower(substr($memoryFound, -1))) {
case 'g':
$memoryFound *= 1024;
case 'm':
$memoryFound *= 1024;
case 'k':
$memoryFound *= 1024;
}
$memoryRequired = $value; if ($found > 1)
switch (strtolower(substr($memoryRequired, -1))) { $constraints[] = new Setup_Constraint('Multiple opcode caches', false, _('Many opcode cache load is forbidden'), true);
case 'g': if ($found === 0)
$memoryRequired *= 1024; $constraints[] = new Setup_Constraint('No opcode cache', false, _('No opcode cache were detected. Phraseanet strongly recommends the use of XCache or APC.'), false);
case 'm':
$memoryRequired *= 1024;
case 'k':
$memoryRequired *= 1024;
}
if ($memoryFound >= $memoryRequired) { return new Setup_ConstraintsIterator($constraints);
$constraints[] = new Setup_Constraint($conf, true, sprintf('%s = `%s` => OK', $conf, $value), !in_array($conf, $nonblockers)); }
} else {
$constraints[] = new Setup_Constraint($conf, false, sprintf('Bad configuration for %1$s, found `%2$s`, required `%3$s`', $conf, $tmp, $value), !in_array($conf, $nonblockers)); public static function check_php_configuration()
} {
} elseif (($tmp = self::test_php_conf($conf, $value)) !== $value) { $nonblockers = array('log_errors', 'display_startup_errors', 'display_errors', 'output_buffering', 'error_reporting');
$constraints[] = new Setup_Constraint($conf, false, sprintf('Bad configuration for %1$s, found `%2$s`, required `%3$s`', $conf, $tmp, $value), !in_array($conf, $nonblockers));
} else { $constraints = array();
foreach (self::$PHP_REQ as $conf => $value) {
if (($tmp = self::test_php_conf($conf, $value)) !== $value) {
$constraints[] = new Setup_Constraint($conf, false, sprintf(_('setup::Configuration mauvaise : pour la variable %1$s, configuration donnee : %2$s ; attendue : %3$s'), $conf, $tmp, $value), true);
} else {
$constraints[] = new Setup_Constraint($conf, true, sprintf('%s = `%s` => OK', $conf, $value), true);
}
}
foreach (self::$PHP_CONF as $conf => $value) {
if ($conf == 'memory_limit') {
$memoryFound = self::test_php_conf($conf, $value);
switch (strtolower(substr($memoryFound, -1))) {
case 'g':
$memoryFound *= 1024;
case 'm':
$memoryFound *= 1024;
case 'k':
$memoryFound *= 1024;
}
$memoryRequired = $value;
switch (strtolower(substr($memoryRequired, -1))) {
case 'g':
$memoryRequired *= 1024;
case 'm':
$memoryRequired *= 1024;
case 'k':
$memoryRequired *= 1024;
}
if ($memoryFound >= $memoryRequired) {
$constraints[] = new Setup_Constraint($conf, true, sprintf('%s = `%s` => OK', $conf, $value), !in_array($conf, $nonblockers)); $constraints[] = new Setup_Constraint($conf, true, sprintf('%s = `%s` => OK', $conf, $value), !in_array($conf, $nonblockers));
}
}
return new Setup_ConstraintsIterator($constraints);
}
/**
*
* @return Setup_ConstraintsIterator
*/
public static function check_system_locales()
{
$constraints = array();
if (!extension_loaded('gettext')) {
return new Setup_ConstraintsIterator($constraints);
}
foreach (User_Adapter::$locales as $code => $language_name) {
phrasea::use_i18n($code, 'test');
if (_('test::test') == 'test') {
$constraints[] = new Setup_Constraint($language_name, true, sprintf('Locale %s (%s) ok', $language_name, $code), false);
} else { } else {
$constraints[] = new Setup_Constraint($language_name, false, sprintf('Locale %s (%s) not installed', $language_name, $code), false); $constraints[] = new Setup_Constraint($conf, false, sprintf('Bad configuration for %1$s, found `%2$s`, required `%3$s`', $conf, $tmp, $value), !in_array($conf, $nonblockers));
} }
} elseif (($tmp = self::test_php_conf($conf, $value)) !== $value) {
$constraints[] = new Setup_Constraint($conf, false, sprintf('Bad configuration for %1$s, found `%2$s`, required `%3$s`', $conf, $tmp, $value), !in_array($conf, $nonblockers));
} else {
$constraints[] = new Setup_Constraint($conf, true, sprintf('%s = `%s` => OK', $conf, $value), !in_array($conf, $nonblockers));
} }
phrasea::use_i18n(Session_Handler::get_locale()); }
return new Setup_ConstraintsIterator($constraints);
}
/**
*
* @return Setup_ConstraintsIterator
*/
public static function check_system_locales(Application $app)
{
$constraints = array();
if (!extension_loaded('gettext')) {
return new Setup_ConstraintsIterator($constraints); return new Setup_ConstraintsIterator($constraints);
} }
private static function test_php_conf($conf, $value) foreach (User_Adapter::$locales as $code => $language_name) {
{ phrasea::use_i18n($code, 'test');
$is_flag = false;
$flags = array('on', 'off', '1', '0');
if (in_array(strtolower($value), $flags))
$is_flag = true;
$current = ini_get($conf);
if ($is_flag)
$current = strtolower($current);
if (($current === '' || $current === 'off' || $current === '0') && $is_flag) { if (_('test::test') == 'test') {
if ($value === 'off' || $value === '0' || $value === '') { $constraints[] = new Setup_Constraint($language_name, true, sprintf('Locale %s (%s) ok', $language_name, $code), false);
return 'off'; } else {
} $constraints[] = new Setup_Constraint($language_name, false, sprintf('Locale %s (%s) not installed', $language_name, $code), false);
}
if (($current === '1' || $current === 'on') && $is_flag) {
if ($value === 'on' || $value === '1') {
return 'on';
}
} }
}
phrasea::use_i18n($app['locale']);
return $current; return new Setup_ConstraintsIterator($constraints);
}
private static function test_php_conf($conf, $value)
{
$is_flag = false;
$flags = array('on', 'off', '1', '0');
if (in_array(strtolower($value), $flags))
$is_flag = true;
$current = ini_get($conf);
if ($is_flag)
$current = strtolower($current);
if (($current === '' || $current === 'off' || $current === '0') && $is_flag) {
if ($value === 'off' || $value === '0' || $value === '') {
return 'off';
}
}
if (($current === '1' || $current === 'on') && $is_flag) {
if ($value === 'on' || $value === '1') {
return 'on';
}
} }
public static function rollback(connection_pdo $conn, connection_pdo $connbas = null) return $current;
{ }
$structure = simplexml_load_file(__DIR__ . "/../../lib/conf.d/bases_structure.xml");
public static function rollback(connection_pdo $conn, connection_pdo $connbas = null)
{
$structure = simplexml_load_file(__DIR__ . "/../../lib/conf.d/bases_structure.xml");
if (!$structure) {
throw new Exception('Unable to load schema');
}
$appbox = $structure->appbox;
$databox = $structure->databox;
foreach ($appbox->tables->table as $table) {
try {
$sql = 'DROP TABLE `' . $table['name'] . '`';
$stmt = $conn->prepare($sql);
$stmt->execute();
$stmt->closeCursor();
} catch (Exception $e) {
if (!$structure) {
throw new Exception('Unable to load schema');
} }
}
$appbox = $structure->appbox; if ($connbas) {
$databox = $structure->databox; foreach ($databox->tables->table as $table) {
foreach ($appbox->tables->table as $table) {
try { try {
$sql = 'DROP TABLE `' . $table['name'] . '`'; $sql = 'DROP TABLE `' . $table['name'] . '`';
$stmt = $conn->prepare($sql); $stmt = $connbas->prepare($sql);
$stmt->execute(); $stmt->execute();
$stmt->closeCursor(); $stmt->closeCursor();
} catch (Exception $e) { } catch (Exception $e) {
} }
} }
if ($connbas) {
foreach ($databox->tables->table as $table) {
try {
$sql = 'DROP TABLE `' . $table['name'] . '`';
$stmt = $connbas->prepare($sql);
$stmt->execute();
$stmt->closeCursor();
} catch (Exception $e) {
}
}
}
$appConf = new \Alchemy\Phrasea\Core\Configuration\ApplicationSpecification();
$appConf->delete();
return;
} }
$appConf = new \Alchemy\Phrasea\Core\Configuration\ApplicationSpecification();
$appConf->delete();
return;
} }
}

View File

@@ -60,8 +60,7 @@ class sphinxrt
*/ */
public function delete(Array $index_ids, $rt_id, $id) public function delete(Array $index_ids, $rt_id, $id)
{ {
$registry = registry::get_instance(); require_once __DIR__ . '/../../lib/vendor/sphinx/sphinxapi.php';
require_once $registry->get('GV_RootPath') . 'lib/vendor/sphinx/sphinxapi.php';
$cl = new SphinxClient(); $cl = new SphinxClient();
@@ -85,8 +84,7 @@ class sphinxrt
public function update_status(Array $index_ids, $sbas_id, $record_id, $status) public function update_status(Array $index_ids, $sbas_id, $record_id, $status)
{ {
$registry = registry::get_instance(); require_once __DIR__ . '/../../lib/vendor/sphinx/sphinxapi.php';
require_once $registry->get('GV_RootPath') . 'lib/vendor/sphinx/sphinxapi.php';
$cl = new SphinxClient(); $cl = new SphinxClient();