Merge branch 'master' of github.com:alchemy-fr/Phraseanet

This commit is contained in:
Nicolas Le Goff
2012-01-04 16:57:48 +01:00
8 changed files with 92 additions and 61 deletions

View File

@@ -321,7 +321,7 @@ class ACL implements cache_cacheableInterface
$this->give_access_to_base($bas_to_acces);
foreach ($rights_to_give as $sbas_id => $rights)
foreach ($rights_to_give as $base_id => $rights)
{
$this->update_rights_to_base($base_id, $rights);
}

View File

@@ -24,121 +24,145 @@ class basket_adapter implements cache_cacheableInterface
* @var string
*/
protected $name = false;
/**
*
* @var string
*/
protected $desc = false;
/**
*
* @var DateTime
*/
protected $created_on;
/**
*
* @var DateTime
*/
protected $updated_on;
/**
*
* @var User_Adapter
*/
protected $pusher;
/**
*
* @var boolean
*/
protected $noview = false;
/**
*
* @var string
*/
protected $instance_key;
/**
*
* @var mixed
*/
protected $valid = false;
/**
*
* @var boolean
*/
protected $is_grouping = false;
/**
*
* @var int
*/
protected $record_id;
/**
*
* @var boolean
*/
protected $is_mine = false;
/**
*
* @var int
*/
protected $usr_id;
/**
*
* @var array
*/
protected $elements;
/**
*
* @var int
*/
protected $ssel_id;
/**
*
* @var array
*/
protected $validating_users = array();
/**
*
* @var boolean
*/
protected $validation_see_others = false;
/**
*
* @var boolean
*/
protected $validation_end_date = false;
/**
*
* @var boolean
*/
protected $validation_is_confirmed = false;
/**
*
* @var int
*/
protected $sbas_id;
/**
*
* @var int
*/
protected $coll_id;
/**
*
* @var int
*/
protected $base_id;
/**
*
* @var boolean
*/
protected $owner_changed = false;
/**
*
* @var array
*/
static $_regfields = null;
/**
*
* @var appbox
*/
protected $appbox;
/**
*
* @var boolean
@@ -303,7 +327,6 @@ class basket_adapter implements cache_cacheableInterface
public function get_first_element()
{
foreach ($this->get_elements() as $basket_element)
return $basket_element;
return null;
}
@@ -315,7 +338,6 @@ class basket_adapter implements cache_cacheableInterface
public function get_validation_end_date()
{
if (!$this->valid || !$this->validation_end_date)
return null;
return $this->validation_end_date;
}
@@ -327,7 +349,6 @@ class basket_adapter implements cache_cacheableInterface
public function is_validation_finished()
{
if (!$this->valid || !$this->validation_end_date)
return null;
$now = new DateTime();
@@ -341,7 +362,6 @@ class basket_adapter implements cache_cacheableInterface
public function is_confirmed()
{
if (!$this->valid)
return null;
return $this->validation_is_confirmed;
@@ -350,17 +370,14 @@ class basket_adapter implements cache_cacheableInterface
public function is_releasable()
{
if (!$this->valid)
return false;
if ($this->is_confirmed())
return false;
foreach($this->get_elements() as $element)
foreach ($this->get_elements() as $element)
{
if($element->get_my_agreement() == '0')
if ($element->get_my_agreement() == '0')
return false;
}
@@ -460,7 +477,7 @@ class basket_adapter implements cache_cacheableInterface
}
catch (Exception $e)
{
}
$sql = 'SELECT s.pushFrom, n.id as noview, s.usr_id as owner, s.rid
@@ -494,7 +511,6 @@ class basket_adapter implements cache_cacheableInterface
$this->desc = $row['descript'];
$this->created_on = new DateTime($row['date']);
$this->updated_on = new DateTime($row['updater']);
$this->usr_id = (int) $row['owner'];
$this->noview = !!$row['noview'];
$this->is_mine = ($row['owner'] == $this->usr_id);
@@ -526,7 +542,7 @@ class basket_adapter implements cache_cacheableInterface
}
catch (Exception $e)
{
}
}
@@ -569,7 +585,6 @@ class basket_adapter implements cache_cacheableInterface
public function sort($order)
{
if (!$this->valid || !in_array($order, array('asc', 'desc')))
return;
$this->load_elements();
@@ -615,7 +630,7 @@ class basket_adapter implements cache_cacheableInterface
}
catch (Exception_Record_AdapterNotFound $e)
{
}
catch (Exception $e)
{
@@ -730,7 +745,7 @@ class basket_adapter implements cache_cacheableInterface
}
catch (Exception $e)
{
}
}
@@ -885,7 +900,7 @@ class basket_adapter implements cache_cacheableInterface
}
catch (Exception $e)
{
}
}
}
@@ -1001,7 +1016,6 @@ class basket_adapter implements cache_cacheableInterface
public function set_read()
{
if (!$this->noview)
return true;
$session = $this->appbox->get_session();
@@ -1112,19 +1126,15 @@ class basket_adapter implements cache_cacheableInterface
if ($this->is_mine)
{
if ($this->is_validation_finished())
return sprintf(_('Vous aviez envoye cette demande a %d utilisateurs'), (count($this->validating_users) - 1));
else
return sprintf(_('Vous avez envoye cette demande a %d utilisateurs'), (count($this->validating_users) - 1));
}
else
{
if ($this->validation_see_others)
return sprintf(_('Processus de validation recu de %s et concernant %d utilisateurs'), User_Adapter::getInstance($this->usr_id, $this->appbox)->get_display_name(), (count($this->validating_users) - 1));
else
return sprintf(_('Processus de validation recu de %s'), User_Adapter::getInstance($this->usr_id, $this->appbox)->get_display_name());
}
}
@@ -1135,7 +1145,7 @@ class basket_adapter implements cache_cacheableInterface
*/
public function set_released()
{
if(!$this->is_valid())
if (!$this->is_valid())
throw new Exception('Not a validation basket');
$session = $this->appbox->get_session();
@@ -1164,12 +1174,26 @@ class basket_adapter implements cache_cacheableInterface
if ($row)
{
$expires = new DateTime('+10 days');
$url = $this->appbox->get_registry()->get('GV_ServerName')
. 'lightbox/index.php?LOG=' . random::getUrlToken(
'validate'
, $session->get_usr_id()
, $expires
, $this->get_ssel_id()
);
$to = $row['usr_id'];
$params = array(
'ssel_id' => $this->ssel_id,
'from' => $session->get_usr_id(),
'url' => $url,
'to' => $to
);
$evt_mngr->trigger('__VALIDATION_DONE__', $params);
}
@@ -1219,7 +1243,6 @@ class basket_adapter implements cache_cacheableInterface
protected function load_elements()
{
if (!is_null($this->elements))
return;
$this->elements = array();
@@ -1246,7 +1269,7 @@ class basket_adapter implements cache_cacheableInterface
}
catch (Exception $e)
{
}
}
@@ -1281,7 +1304,7 @@ class basket_adapter implements cache_cacheableInterface
$stmt->closeCursor();
$this->name = $name;
$this->delete_data_from_cache();
return $this;
@@ -1301,7 +1324,7 @@ class basket_adapter implements cache_cacheableInterface
$this->desc = $desc;
$this->delete_data_from_cache();
return $this;
}
@@ -1344,7 +1367,7 @@ class basket_adapter implements cache_cacheableInterface
}
catch (Exception $e)
{
}
return array('error' => true, 'status' => 0);
@@ -1384,7 +1407,7 @@ class basket_adapter implements cache_cacheableInterface
}
catch (Exception $e)
{
}
$ret = array('error' => false, 'status' => 0);
@@ -1497,14 +1520,11 @@ class basket_adapter implements cache_cacheableInterface
public function remove_from_ssel($sselcont_id)
{
if (!$this->is_mine)
return array('error' => 'error', 'status' => 0);
if ($this->is_grouping)
return $this->remove_grouping_elements($sselcont_id);
else
return $this->remove_basket_elements($sselcont_id);
}
@@ -1521,14 +1541,14 @@ class basket_adapter implements cache_cacheableInterface
foreach ($this->get_validating_users() as $user_data)
{
$keys[] = 'basket_' . $user_data['usr_id'] . '_' . $this->get_ssel_id();
$keys[] = 'basket_' . $user_data['usr_id'] . '_' . $this->get_ssel_id().'_'.self::CACHE_ELEMENTS;
$keys[] = 'basket_' . $user_data['usr_id'] . '_' . $this->get_ssel_id().'_'.self::CACHE_VALIDATING_USERS;
$keys[] = 'basket_' . $user_data['usr_id'] . '_' . $this->get_ssel_id() . '_' . self::CACHE_ELEMENTS;
$keys[] = 'basket_' . $user_data['usr_id'] . '_' . $this->get_ssel_id() . '_' . self::CACHE_VALIDATING_USERS;
}
}
$keys[] = 'basket_' . $this->usr_id . '_' . $this->get_ssel_id();
$keys[] = 'basket_' . $this->usr_id . '_' . $this->get_ssel_id().'_'.self::CACHE_ELEMENTS;
$keys[] = 'basket_' . $this->usr_id . '_' . $this->get_ssel_id().'_'.self::CACHE_VALIDATING_USERS;
$keys[] = 'basket_' . $this->usr_id . '_' . $this->get_ssel_id() . '_' . self::CACHE_ELEMENTS;
$keys[] = 'basket_' . $this->usr_id . '_' . $this->get_ssel_id() . '_' . self::CACHE_VALIDATING_USERS;
$this->appbox->delete_data_from_cache($keys);
@@ -1844,7 +1864,7 @@ class basket_adapter implements cache_cacheableInterface
}
catch (Exception $e)
{
}
return $appbox->delete_data_from_cache($ssel_ids);
@@ -1872,7 +1892,7 @@ class basket_adapter implements cache_cacheableInterface
}
catch (Exception $e)
{
}
$sql = 'SELECT id, usr_id, confirmed, can_agree, can_see_others

