mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-17 06:53:15 +00:00
Merge branch 'master' of github.com:alchemy-fr/Phraseanet
This commit is contained in:
@@ -47,6 +47,7 @@ class ACL implements cache_cacheableInterface
|
||||
* @var Array
|
||||
*/
|
||||
protected $_rights_records_preview;
|
||||
|
||||
/**
|
||||
*
|
||||
* @var Array
|
||||
@@ -242,47 +243,88 @@ class ACL implements cache_cacheableInterface
|
||||
if (count($base_ids) == 0)
|
||||
return $this;
|
||||
|
||||
$params = array(
|
||||
':usr_id' => $this->user->get_id()
|
||||
, ':template_id' => $template_user->get_id()
|
||||
$sbas_ids = array();
|
||||
|
||||
foreach ($base_ids as $base_id)
|
||||
{
|
||||
$sbas_ids[] = phrasea::sbasFromBas($base_id);
|
||||
}
|
||||
|
||||
$sbas_ids = array_unique($sbas_ids);
|
||||
|
||||
$sbas_rights = array('bas_manage', 'bas_modify_struct', 'bas_modif_th', 'bas_chupub');
|
||||
|
||||
$sbas_to_acces = array();
|
||||
$rights_to_give = array();
|
||||
|
||||
foreach ($template_user->ACL()->get_granted_sbas() as $databox)
|
||||
{
|
||||
$sbas_id = $databox->get_sbas_id();
|
||||
|
||||
if (!in_array($sbas_id, $sbas_ids))
|
||||
continue;
|
||||
|
||||
|
||||
if (!$this->has_access_to_sbas($sbas_id))
|
||||
{
|
||||
$sbas_to_acces[] = $sbas_id;
|
||||
}
|
||||
|
||||
foreach ($sbas_rights as $right)
|
||||
{
|
||||
if ($template_user->ACL()->has_right_on_sbas($sbas_id, $right))
|
||||
{
|
||||
$rights_to_give[$sbas_id][$right] = '1';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->give_access_to_sbas($sbas_to_acces);
|
||||
|
||||
foreach ($rights_to_give as $sbas_id => $rights)
|
||||
{
|
||||
$this->update_rights_to_sbas($sbas_id, $rights);
|
||||
}
|
||||
|
||||
$bas_rights = array('canputinalbum', 'candwnldhd'
|
||||
, 'candwnldpreview', 'cancmd'
|
||||
, 'canadmin', 'actif', 'canreport', 'canpush'
|
||||
, 'canaddrecord', 'canmodifrecord', 'candeleterecord'
|
||||
, 'chgstatus', 'imgtools'
|
||||
, 'manage', 'modify_struct'
|
||||
, 'nowatermark', 'order_master'
|
||||
);
|
||||
|
||||
$sql = 'INSERT INTO sbasusr
|
||||
(SELECT distinct null as sbasusr_id, sb.sbas_id, :usr_id as usr_id, bas_manage
|
||||
, bas_modify_struct,bas_modif_th,bas_chupub
|
||||
FROM sbasusr sb, bas b
|
||||
WHERE b.base_id IN (' . implode(', ', $base_ids) . ')
|
||||
AND b.sbas_id = sb.sbas_id
|
||||
AND usr_id = :template_id)';
|
||||
$bas_to_acces = array();
|
||||
$rights_to_give = array();
|
||||
|
||||
$stmt = $this->appbox->get_connection()->prepare($sql);
|
||||
$stmt->execute($params);
|
||||
$stmt->closeCursor();
|
||||
foreach ($template_user->ACL()->get_granted_base() as $collection)
|
||||
{
|
||||
$base_id = $collection->get_base_id();
|
||||
|
||||
$this->delete_data_from_cache(self::CACHE_RIGHTS_SBAS);
|
||||
if (!in_array($base_id, $base_ids))
|
||||
continue;
|
||||
|
||||
$sql = "INSERT INTO basusr
|
||||
(SELECT null as id, base_id, :usr_id as usr_id, canputinalbum
|
||||
, candwnldhd, candwnldsubdef, candwnldpreview, cancmd
|
||||
, canadmin, actif, canreport, canpush, now() as creationdate
|
||||
, basusr_infousr, mask_and, mask_xor, restrict_dwnld
|
||||
, month_dwnld_max, remain_dwnld, time_limited, limited_from
|
||||
, limited_to, canaddrecord, canmodifrecord, candeleterecord
|
||||
, chgstatus, '0000-00-00 00:00:00' as lastconn, imgtools
|
||||
, manage, modify_struct, bas_manage, bas_modify_struct
|
||||
, nowatermark, order_master
|
||||
FROM basusr
|
||||
WHERE usr_id =
|
||||
(SELECT usr_id
|
||||
FROM usr WHERE usr_id = :template_id)
|
||||
AND base_id IN (" . implode(', ', $base_ids) . "))";
|
||||
if (!$this->has_access_to_base($base_id))
|
||||
{
|
||||
$bas_to_acces[] = $base_id;
|
||||
}
|
||||
|
||||
$stmt = $this->appbox->get_connection()->prepare($sql);
|
||||
$stmt->execute($params);
|
||||
$stmt->closeCursor();
|
||||
foreach ($bas_rights as $right)
|
||||
{
|
||||
if ($template_user->ACL()->has_right_on_base($base_id, $right))
|
||||
{
|
||||
$rights_to_give[$base_id][$right] = '1';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->inject_rights();
|
||||
$this->delete_data_from_cache(self::CACHE_RIGHTS_BAS);
|
||||
$this->give_access_to_base($bas_to_acces);
|
||||
|
||||
foreach ($rights_to_give as $sbas_id => $rights)
|
||||
{
|
||||
$this->update_rights_to_base($base_id, $rights);
|
||||
}
|
||||
|
||||
$this->user->set_last_template($template_user);
|
||||
|
||||
@@ -315,7 +357,7 @@ class ACL implements cache_cacheableInterface
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
if (!isset($this->_rights_bas[$base_id][$right]))
|
||||
throw new Exception('right ' . $right . ' does not exists');
|
||||
|
||||
@@ -750,7 +792,7 @@ class ACL implements cache_cacheableInterface
|
||||
{
|
||||
if ($this->_rights_bas && $this->_global_rights && is_array($this->_limited))
|
||||
return $this;
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
$this->_rights_bas = $this->get_data_from_cache(self::CACHE_RIGHTS_BAS);
|
||||
@@ -1399,12 +1441,12 @@ class ACL implements cache_cacheableInterface
|
||||
$this->load_rights_bas();
|
||||
|
||||
$datetime = new DateTime();
|
||||
|
||||
|
||||
if (!isset($this->_limited[$base_id]))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
$ret = ($this->_limited[$base_id]['dmin'] > $datetime
|
||||
|| $this->_limited[$base_id]['dmax'] < $datetime);
|
||||
|
||||
|
@@ -180,7 +180,7 @@ class Controller_Admin_Users implements ControllerProviderInterface
|
||||
}
|
||||
);
|
||||
|
||||
$controllers->post('/search/', function() use ($app)
|
||||
$controllers->match('/search/', function() use ($app)
|
||||
{
|
||||
$request = $app['request'];
|
||||
$users = new module_admin_route_users($request);
|
||||
@@ -194,17 +194,14 @@ class Controller_Admin_Users implements ControllerProviderInterface
|
||||
}
|
||||
);
|
||||
|
||||
$controllers->get('/search/', function() use ($app)
|
||||
$controllers->post('/apply_template/', function() use ($app)
|
||||
{
|
||||
$request = $app['request'];
|
||||
$users = new module_admin_route_users($request);
|
||||
$template = 'admin/users.html';
|
||||
$users = new module_admin_route_users_edit($request);
|
||||
|
||||
$users->apply_template();
|
||||
|
||||
$twig = new supertwig();
|
||||
$twig->addFilter(array('floor' => 'floor'));
|
||||
$twig->addFilter(array('getDate' => 'phraseadate::getDate'));
|
||||
|
||||
return $twig->render($template, $users->search($request));
|
||||
return new Symfony\Component\HttpFoundation\RedirectResponse('/admin/users/search/');
|
||||
}
|
||||
);
|
||||
|
||||
|
@@ -357,6 +357,16 @@ class Feed_Entry_Adapter implements Feed_Entry_Interface, cache_cacheableInterfa
|
||||
|
||||
return $this->publisher;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param User_adapter $user
|
||||
* @return boolean
|
||||
*/
|
||||
public function is_publisher(User_adapter $user)
|
||||
{
|
||||
return $user->get_id() === $this->get_publisher()->get_user()->get_id();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
|
3
lib/classes/PHPShortener.class.php
Normal file
3
lib/classes/PHPShortener.class.php
Normal file
@@ -0,0 +1,3 @@
|
||||
<?php
|
||||
|
||||
require_once __DIR__ . '/../vendor/PHPShortener/phpshortener.class.php';
|
@@ -88,8 +88,7 @@ class Session_Handler
|
||||
if (!$this->is_authenticated())
|
||||
|
||||
return;
|
||||
$user = User_Adapter::getInstance($this->get_usr_id(), $this->appbox);
|
||||
$user->ACL()->delete_injected_rights();
|
||||
|
||||
$this->storage()->reset();
|
||||
$this->close_phrasea_session();
|
||||
|
||||
@@ -576,7 +575,7 @@ class Session_Handler
|
||||
$sql = 'SELECT v.id as validate_id, v.usr_id, v.ssel_id
|
||||
, s.usr_id as owner, t.value
|
||||
FROM (validate v, ssel s)
|
||||
LEFT JOIN tokens t
|
||||
INNER JOIN tokens t
|
||||
ON (t.datas = s.ssel_id
|
||||
AND v.usr_id=t.usr_id AND t.type="validate")
|
||||
WHERE expires_on < :expires_on
|
||||
@@ -594,7 +593,8 @@ class Session_Handler
|
||||
'ssel_id' => $row['ssel_id'],
|
||||
'from' => $row['owner'],
|
||||
'validate_id' => $row['validate_id'],
|
||||
'url' => $registry->get('GV_ServerName') . 'lightbox/validate/'.$row['ssel_id'].'/?LOG=' . $row['value']
|
||||
'url' => $registry->get('GV_ServerName')
|
||||
. 'lightbox/validate/'.$row['ssel_id'].'/?LOG=' . $row['value']
|
||||
);
|
||||
|
||||
$events_mngr->trigger('__VALIDATION_REMINDER__', $params);
|
||||
|
@@ -397,9 +397,16 @@ class User_Adapter implements User_Interface, cache_cacheableInterface
|
||||
*/
|
||||
public function set_email($email)
|
||||
{
|
||||
if (!trim($email))
|
||||
if (trim($email) == '')
|
||||
$email = null;
|
||||
|
||||
$test_user = User_Adapter::get_usr_id_from_email($email);
|
||||
|
||||
if($test_user && $test_user != $this->get_id())
|
||||
{
|
||||
throw new Exception_InvalidArgument (sprintf(_('A user already exists with email addres %s'), $email));
|
||||
}
|
||||
|
||||
$sql = 'UPDATE usr SET usr_mail = :new_email WHERE usr_id = :usr_id';
|
||||
$stmt = $this->appbox->get_connection()->prepare($sql);
|
||||
$stmt->execute(array(':new_email' => $email, ':usr_id' => $this->get_id()));
|
||||
@@ -864,8 +871,16 @@ class User_Adapter implements User_Interface, cache_cacheableInterface
|
||||
return $this->is_template;
|
||||
}
|
||||
|
||||
public function get_template_owner()
|
||||
{
|
||||
return $this->template_owner;
|
||||
}
|
||||
|
||||
public static function get_usr_id_from_email($email)
|
||||
{
|
||||
if(is_null($email))
|
||||
return false;
|
||||
|
||||
$conn = connection::getPDOConnection();
|
||||
$sql = 'SELECT usr_id FROM usr
|
||||
WHERE usr_mail = :email
|
||||
@@ -1231,6 +1246,7 @@ class User_Adapter implements User_Interface, cache_cacheableInterface
|
||||
protected function load_preferences()
|
||||
{
|
||||
if ($this->_prefs)
|
||||
|
||||
return $this;
|
||||
$sql = 'SELECT prop, value FROM usr_settings WHERE usr_id= :id';
|
||||
$stmt = $this->appbox->get_connection()->prepare($sql);
|
||||
@@ -1324,7 +1340,7 @@ class User_Adapter implements User_Interface, cache_cacheableInterface
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
return $this;
|
||||
@@ -1556,6 +1572,7 @@ class User_Adapter implements User_Interface, cache_cacheableInterface
|
||||
$appbox = appbox::get_instance();
|
||||
$session = $appbox->get_session();
|
||||
if (!$session->is_authenticated())
|
||||
|
||||
return;
|
||||
|
||||
$ses_id = $session->get_ses_id();
|
||||
@@ -1614,7 +1631,7 @@ class User_Adapter implements User_Interface, cache_cacheableInterface
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1678,7 +1695,7 @@ class User_Adapter implements User_Interface, cache_cacheableInterface
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -1765,7 +1782,7 @@ class User_Adapter implements User_Interface, cache_cacheableInterface
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
return $locale;
|
||||
@@ -1831,6 +1848,7 @@ class User_Adapter implements User_Interface, cache_cacheableInterface
|
||||
public function get_nonce()
|
||||
{
|
||||
if ($this->nonce)
|
||||
|
||||
return $this->nonce;
|
||||
$nonce = false;
|
||||
|
||||
@@ -1848,6 +1866,7 @@ class User_Adapter implements User_Interface, cache_cacheableInterface
|
||||
return $this->nonce;
|
||||
}
|
||||
|
||||
|
||||
public function __sleep()
|
||||
{
|
||||
$vars = array();
|
||||
|
@@ -88,6 +88,11 @@ class User_Query implements User_QueryInterface
|
||||
* @var boolean
|
||||
*/
|
||||
protected $include_templates = false;
|
||||
/**
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
protected $only_templates = false;
|
||||
/**
|
||||
*
|
||||
* @var Array
|
||||
@@ -123,10 +128,10 @@ class User_Query implements User_QueryInterface
|
||||
const SORT_FIRSTNAME= 'usr_prenom';
|
||||
const SORT_LASTNAME= 'usr_nom';
|
||||
const SORT_COMPANY = 'societe';
|
||||
const SORT_LOGIN = 'login';
|
||||
const SORT_LOGIN = 'usr_login';
|
||||
const SORT_EMAIL = 'usr_mail';
|
||||
const SORT_ID = 'usr_id';
|
||||
const SORT_CREATIONDATE = 'creationdate';
|
||||
const SORT_CREATIONDATE = 'usr_creationdate';
|
||||
const SORT_COUNTRY = 'pays';
|
||||
const SORT_LASTMODEL = 'lastModel';
|
||||
|
||||
@@ -191,18 +196,22 @@ class User_Query implements User_QueryInterface
|
||||
|
||||
$sql .= ' AND usr_login NOT LIKE "(#deleted_%" ';
|
||||
|
||||
if ($this->include_invite)
|
||||
if (!$this->include_invite)
|
||||
{
|
||||
$sql .= ' AND usr.invite=0 ';
|
||||
}
|
||||
|
||||
if ($this->include_templates === false)
|
||||
if ($this->only_templates === true)
|
||||
{
|
||||
$sql .= ' AND model_of = ' . $session->get_usr_id();
|
||||
}
|
||||
elseif ($this->include_templates === false)
|
||||
{
|
||||
$sql .= ' AND model_of=0';
|
||||
}
|
||||
else
|
||||
{
|
||||
$sql .= ' AND (model_of=0 OR model_of= ' . $session->get_usr_id() . ' ) ';
|
||||
$sql .= ' AND (model_of=0 OR model_of = ' . $session->get_usr_id() . ' ) ';
|
||||
}
|
||||
|
||||
$baslist = array();
|
||||
@@ -355,6 +364,17 @@ class User_Query implements User_QueryInterface
|
||||
|
||||
return $this;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param boolean $boolean
|
||||
* @return User_Query
|
||||
*/
|
||||
public function only_templates($boolean)
|
||||
{
|
||||
$this->only_templates = !!$boolean;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -390,6 +410,8 @@ class User_Query implements User_QueryInterface
|
||||
case self::SORT_COMPANY:
|
||||
case self::SORT_LOGIN:
|
||||
case self::SORT_EMAIL:
|
||||
$sorter[$k] = ' usr.`' . $sort . '` COLLATE utf8_unicode_ci ';
|
||||
break;
|
||||
case self::SORT_ID:
|
||||
case self::SORT_CREATIONDATE:
|
||||
case self::SORT_COUNTRY:
|
||||
@@ -410,7 +432,7 @@ class User_Query implements User_QueryInterface
|
||||
$sorter[$k] .= ' ASC ';
|
||||
break;
|
||||
case self::ORD_DESC:
|
||||
$sorter[$k] .= ' ASC ';
|
||||
$sorter[$k] .= ' DESC ';
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -162,6 +162,7 @@ class bootstrap
|
||||
$loader->registerNamespaces(array(
|
||||
'Symfony\\Component\\Yaml' => __LIBDIR__ . '/vendor/symfony/src',
|
||||
'Symfony\\Component\\Console' => __LIBDIR__ . '/vendor/symfony/src',
|
||||
'Symfony\\Component\\BrowserKit' => __LIBDIR__ . '/vendor/symfony/src',
|
||||
));
|
||||
$loader->register();
|
||||
|
||||
|
@@ -206,6 +206,9 @@ class caption_field implements cache_cacheableInterface
|
||||
*/
|
||||
protected static function serialize_value(Array $value, $separator)
|
||||
{
|
||||
if(strlen($separator) > 1)
|
||||
$separator = $separator[0];
|
||||
|
||||
if (trim($separator) === '')
|
||||
$separator = ' ';
|
||||
else
|
||||
@@ -346,9 +349,9 @@ class caption_field implements cache_cacheableInterface
|
||||
if ($this->databox_field->is_multi() === true)
|
||||
{
|
||||
if ($as_string === true && $custom_separator === false)
|
||||
|
||||
{
|
||||
return $this->value;
|
||||
|
||||
}
|
||||
$separator = $this->databox_field->get_separator();
|
||||
$array_values = self::get_multi_values($this->value, $separator);
|
||||
|
||||
|
@@ -59,8 +59,7 @@ class caption_record implements caption_interface, cache_cacheableInterface
|
||||
|
||||
protected function retrieve_fields()
|
||||
{
|
||||
if(is_array($this->fields))
|
||||
|
||||
if (is_array($this->fields))
|
||||
return $this->fields;
|
||||
|
||||
$fields = array();
|
||||
@@ -97,7 +96,7 @@ class caption_record implements caption_interface, cache_cacheableInterface
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
$this->fields = $rec_fields;
|
||||
@@ -134,7 +133,6 @@ class caption_record implements caption_interface, cache_cacheableInterface
|
||||
{
|
||||
$fields = $this->retrieve_fields();
|
||||
if (isset($this->dces_elements[$label]))
|
||||
|
||||
return $fields[$this->dces_elements[$label]];
|
||||
return null;
|
||||
}
|
||||
@@ -172,7 +170,10 @@ class caption_record implements caption_interface, cache_cacheableInterface
|
||||
, $field->highlight_thesaurus()
|
||||
);
|
||||
|
||||
$fields[$field->get_name()] = $value;
|
||||
$fields[$field->get_name()] = array(
|
||||
'value' => $value
|
||||
, 'separator' => $field->get_databox_field()->get_separator()
|
||||
);
|
||||
}
|
||||
|
||||
if ($searchEngine instanceof searchEngine_adapter)
|
||||
@@ -185,7 +186,7 @@ class caption_record implements caption_interface, cache_cacheableInterface
|
||||
|
||||
foreach ($fields as $key => $value)
|
||||
{
|
||||
$fields[$key] = $ret[$n];
|
||||
$fields[$key]['value'] = $ret[$n];
|
||||
$n++;
|
||||
}
|
||||
}
|
||||
|
@@ -142,7 +142,7 @@ class databox extends base
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -157,7 +157,7 @@ class databox extends base
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
$conn = connection::getPDOConnection();
|
||||
@@ -277,6 +277,7 @@ class databox extends base
|
||||
SUM(1) AS n, SUM(size) AS siz FROM (record, subdef)
|
||||
LEFT JOIN coll ON record.coll_id=coll.coll_id
|
||||
WHERE record.record_id = subdef.record_id
|
||||
GROUP BY record.coll_id, name
|
||||
UNION
|
||||
SELECT coll.coll_id, 0, asciiname, '_' AS name, 0 AS n, 0 AS siz
|
||||
FROM coll LEFT JOIN record ON record.coll_id=coll.coll_id
|
||||
@@ -450,7 +451,6 @@ class databox extends base
|
||||
$stmt->closeCursor();
|
||||
|
||||
if ($row)
|
||||
|
||||
return self::get_instance((int) $row['sbas_id']);
|
||||
|
||||
try
|
||||
@@ -463,7 +463,7 @@ class databox extends base
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
$sql = 'USE `' . $dbname . '`';
|
||||
@@ -575,7 +575,6 @@ class databox extends base
|
||||
public function get_meta_structure()
|
||||
{
|
||||
if ($this->meta_struct)
|
||||
|
||||
return $this->meta_struct;
|
||||
|
||||
try
|
||||
@@ -698,7 +697,6 @@ class databox extends base
|
||||
}
|
||||
}
|
||||
if ($n > $limit)
|
||||
|
||||
return true;
|
||||
|
||||
return false;
|
||||
@@ -959,16 +957,25 @@ class databox extends base
|
||||
}
|
||||
$this->saveStructure($dom_struct);
|
||||
|
||||
$type = isset($field['type']) ? $field['type'] : 'text';
|
||||
$type = in_array($type, array(databox_field::TYPE_DATE, databox_field::TYPE_NUMBER, databox_field::TYPE_TEXT)) ? $type : databox_field::TYPE_TEXT;
|
||||
$type = isset($field['type']) ? $field['type'] : 'string';
|
||||
$type = in_array($type
|
||||
, array(
|
||||
databox_field::TYPE_DATE
|
||||
, databox_field::TYPE_NUMBER
|
||||
, databox_field::TYPE_STRING
|
||||
, databox_field::TYPE_TEXT
|
||||
)
|
||||
) ? $type : databox_field::TYPE_STRING;
|
||||
|
||||
$meta_struct_field = databox_field::create($this, $fname);
|
||||
$meta_struct_field
|
||||
->set_readonly(isset($field['readonly']) ? $field['readonly'] : 0)
|
||||
->set_indexable(isset($field['index']) ? $field['index'] : '1')
|
||||
->set_separator(isset($field['separator']) ? $field['separator'] : '')
|
||||
->set_required((isset($field['required']) && $field['required'] == 1))
|
||||
->set_type($type)
|
||||
->set_tbranch(isset($field['tbranch']) ? $field['tbranch'] : '')
|
||||
->set_thumbtitle(isset($field['thumbtitle']) ? $field['thumbtitle'] : '0')
|
||||
->set_thumbtitle(isset($field['thumbtitle']) ? $field['thumbtitle'] : (isset($field['thumbTitle']) ? $field['thumbTitle'] : '0'))
|
||||
->set_multi(isset($field['multi']) ? $field['multi'] : 0)
|
||||
->set_report(isset($field['report']) ? $field['report'] : '1')
|
||||
->save();
|
||||
@@ -979,7 +986,7 @@ class databox extends base
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (isset($field['regname']))
|
||||
@@ -1213,7 +1220,6 @@ class databox extends base
|
||||
public function get_structure()
|
||||
{
|
||||
if ($this->structure)
|
||||
|
||||
return $this->structure;
|
||||
$this->structure = $this->retrieve_structure();
|
||||
|
||||
@@ -1228,7 +1234,7 @@ class databox extends base
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
$structure = null;
|
||||
@@ -1254,7 +1260,6 @@ class databox extends base
|
||||
public function get_cterms()
|
||||
{
|
||||
if ($this->cterms)
|
||||
|
||||
return $this->cterms;
|
||||
|
||||
$sql = "SELECT value FROM pref WHERE prop='cterms'";
|
||||
@@ -1421,7 +1426,6 @@ class databox extends base
|
||||
public function get_cgus()
|
||||
{
|
||||
if ($this->cgus)
|
||||
|
||||
return $this->cgus;
|
||||
|
||||
$this->load_cgus();
|
||||
@@ -1439,7 +1443,7 @@ class databox extends base
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
$sql = 'SELECT value, locale, updated_on FROM pref WHERE prop ="ToU"';
|
||||
|
@@ -124,6 +124,7 @@ class databox_field implements cache_cacheableInterface
|
||||
|
||||
const TYPE_TEXT = "text";
|
||||
const TYPE_DATE = "date";
|
||||
const TYPE_STRING = "string";
|
||||
const TYPE_NUMBER = "number";
|
||||
|
||||
/**
|
||||
@@ -176,7 +177,7 @@ class databox_field implements cache_cacheableInterface
|
||||
$this->required = !!$row['required'];
|
||||
$this->multi = !!$row['multi'];
|
||||
$this->report = !!$row['report'];
|
||||
$this->type = $row['type'];
|
||||
$this->type = $row['type'] ?: self::TYPE_STRING;
|
||||
$this->tbranch = $row['tbranch'];
|
||||
if ($row['dces_element'])
|
||||
{
|
||||
@@ -269,7 +270,21 @@ class databox_field implements cache_cacheableInterface
|
||||
$stmt->execute(array(':id' => $this->get_id()));
|
||||
$stmt->closeCursor();
|
||||
|
||||
$dom_struct = $this->databox->get_dom_structure();
|
||||
$xp_struct = $this->databox->get_xpath_structure();
|
||||
|
||||
$nodes = $xp_struct->query(
|
||||
'/record/description/*[@meta_id=' . $this->id . ']'
|
||||
);
|
||||
|
||||
foreach($nodes as $node)
|
||||
{
|
||||
/* @var $node DOMNode */
|
||||
$node->parentNode->removeChild($node);
|
||||
}
|
||||
|
||||
$this->delete_data_from_cache();
|
||||
$this->databox->saveStructure($dom_struct);
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -537,6 +552,9 @@ class databox_field implements cache_cacheableInterface
|
||||
*/
|
||||
public function set_separator($separator)
|
||||
{
|
||||
if (strpos($separator, ';') === false)
|
||||
$separator .= ';';
|
||||
|
||||
$this->separator = $separator;
|
||||
|
||||
return $this;
|
||||
|
@@ -255,8 +255,7 @@ class mail
|
||||
$mail->ConfirmReadingTo = $reading_confirm_to;
|
||||
}
|
||||
|
||||
$mail->MsgHTML(strip_tags($body));
|
||||
// $mail->MsgHTML(p4string::cleanTags($body));
|
||||
$mail->MsgHTML(strip_tags($body, '<div><br>'));
|
||||
|
||||
foreach ($files as $f)
|
||||
{
|
||||
|
@@ -106,12 +106,19 @@ class module_admin_route_users
|
||||
if (is_null($v))
|
||||
$this->query_parms[$k] = false;
|
||||
}
|
||||
|
||||
|
||||
$query = new User_Query($appbox);
|
||||
$templates = $query
|
||||
->only_templates(true)
|
||||
->execute()->get_results();
|
||||
|
||||
return array(
|
||||
'users' => $this->results,
|
||||
'parm' => $this->query_parms,
|
||||
'invite_user' => $invite,
|
||||
'autoregister_user' => $autoregister
|
||||
'autoregister_user' => $autoregister,
|
||||
'templates' => $templates
|
||||
);
|
||||
}
|
||||
|
||||
|
@@ -536,6 +536,13 @@ class module_admin_route_users_edit
|
||||
return $this;
|
||||
}
|
||||
|
||||
$user = User_adapter::getInstance(array_pop($this->users), appbox::get_instance());
|
||||
|
||||
if ($user->is_template())
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
$appbox = appbox::get_instance();
|
||||
$session = $appbox->get_session();
|
||||
$request = http_request::getInstance();
|
||||
@@ -580,6 +587,36 @@ class module_admin_route_users_edit
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function apply_template()
|
||||
{
|
||||
$appbox = appbox::get_instance();
|
||||
$session = $appbox->get_session();
|
||||
|
||||
$template = \User_adapter::getInstance($this->request->get('template'), $appbox);
|
||||
|
||||
if ($template->get_template_owner()->get_id() != $session->get_usr_id())
|
||||
{
|
||||
throw new \Exception_Forbidden('You are not the owner of the template');
|
||||
}
|
||||
|
||||
$current_user = \User_adapter::getInstance($session->get_usr_id(), $appbox);
|
||||
$base_ids = array_keys($current_user->ACL()->get_granted_base(array('canadmin')));
|
||||
|
||||
foreach ($this->users as $usr_id)
|
||||
{
|
||||
$user = \User_adapter::getInstance($usr_id, $appbox);
|
||||
|
||||
if($user->is_template())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$user->ACL()->apply_model($template, $base_ids);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function apply_quotas()
|
||||
{
|
||||
$this->base_id = (int) $this->request->get('base_id');
|
||||
|
@@ -148,9 +148,9 @@ $app->before(function($request) use ($app)
|
||||
|
||||
return;
|
||||
}
|
||||
catch (Exception $e)
|
||||
catch (\Exception $e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
$auth = new Session_Authentication_None($app['p4user']);
|
||||
|
@@ -36,9 +36,44 @@ class module_console_systemUpgrade extends Command
|
||||
|
||||
public function execute(InputInterface $input, OutputInterface $output)
|
||||
{
|
||||
if(!setup::is_installed())
|
||||
if (!setup::is_installed())
|
||||
{
|
||||
throw new RuntimeException('Phraseanet is not set up');
|
||||
|
||||
if (file_exists(dirname(__FILE__) . "/../../../../config/connexion.inc")
|
||||
&& !file_exists(dirname(__FILE__) . "/../../../../config/config.inc")
|
||||
&& file_exists(dirname(__FILE__) . "/../../../../config/_GV.php"))
|
||||
{
|
||||
|
||||
$output->writeln('This version of Phraseanet requires a config/config.inc');
|
||||
$output->writeln('Would you like it to be created based on your settings ?');
|
||||
|
||||
$dialog = $this->getHelperSet()->get('dialog');
|
||||
do
|
||||
{
|
||||
$continue = mb_strtolower($dialog->ask($output, '<question>' . _('Create automatically') . ' (Y/n)</question>', 'y'));
|
||||
}
|
||||
while (!in_array($continue, array('y', 'n')));
|
||||
|
||||
if ($continue == 'y')
|
||||
{
|
||||
require __DIR__ . "/../../../../config/_GV.php";
|
||||
|
||||
$datas = '<?php'."\n"
|
||||
.'$servername = "'.GV_ServerName.'";'."\n"
|
||||
.'$maintenance=false;'."\n"
|
||||
.'$debug=false;'."\n"
|
||||
.'$debug=true;'."\n"
|
||||
.'';
|
||||
|
||||
file_put_contents(__DIR__ . "/../../../../config/config.inc", $datas);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new RuntimeException('Phraseanet is not set up');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
require_once dirname(__FILE__) . '/../../../../lib/bootstrap.php';
|
||||
@@ -59,12 +94,12 @@ class module_console_systemUpgrade extends Command
|
||||
{
|
||||
$output->write('<info>Upgrading...</info>', true);
|
||||
$appbox = appbox::get_instance();
|
||||
|
||||
if(count(User_Adapter::get_wrong_email_users($appbox)) > 0)
|
||||
|
||||
if (count(User_Adapter::get_wrong_email_users($appbox)) > 0)
|
||||
{
|
||||
return $output->writeln(sprintf('<error>You have to fix your database before upgrade with the system:mailCheck command </error>'));
|
||||
}
|
||||
|
||||
|
||||
$upgrader = new Setup_Upgrade($appbox);
|
||||
$advices = $appbox->forceUpgrade($upgrader);
|
||||
}
|
||||
|
@@ -49,7 +49,7 @@ class module_prod
|
||||
'sbas_id' => $sbas_id
|
||||
);
|
||||
|
||||
foreach($user->ACL()->get_granted_base(array(), array($databox->get_sbas_id())) as $coll)
|
||||
foreach ($user->ACL()->get_granted_base(array(), array($databox->get_sbas_id())) as $coll)
|
||||
{
|
||||
$selected = ($searchSet &&
|
||||
isset($searchSet->bases) &&
|
||||
@@ -75,12 +75,19 @@ class module_prod
|
||||
else
|
||||
$dates[$id] = array('sbas' => array($sbas_id), 'fieldname' => $name);
|
||||
}
|
||||
|
||||
if (isset($fields[$name]))
|
||||
{
|
||||
$fields[$name]['sbas'][] = $sbas_id;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (isset($fields[$name]))
|
||||
$fields[$name]['sbas'][] = $sbas_id;
|
||||
else
|
||||
$fields[$name] = array('sbas' => array($sbas_id), 'fieldname' => $name, 'id' => $id);
|
||||
$fields[$name] = array(
|
||||
'sbas' => array($sbas_id)
|
||||
, 'fieldname' => $name
|
||||
, 'type' => $meta->get_type()
|
||||
, 'id' => $id
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -56,7 +56,7 @@ class random
|
||||
}
|
||||
}
|
||||
|
||||
$sql = 'DELETE FROM tokens WHERE expire_on < :date';
|
||||
$sql = 'DELETE FROM tokens WHERE expire_on < :date and type="download"';
|
||||
$stmt = $conn->prepare($sql);
|
||||
$stmt->execute(array(':date' => $date));
|
||||
$stmt->closeCursor();
|
||||
@@ -201,7 +201,9 @@ class random
|
||||
self::cleanTokens();
|
||||
|
||||
$conn = connection::getPDOConnection();
|
||||
$sql = 'SELECT * FROM tokens WHERE value = :token ';
|
||||
$sql = 'SELECT * FROM tokens
|
||||
WHERE value = :token
|
||||
AND (expire_on > NOW() OR expire_on IS NULL)';
|
||||
$stmt = $conn->prepare($sql);
|
||||
$stmt->execute(array(':token' => $token));
|
||||
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
|
@@ -180,7 +180,7 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
$connbas = $this->databox->get_connection();
|
||||
@@ -530,7 +530,7 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
return null;
|
||||
@@ -580,7 +580,7 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
$sql = 'SELECT BIN(status) as status FROM record
|
||||
WHERE record_id = :record_id';
|
||||
@@ -617,7 +617,6 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
throw new Exception_Media_SubdefNotFound ();
|
||||
|
||||
if (isset($this->subdefs[$name]))
|
||||
|
||||
return $this->subdefs[$name];
|
||||
|
||||
if (!$this->subdefs)
|
||||
@@ -658,7 +657,7 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
$connbas = $this->get_databox()->get_connection();
|
||||
@@ -757,10 +756,8 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
if ($data)
|
||||
{
|
||||
if (isset($this->technical_datas[$data]))
|
||||
|
||||
return $this->technical_datas[$data];
|
||||
else
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -873,9 +870,9 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
$titles = array();
|
||||
foreach ($retrieved_fields as $key => $value)
|
||||
{
|
||||
if (trim($value === ''))
|
||||
if (trim($value['value'] === ''))
|
||||
continue;
|
||||
$titles[] = $value;
|
||||
$titles[] = $value['value'];
|
||||
}
|
||||
$title = trim(implode(' - ', $titles));
|
||||
}
|
||||
@@ -951,7 +948,6 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
$base_url = '';
|
||||
$original_file = $subdef_def = false;
|
||||
|
||||
|
||||
$subdefs = $this->get_databox()->get_subdef_structure();
|
||||
|
||||
foreach ($subdefs as $type => $datas)
|
||||
@@ -972,7 +968,7 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
try
|
||||
{
|
||||
$value = $this->get_subdef($name);
|
||||
$original_file = p4string::addEndSlash($value['path']) . $value['file'];
|
||||
$original_file = p4string::addEndSlash($value->get_path()) . $value->get_file();
|
||||
unlink($original_file);
|
||||
}
|
||||
catch (Exception $e)
|
||||
@@ -987,7 +983,9 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
if (trim($subdef_def->get_baseurl()) !== '')
|
||||
{
|
||||
$base_url = str_replace(
|
||||
array((string) $subdef_def->get_path(), $newfilename), array((string) $subdef_def->get_baseurl(), ''), $path_file_dest
|
||||
array((string) $subdef_def->get_path(), $newfilename)
|
||||
, array((string) $subdef_def->get_baseurl(), '')
|
||||
, $path_file_dest
|
||||
);
|
||||
}
|
||||
|
||||
@@ -997,7 +995,12 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
|
||||
$sql = 'DELETE FROM subdef WHERE record_id= :record_id AND name=:name';
|
||||
$stmt = $connbas->prepare($sql);
|
||||
$stmt->execute(array(':record_id' => $this->record_id, ':name' => $name));
|
||||
$stmt->execute(
|
||||
array(
|
||||
':record_id' => $this->record_id
|
||||
, ':name' => $name
|
||||
)
|
||||
);
|
||||
|
||||
$registry = registry::get_instance();
|
||||
|
||||
@@ -1032,7 +1035,7 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
|
||||
$sql = 'UPDATE record SET moddate=NOW() WHERE record_id=:record_id';
|
||||
$stmt = $connbas->prepare($sql);
|
||||
$stmt->bindParam(':record_id', $this->get_record_id());
|
||||
$stmt->execute(array(':record_id' => $this->get_record_id()));
|
||||
$stmt->execute();
|
||||
|
||||
$this->delete_data_from_cache(self::CACHE_SUBDEFS);
|
||||
@@ -1242,7 +1245,7 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
$this->delete_data_from_cache(self::CACHE_STATUS);
|
||||
|
||||
@@ -1257,7 +1260,6 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
public function get_reg_name()
|
||||
{
|
||||
if (!$this->is_grouping())
|
||||
|
||||
return false;
|
||||
|
||||
$balisename = '';
|
||||
@@ -1296,14 +1298,12 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
$registry = registry::get_instance();
|
||||
|
||||
if ($this->bitly_link !== null)
|
||||
|
||||
return $this->bitly_link;
|
||||
|
||||
$this->bitly_link = false;
|
||||
|
||||
if (trim($registry->get('GV_bitly_user')) == ''
|
||||
&& trim($registry->get('GV_bitly_key')) == '')
|
||||
|
||||
return $this->bitly_link;
|
||||
|
||||
try
|
||||
@@ -1356,7 +1356,7 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
else
|
||||
{
|
||||
$uuid = $system_file->read_uuid();
|
||||
if(!uuid::is_valid($uuid))
|
||||
if (!uuid::is_valid($uuid))
|
||||
{
|
||||
$uuid = uuid::generate_v4();
|
||||
}
|
||||
@@ -1504,7 +1504,6 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
{
|
||||
$hd = $this->get_subdef('document');
|
||||
if ($hd->is_physically_present())
|
||||
|
||||
return new system_file(p4string::addEndSlash($hd->get_path()) . $hd->get_file());
|
||||
return null;
|
||||
}
|
||||
@@ -1730,7 +1729,7 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
$this->delete_data_from_cache(self::CACHE_SUBDEFS);
|
||||
}
|
||||
@@ -1824,7 +1823,7 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1844,7 +1843,6 @@ class record_adapter implements record_Interface, cache_cacheableInterface
|
||||
public function get_container_baskets()
|
||||
{
|
||||
if ($this->container_basket)
|
||||
|
||||
return $this->container_basket;
|
||||
|
||||
$appbox = appbox::get_instance();
|
||||
|
@@ -56,7 +56,7 @@ class searchEngine_adapter_phrasea_engine extends searchEngine_adapter_abstract
|
||||
|
||||
/**
|
||||
*
|
||||
* @var boolean
|
||||
* @var searchEngine_options
|
||||
*/
|
||||
protected $options = false;
|
||||
|
||||
@@ -142,6 +142,8 @@ class searchEngine_adapter_phrasea_engine extends searchEngine_adapter_abstract
|
||||
*/
|
||||
public function set_options(searchEngine_options $options)
|
||||
{
|
||||
$this->options = $options;
|
||||
|
||||
$this->opt_search_type = (int) $options->get_search_type();
|
||||
$this->opt_bases = $options->get_bases();
|
||||
$this->opt_fields = $options->get_fields();
|
||||
@@ -394,34 +396,37 @@ class searchEngine_adapter_phrasea_engine extends searchEngine_adapter_abstract
|
||||
|
||||
$total_time = 0;
|
||||
|
||||
$sort = '';
|
||||
|
||||
if($this->options->get_sortby())
|
||||
{
|
||||
switch($this->options->get_sortord())
|
||||
{
|
||||
case searchEngine_options::SORT_MODE_ASC:
|
||||
$sort = '+';
|
||||
break;
|
||||
case searchEngine_options::SORT_MODE_DESC:
|
||||
default:
|
||||
$sort = '-';
|
||||
break;
|
||||
}
|
||||
$sort .= '0' . $this->options->get_sortby();
|
||||
}
|
||||
|
||||
foreach ($this->queries as $sbas_id => $qry)
|
||||
{
|
||||
if ($this->opt_search_type == 1)
|
||||
{
|
||||
$this->results[$sbas_id] = phrasea_query2(
|
||||
$session->get_ses_id()
|
||||
, $sbas_id
|
||||
, $this->colls[$sbas_id]
|
||||
, $this->arrayq[$sbas_id]
|
||||
, $registry->get('GV_sit')
|
||||
, (string) $session->get_usr_id()
|
||||
, false
|
||||
, PHRASEA_MULTIDOC_REGONLY
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->results[$sbas_id] = phrasea_query2(
|
||||
$session->get_ses_id()
|
||||
, $sbas_id
|
||||
, $this->colls[$sbas_id]
|
||||
, $this->arrayq[$sbas_id]
|
||||
, $registry->get('GV_sit')
|
||||
, (string) $session->get_usr_id()
|
||||
, false
|
||||
, PHRASEA_MULTIDOC_DOCONLY
|
||||
);
|
||||
}
|
||||
$this->results[$sbas_id] = phrasea_query2(
|
||||
$session->get_ses_id()
|
||||
, $sbas_id
|
||||
, $this->colls[$sbas_id]
|
||||
, $this->arrayq[$sbas_id]
|
||||
, $registry->get('GV_sit')
|
||||
, (string) $session->get_usr_id()
|
||||
, false
|
||||
, $this->opt_search_type == 1 ? PHRASEA_MULTIDOC_REGONLY : PHRASEA_MULTIDOC_DOCONLY
|
||||
, $sort
|
||||
);
|
||||
|
||||
$total_time += $this->results[$sbas_id]['time_all'];
|
||||
|
||||
if ($this->results[$sbas_id])
|
||||
@@ -634,9 +639,20 @@ class searchEngine_adapter_phrasea_engine extends searchEngine_adapter_abstract
|
||||
foreach ($fields as $name => $field)
|
||||
{
|
||||
if ($sxe->description->$name)
|
||||
$ret[] = str_replace(array('[[em]]', '[[/em]]'), array('<em>', '</em>'), (string) $sxe->description->$name);
|
||||
{
|
||||
$val = array();
|
||||
foreach($sxe->description->$name as $value)
|
||||
{
|
||||
$val[] = str_replace(array('[[em]]', '[[/em]]'), array('<em>', '</em>'), (string) $value);
|
||||
}
|
||||
$val = implode(' '.$field['separator'].' ', $val);
|
||||
}
|
||||
else
|
||||
$ret[] = $field;
|
||||
{
|
||||
$val = $field['value'];
|
||||
}
|
||||
|
||||
$ret[] = $val;
|
||||
}
|
||||
|
||||
return $ret;
|
||||
|
@@ -752,8 +752,15 @@ class searchEngine_adapter_sphinx_engine extends searchEngine_adapter_abstract i
|
||||
'before_match' => "<em>",
|
||||
'after_match' => "</em>"
|
||||
);
|
||||
|
||||
$fields_to_send = array();
|
||||
|
||||
foreach($fields as $k=>$f)
|
||||
{
|
||||
$fields_to_send[$k] = $f['value'];
|
||||
}
|
||||
|
||||
return $this->sphinx->BuildExcerpts($fields, $index, $query, $opts);
|
||||
return $this->sphinx->BuildExcerpts($fields_to_send, $index, $query, $opts);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -436,7 +436,7 @@ class setup
|
||||
$message = 'Directory MUST be writable';
|
||||
break;
|
||||
case 'version':
|
||||
$result = version_compare($value, '1.17.0.2', '>=');
|
||||
$result = version_compare($value, '1.18.0.3', '>=');
|
||||
if ($result)
|
||||
$message = sprintf ('Phrasea version %s is ok', $value);
|
||||
else
|
||||
|
@@ -100,11 +100,10 @@ class supertwig
|
||||
$options = array_merge($default_options, $options);
|
||||
$extensions = array_merge($default_extensions, $extensions);
|
||||
|
||||
$this->init_twig();
|
||||
|
||||
try
|
||||
{
|
||||
$this->set_options($options);
|
||||
$this->init_twig();
|
||||
$this->set_extensions($extensions);
|
||||
$this->addFilter(array('round' => 'round'));
|
||||
}
|
||||
|
@@ -108,11 +108,16 @@ class task_Scheduler
|
||||
foreach ($task_manager->get_tasks() as $task)
|
||||
{
|
||||
if (!$task->is_active())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$tid = $task->get_task_id();
|
||||
|
||||
if (!$task->is_running())
|
||||
{
|
||||
/* @var $task task_abstract */
|
||||
$task->reset_crash_counter();
|
||||
$task->set_status(task_abstract::STATUS_TOSTART);
|
||||
}
|
||||
}
|
||||
|
@@ -38,8 +38,9 @@ abstract class task_appboxAbstract extends task_abstract
|
||||
$this->log(("Warning : abox connection lost, restarting in 10 min."));
|
||||
sleep(60 * 10);
|
||||
$this->running = false;
|
||||
$this->return_value = self::RETURNSTATUS_TORESTART;
|
||||
|
||||
return('');
|
||||
return;
|
||||
}
|
||||
|
||||
$this->set_last_exec_time();
|
||||
@@ -85,7 +86,7 @@ abstract class task_appboxAbstract extends task_abstract
|
||||
$this->pause($duration);
|
||||
}
|
||||
|
||||
return($this->return_value);
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -46,8 +46,9 @@ abstract class task_databoxAbstract extends task_abstract
|
||||
$this->log(("Warning : abox connection lost, restarting in 10 min."));
|
||||
sleep(60 * 10);
|
||||
$this->running = false;
|
||||
$this->return_value = self::RETURNSTATUS_TORESTART;
|
||||
|
||||
return('');
|
||||
return;
|
||||
}
|
||||
|
||||
$this->set_last_exec_time();
|
||||
@@ -104,7 +105,7 @@ abstract class task_databoxAbstract extends task_abstract
|
||||
$this->pause($duration);
|
||||
}
|
||||
|
||||
return($this->return_value);
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -112,5 +112,44 @@ class task_manager
|
||||
|
||||
return $row;
|
||||
}
|
||||
|
||||
public static function getAvailableTasks()
|
||||
{
|
||||
$registry = registry::get_instance();
|
||||
$taskdir = array( $registry->get('GV_RootPath') . "lib/classes/task/period/"
|
||||
, $registry->get('GV_RootPath') . "config/classes/task/period/"
|
||||
);
|
||||
|
||||
$tasks = array();
|
||||
foreach($taskdir as $path)
|
||||
{
|
||||
if( ($hdir = @opendir($path)) )
|
||||
{
|
||||
$tskin = array();
|
||||
$max = 9999;
|
||||
while (($max-- > 0) && (($file = readdir($hdir)) !== false))
|
||||
{
|
||||
if (!is_file($path . '/' . $file) || substr($file, 0, 1) == "." || substr($file, -10) != ".class.php")
|
||||
continue;
|
||||
|
||||
$classname = 'task_period_' . substr($file, 0, strlen($file) - 10);
|
||||
|
||||
try
|
||||
{
|
||||
// $testclass = new $classname(null);
|
||||
if ($classname::interfaceAvailable())
|
||||
{
|
||||
$tasks[] = array("class" => $classname, "name" => $classname::getName(), "err" => null);
|
||||
}
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
closedir($hdir);
|
||||
}
|
||||
}
|
||||
return $tasks;
|
||||
}
|
||||
}
|
||||
|
@@ -1541,6 +1541,7 @@ class task_period_archive extends task_abstract
|
||||
$record->set_metadatas($meta['metadatas']);
|
||||
$record->set_binary_status(databox_status::operation_or($stat0, $stat1));
|
||||
$record->rebuild_subdefs();
|
||||
$record->reindex();
|
||||
$rid = $record->get_record_id();
|
||||
$this->log(sprintf((' (recordId %s)'), $rid));
|
||||
$this->archivedFiles++;
|
||||
@@ -1881,6 +1882,7 @@ class task_period_archive extends task_abstract
|
||||
$record->set_metadatas($meta['metadatas']);
|
||||
$record->set_binary_status(databox_status::operation_or(databox_status::operation_or($stat0, $stat1), databox_status::hex2bin($hexstat)));
|
||||
$record->rebuild_subdefs();
|
||||
$record->reindex();
|
||||
|
||||
$rid = $record->get_record_id();
|
||||
if ($grp_rid !== NULL)
|
||||
|
@@ -57,7 +57,7 @@ class task_period_emptyColl extends task_appboxAbstract
|
||||
$collection = collection::get_from_base_id($this->base_id);
|
||||
$this->total_records = $collection->get_record_amount();
|
||||
$collection->empty_collection(200);
|
||||
$this->records_done +=200;
|
||||
$this->records_done += $this->total_records;
|
||||
$this->setProgress($this->records_done, $this->total_records);
|
||||
|
||||
if ($this->total_records == 0)
|
||||
|
@@ -67,8 +67,8 @@ class task_period_upgradetov32 extends task_abstract
|
||||
if (!$this->sbas_id)
|
||||
{
|
||||
printf("sbas_id '" . $this->sbas_id . "' invalide\n");
|
||||
|
||||
return 'stopped';
|
||||
$this->return_value = self::RETURNSTATUS_STOPPED;
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
@@ -78,6 +78,8 @@ class task_period_upgradetov32 extends task_abstract
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
$this->return_value = self::RETURNSTATUS_STOPPED;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -94,6 +96,7 @@ class task_period_upgradetov32 extends task_abstract
|
||||
catch (Exception $e)
|
||||
{
|
||||
printf("Please verify all your databox meta fields before migrating, It seems somes are wrong\n");
|
||||
$this->return_value = self::RETURNSTATUS_STOPPED;
|
||||
|
||||
return 'stopped';
|
||||
}
|
||||
@@ -194,7 +197,7 @@ class task_period_upgradetov32 extends task_abstract
|
||||
|
||||
$sql = 'select record_id, coll_id, xml, BIN(status) as status
|
||||
FROM record
|
||||
WHERE record_id NOT IN (select distinct record_id from technical_datas)
|
||||
WHERE migrated="0" AND record_id NOT IN (select distinct record_id from technical_datas)
|
||||
LIMIT 0, 500';
|
||||
|
||||
$stmt = $connbas->prepare($sql);
|
||||
@@ -238,7 +241,7 @@ class task_period_upgradetov32 extends task_abstract
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -280,9 +283,6 @@ class task_period_upgradetov32 extends task_abstract
|
||||
{
|
||||
$record = new record_adapter($this->sbas_id, $row['record_id']);
|
||||
|
||||
|
||||
// $sbas_id = $this->sbas_id;
|
||||
|
||||
$metas = $databox->get_meta_structure();
|
||||
|
||||
$metadatas = array();
|
||||
@@ -367,12 +367,16 @@ class task_period_upgradetov32 extends task_abstract
|
||||
$memory = memory_get_usage() >> 20;
|
||||
|
||||
if ($n_done >= 5000)
|
||||
|
||||
return task_abstract::RETURNSTATUS_TORESTART;
|
||||
{
|
||||
$this->return_value = task_abstract::RETURNSTATUS_TORESTART;
|
||||
return;
|
||||
}
|
||||
if ($memory > 100)
|
||||
|
||||
return task_abstract::RETURNSTATUS_TORESTART;
|
||||
}
|
||||
{
|
||||
$this->return_value = task_abstract::RETURNSTATUS_TORESTART;
|
||||
return;
|
||||
}
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
|
||||
@@ -393,8 +397,6 @@ class task_period_upgradetov32 extends task_abstract
|
||||
|
||||
$conn = connection::getPDOConnection();
|
||||
|
||||
$ret = 'stopped';
|
||||
|
||||
printf("taskid %s ending." . PHP_EOL, $this->get_task_id());
|
||||
sleep(1);
|
||||
printf("good bye world I was task upgrade to version 3.2" . PHP_EOL);
|
||||
@@ -406,11 +408,12 @@ class task_period_upgradetov32 extends task_abstract
|
||||
$stmt->closeCursor();
|
||||
|
||||
$this->setProgress(0, 0);
|
||||
$ret = 'todelete';
|
||||
|
||||
|
||||
$this->return_value = self::RETURNSTATUS_TODELETE;
|
||||
|
||||
flush();
|
||||
|
||||
return $ret;
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user