View File

@@ -151,9 +151,8 @@ class basketCollection
$appbox = appbox::get_instance();
$conn = $appbox->get_connection();
$session = $appbox->get_session();
$sql = 'SELECT n.ssel_id FROM sselnew n, ssel s
WHERE s.ssel_id = n.ssel_id AND n.usr_id = :usr_id
AND n.usr_id = s.usr_id';
$sql = 'SELECT n.ssel_id FROM sselnew n
WHERE n.usr_id = :usr_id ';
$stmt = $conn->prepare($sql);
$stmt->execute(array(':usr_id' => $session->get_usr_id()));
$rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
@@ -162,7 +161,17 @@ class basketCollection
$baskets = array();
foreach($rs as $row)
{
$baskets[] = basket_adapter::getInstance($appbox, $row['ssel_id'], $session->get_usr_id());
try
{
$baskets[] = basket_adapter::getInstance($appbox, $row['ssel_id'], $session->get_usr_id());
}
catch(Exception $e)
{
$sql = 'DELETE FROM sselnew WHERE ssel_id = :ssel_id AND usr_id = :usr_id';
$stmt = $conn->prepare($sql);
$stmt->execute(array(':usr_id' => $session->get_usr_id(), ':ssel_id' => $row['ssel_id']));
$stmt->closeCursor();
}
}
return $baskets;

View File

@@ -110,7 +110,7 @@ class eventsmanager_notify_validationdone extends eventsmanager_notifyAbstract
'name' => $user_from->get_display_name()
);
if (self::mail($to, $from, $params['ssel_id']))
if (self::mail($to, $from, $params['ssel_id'], $params['url']))
$mailed = true;
}
@@ -189,7 +189,7 @@ class eventsmanager_notify_validationdone extends eventsmanager_notifyAbstract
* @param int $ssel_id
* @return boolean
*/
function mail($to, $from, $ssel_id)
function mail($to, $from, $ssel_id, $url)
{
try
{
@@ -211,7 +211,7 @@ class eventsmanager_notify_validationdone extends eventsmanager_notifyAbstract
$from['name']
) . "</div>\n";
$body .= "<br/>\n" . $this->registry->get('GV_ServerName') . 'lightbox/validate/' . $ssel_id;
$body .= "<br/>\n" . $url;
return mail::send_mail($subject, $body, $to, $from, array());
}

View File

@@ -76,7 +76,6 @@ class gatekeeper
$session = $appbox->get_session();
if (http_request::is_command_line())
return;
if (isset($_SERVER['PHP_SELF']) && trim($_SERVER['PHP_SELF']))
@@ -105,7 +104,7 @@ class gatekeeper
}
catch (Exception $e)
{
}
}
@@ -122,7 +121,6 @@ class gatekeeper
if ($this->_PHP_SELF == '/thesaurus2/xmlhttp/getterm.x.php'
|| $this->_PHP_SELF == '/thesaurus2/xmlhttp/searchcandidate.x.php'
|| $this->_PHP_SELF == '/thesaurus2/xmlhttp/getsy.x.php')
return;
phrasea::redirect('/login/?redirect=/thesaurus2');
break;
@@ -131,7 +129,6 @@ class gatekeeper
break;
case 'admin':
if ($this->_script_name === 'runscheduler.php')
return;
phrasea::redirect('/login/?redirect=' . $_SERVER['REQUEST_URI']);
break;
@@ -151,7 +148,6 @@ class gatekeeper
return;
case 'setup':
if ($appbox->upgradeavailable())
return;
else
phrasea::redirect('/login/');
@@ -161,7 +157,7 @@ class gatekeeper
break;
case 'lightbox':
$this->token_access();
if(!$session->is_authenticated())
if (!$session->is_authenticated())
{
phrasea::redirect('/login/?redirect=' . $_SERVER['REQUEST_URI']);
}
@@ -268,13 +264,12 @@ class gatekeeper
$parm = $request->get_parms('LOG');
if (is_null($parm["LOG"]))
return $this;
try
{
if($session->is_authenticated())
$session->logout ();
if ($session->is_authenticated())
$session->logout();
$auth = new Session_Authentication_Token($appbox, $parm['LOG']);
$session->authenticate($auth);
}
@@ -286,10 +281,11 @@ class gatekeeper
try
{
$datas = random::helloToken($parm['LOG']);
return phrasea::redirect("/lightbox/validate/" . $datas['datas'] . "/");
}
catch (Exception_NotFound $e)
{
}
return $this;

View File

@@ -375,8 +375,14 @@ class record_preview extends record_adapter
$tab[$hour][$site][$action] = array();
if (!isset($tab[$hour][$site][$action][$row['usr_id']]))
{
$tab[$hour][$site][$action][$row['usr_id']] =
array('final' => array(), 'comment' => array());
array(
'final' => array()
, 'comment' => array()
, 'user' => \User_Adapter::getInstance($row['usr_id'], $appbox)
);
}
if (!in_array($row['final'], $tab[$hour][$site][$action][$row['usr_id']]['final']))
$tab[$hour][$site][$action][$row['usr_id']]['final'][] =

View File

@@ -3,7 +3,7 @@
{% for hour, sites in record.get_short_history() %}
{% for site, actions in sites %}
{% for action, users in actions %}
{% for current_user, done in users %}
{% for done in users %}
<div style="margin:3px 0">
@@ -55,9 +55,9 @@
{% endif %}
<span class="actor">
{% if user.ACL().has_right_on_base(record.get_base_id(), 'canreport') %}
{% set user_infos = user.getInfos(current_user) %}
{% if current_user != session.get_usr_id() and user_infos %}
{% trans %}report:: par {{user_infos}}{% endtrans %}
{% if done['user'].get_id() != session.get_usr_id() %}
{% set user_infos = done['user'].get_display_name() %}
{% trans %}report:: par {{ user_infos }}{% endtrans %}
{% endif %}
{% endif %}

View File

@@ -366,7 +366,7 @@ function manageSession(data, showMessages)
if($('.notification.unread',box).length > 0)
{
var trigger = $('#notification_trigger') ;
$('.counter div',trigger)
$('.counter',trigger)
.empty()
.append($('.notification.unread',box).length);
$('.counter',trigger).css('visibility','visible');