This commit is contained in:
Romain Neutron
2012-04-26 00:55:53 +02:00
parent edbfff226e
commit ade22295ad
631 changed files with 92375 additions and 101763 deletions

View File

@@ -17,175 +17,167 @@
*/
abstract class set_abstract implements IteratorAggregate
{
/**
*
* @var Array
*/
protected $elements = array();
/**
*
* @var Array
*/
protected $elements = array();
/**
*
* @return ArrayIterator
*/
public function getIterator()
{
$this->load_elements();
return new ArrayIterator($this->elements);
}
/**
*
* @return set
*/
protected function load_elements()
{
return $this;
}
/**
*
* @param string $offset
* @param string $value
* @return Void
*/
public function offsetSet($offset, $value)
{
if (is_null($offset))
/**
*
* @return ArrayIterator
*/
public function getIterator()
{
$this->elements[] = $value;
}
else
{
$this->elements[$offset] = $value;
}
}
$this->load_elements();
/**
*
* @param string $offset
* @return boolean
*/
public function offsetExists($offset)
{
return isset($this->elements[$offset]);
}
/**
*
* @param string $offset
* @return Void
*/
public function offsetUnset($offset)
{
unset($this->elements[$offset]);
}
/**
*
* @param string $offset
* @return record_adapter
*/
public function offsetGet($offset)
{
return isset($this->elements[$offset]) ? $this->elements[$offset] : null;
}
/**
*
* @return int
*/
public function is_empty()
{
return count($this->elements) == 0;
}
public function __isset($key)
{
trigger_error("Unable to use magic method get for key $key");
if (isset($this->$key))
return true;
return false;
}
/**
* Get the number of element in the set
*
* @return Int
*/
public function get_count()
{
return count($this->elements);
}
/**
*
* @return int
*/
public function get_count_groupings()
{
$n = 0;
foreach ($this->elements as $record)
{
if ($record->is_grouping())
$n++;
return new ArrayIterator($this->elements);
}
return $n;
}
/**
*
* @return Array
*/
public function get_elements()
{
$this->load_elements();
return $this->elements;
}
/**
*
* @param record_Interface $record
* @return set
*/
public function add_element(record_Interface &$record)
{
$this->elements[$record->get_serialize_key()] = $record;
return $this;
}
/**
*
* @param record_Interface $record
* @return set
*/
public function remove_element(record_Interface &$record)
{
$key = $record->get_serialize_key();
if (isset($this->elements[$key]))
unset($this->elements[$key]);
return $this;
}
/**
*
* @return string
*/
public function serialize_list()
{
$basrec = array();
foreach ($this->elements as $record)
/**
*
* @return set
*/
protected function load_elements()
{
$basrec[] = $record->get_serialize_key();
return $this;
}
return implode(';', $basrec);
}
/**
*
* @param string $offset
* @param string $value
* @return Void
*/
public function offsetSet($offset, $value)
{
if (is_null($offset)) {
$this->elements[] = $value;
} else {
$this->elements[$offset] = $value;
}
}
/**
*
* @param string $offset
* @return boolean
*/
public function offsetExists($offset)
{
return isset($this->elements[$offset]);
}
/**
*
* @param string $offset
* @return Void
*/
public function offsetUnset($offset)
{
unset($this->elements[$offset]);
}
/**
*
* @param string $offset
* @return record_adapter
*/
public function offsetGet($offset)
{
return isset($this->elements[$offset]) ? $this->elements[$offset] : null;
}
/**
*
* @return int
*/
public function is_empty()
{
return count($this->elements) == 0;
}
public function __isset($key)
{
trigger_error("Unable to use magic method get for key $key");
if (isset($this->$key))
return true;
return false;
}
/**
* Get the number of element in the set
*
* @return Int
*/
public function get_count()
{
return count($this->elements);
}
/**
*
* @return int
*/
public function get_count_groupings()
{
$n = 0;
foreach ($this->elements as $record) {
if ($record->is_grouping())
$n ++;
}
return $n;
}
/**
*
* @return Array
*/
public function get_elements()
{
$this->load_elements();
return $this->elements;
}
/**
*
* @param record_Interface $record
* @return set
*/
public function add_element(record_Interface &$record)
{
$this->elements[$record->get_serialize_key()] = $record;
return $this;
}
/**
*
* @param record_Interface $record
* @return set
*/
public function remove_element(record_Interface &$record)
{
$key = $record->get_serialize_key();
if (isset($this->elements[$key]))
unset($this->elements[$key]);
return $this;
}
/**
*
* @return string
*/
public function serialize_list()
{
$basrec = array();
foreach ($this->elements as $record) {
$basrec[] = $record->get_serialize_key();
}
return implode(';', $basrec);
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -18,143 +18,139 @@
class set_exportftp extends set_export
{
/**
*
* @param Int $usr_to
* @param String $host
* @param String $login
* @param String $password
* @param Int $ssl
* @param Int $retry
* @param Int $passif
* @param String $destfolder
* @param String $makedirectory
* @return boolean
*/
public function export_ftp($usr_to, $host, $login, $password, $ssl, $retry, $passif, $destfolder, $makedirectory, $logfile)
{
$appbox = appbox::get_instance(\bootstrap::getCore());
$session = $appbox->get_session();
$user_f = User_Adapter::getInstance($session->get_usr_id(), $appbox);
$conn = $appbox->get_connection();
$email_dest = '';
if ($usr_to)
/**
*
* @param Int $usr_to
* @param String $host
* @param String $login
* @param String $password
* @param Int $ssl
* @param Int $retry
* @param Int $passif
* @param String $destfolder
* @param String $makedirectory
* @return boolean
*/
public function export_ftp($usr_to, $host, $login, $password, $ssl, $retry, $passif, $destfolder, $makedirectory, $logfile)
{
$user_t = User_Adapter::getInstance($usr_to, $appbox);
$email_dest = $user_t->get_email();
}
$appbox = appbox::get_instance(\bootstrap::getCore());
$session = $appbox->get_session();
$user_f = User_Adapter::getInstance($session->get_usr_id(), $appbox);
$conn = $appbox->get_connection();
$email_dest = '';
if ($usr_to) {
$user_t = User_Adapter::getInstance($usr_to, $appbox);
$email_dest = $user_t->get_email();
}
$text_mail_receiver = "Bonjour,\n"
. "L'utilisateur "
. $user_f->get_display_name() . " (login : " . $user_f->get_login() . ") "
. "a fait un transfert FTP sur le serveur ayant comme adresse \""
. $host . "\" avec le login \"" . $login . "\" "
. "et pour repertoire de destination \""
. $destfolder . "\"\n";
$text_mail_receiver = "Bonjour,\n"
. "L'utilisateur "
. $user_f->get_display_name() . " (login : " . $user_f->get_login() . ") "
. "a fait un transfert FTP sur le serveur ayant comme adresse \""
. $host . "\" avec le login \"" . $login . "\" "
. "et pour repertoire de destination \""
. $destfolder . "\"\n";
$text_mail_sender = "Bonjour,\n"
. "Vous avez fait un export FTP avec les caracteristiques "
. "de connexion suivantes\n"
. "- adresse du serveur : \"" . $host . "\"\n"
. "- login utilisé \"" . $login . "\"\n"
. "- repertoire de destination \"" . $destfolder . "\"\n"
. "\n";
$text_mail_sender = "Bonjour,\n"
. "Vous avez fait un export FTP avec les caracteristiques "
. "de connexion suivantes\n"
. "- adresse du serveur : \"" . $host . "\"\n"
. "- login utilisé \"" . $login . "\"\n"
. "- repertoire de destination \"" . $destfolder . "\"\n"
. "\n";
$fn = "id";
$fv = "null";
$fn .= ",crash";
$fv .= ",0";
$fn .= ",nbretry";
$fv .= ",:nbretry";
$fn .= ",mail";
$fv .= ",:mail";
$fn .= ",addr";
$fv .= ",:addr";
$fn .= ",login";
$fv .= ",:login";
$fn .= ",`ssl`";
$fv .= ",:ssl";
$fn .= ",pwd";
$fv .= ",:pwd";
$fn .= ",passif";
$fv .= ",:passif";
$fn .= ",destfolder";
$fv .= ",:destfolder";
$fn .= ",sendermail";
$fv .= ",:sendermail";
$fn .= ",text_mail_receiver";
$fv .= ",:text_mail_receiver";
$fn .= ",text_mail_sender";
$fv .= ",:text_mail_sender";
$fn .= ",usr_id";
$fv .= ",:usr_id";
$fn .= ",date";
$fv .= ", NOW()";
$fn .= ",foldertocreate";
$fv .= ",:foldertocreate";
$fn .= ",logfile";
$fv .= ",:logfile";
$fn = "id";
$fv = "null";
$fn .= ",crash";
$fv .= ",0";
$fn .= ",nbretry";
$fv .= ",:nbretry";
$fn .= ",mail";
$fv .= ",:mail";
$fn .= ",addr";
$fv .= ",:addr";
$fn .= ",login";
$fv .= ",:login";
$fn .= ",`ssl`";
$fv .= ",:ssl";
$fn .= ",pwd";
$fv .= ",:pwd";
$fn .= ",passif";
$fv .= ",:passif";
$fn .= ",destfolder";
$fv .= ",:destfolder";
$fn .= ",sendermail";
$fv .= ",:sendermail";
$fn .= ",text_mail_receiver";
$fv .= ",:text_mail_receiver";
$fn .= ",text_mail_sender";
$fv .= ",:text_mail_sender";
$fn .= ",usr_id";
$fv .= ",:usr_id";
$fn .= ",date";
$fv .= ", NOW()";
$fn .= ",foldertocreate";
$fv .= ",:foldertocreate";
$fn .= ",logfile";
$fv .= ",:logfile";
$params = array(
':nbretry' => (((int) $retry * 1) > 0 ? (int) $retry : 5)
, ':mail' => $email_dest
, ':addr' => $host
, ':login' => $login
, ':ssl' => ($ssl == '1' ? '1' : '0')
, ':pwd' => $password
, ':passif' => ($passif == "1" ? "1" : "0")
, ':destfolder' => $destfolder
, ':sendermail' => $user_f->get_email()
, ':text_mail_receiver' => $text_mail_receiver
, ':text_mail_sender' => $text_mail_sender
, ':usr_id' => $session->get_usr_id()
, ':foldertocreate' => $makedirectory
, ':logfile' => (!!$logfile ? '1' : '0')
);
$params = array(
':nbretry' => (((int) $retry * 1) > 0 ? (int) $retry : 5)
, ':mail' => $email_dest
, ':addr' => $host
, ':login' => $login
, ':ssl' => ($ssl == '1' ? '1' : '0')
, ':pwd' => $password
, ':passif' => ($passif == "1" ? "1" : "0")
, ':destfolder' => $destfolder
, ':sendermail' => $user_f->get_email()
, ':text_mail_receiver' => $text_mail_receiver
, ':text_mail_sender' => $text_mail_sender
, ':usr_id' => $session->get_usr_id()
, ':foldertocreate' => $makedirectory
, ':logfile' => ( ! ! $logfile ? '1' : '0')
);
$sql = "INSERT INTO ftp_export ($fn) VALUES ($fv)";
$stmt = $conn->prepare($sql);
$stmt->execute($params);
$stmt->closeCursor();
$sql = "INSERT INTO ftp_export ($fn) VALUES ($fv)";
$stmt = $conn->prepare($sql);
$stmt->execute($params);
$stmt->closeCursor();
$ftp_export_id = $conn->lastInsertId();
$ftp_export_id = $conn->lastInsertId();
$sql = 'INSERT INTO ftp_export_elements
$sql = 'INSERT INTO ftp_export_elements
(id, ftp_export_id, base_id, record_id, subdef, filename, folder, businessfields)
VALUES
(null, :ftp_export_id, :base_id, :record_id, :subdef,
:filename, :folder, :businessfields)';
$stmt = $conn->prepare($sql);
$stmt = $conn->prepare($sql);
foreach ($this->list['files'] as $file)
{
foreach ($file['subdefs'] as $subdef => $properties)
{
$filename = $file['export_name']
. $properties["ajout"] . '.'
. $properties['exportExt'];
foreach ($this->list['files'] as $file) {
foreach ($file['subdefs'] as $subdef => $properties) {
$filename = $file['export_name']
. $properties["ajout"] . '.'
. $properties['exportExt'];
$bfields = isset($properties['businessfields']) ? $properties['businessfields'] : null;
$bfields = isset($properties['businessfields']) ? $properties['businessfields'] : null;
$params = array(
':ftp_export_id' => $ftp_export_id
, ':base_id' => $file['base_id']
, ':record_id' => $file['record_id']
, ':subdef' => $subdef
, ':filename' => $filename
, ':folder' => $properties['folder']
, ':businessfields' => $bfields
);
$stmt->execute($params);
}
$params = array(
':ftp_export_id' => $ftp_export_id
, ':base_id' => $file['base_id']
, ':record_id' => $file['record_id']
, ':subdef' => $subdef
, ':filename' => $filename
, ':folder' => $properties['folder']
, ':businessfields' => $bfields
);
$stmt->execute($params);
}
}
$stmt->closeCursor();
return true;
}
$stmt->closeCursor();
return true;
}
}

View File

@@ -18,149 +18,136 @@
class set_exportorder extends set_export
{
/**
*
* @param Int $from_usr_id
* @param String $usage
* @param String $deadline
* @return boolean
*/
public function order_available_elements($from_usr_id, $usage, $deadline)
{
$Core = bootstrap::getCore();
$lst = $this->get_orderable_lst();
$conn = connection::getPDOConnection();
$date = phraseadate::format_mysql(new DateTime($deadline));
$conn->beginTransaction();
$usage = p4string::cleanTags($usage);
try
/**
*
* @param Int $from_usr_id
* @param String $usage
* @param String $deadline
* @return boolean
*/
public function order_available_elements($from_usr_id, $usage, $deadline)
{
$Core = bootstrap::getCore();
$sql = 'INSERT INTO `order`
$lst = $this->get_orderable_lst();
$conn = connection::getPDOConnection();
$date = phraseadate::format_mysql(new DateTime($deadline));
$conn->beginTransaction();
$usage = p4string::cleanTags($usage);
try {
$sql = 'INSERT INTO `order`
(`id`, `usr_id`, `created_on`, `usage`, `deadline`)
VALUES
(null, :from_usr_id, NOW(), :usage, :deadline)';
$params = array(
':from_usr_id' => $from_usr_id
, ':usage' => $usage
, ':deadline' => $deadline
);
$stmt = $conn->prepare($sql);
$stmt->execute($params);
$stmt->closeCursor();
$params = array(
':from_usr_id' => $from_usr_id
, ':usage' => $usage
, ':deadline' => $deadline
);
$stmt = $conn->prepare($sql);
$stmt->execute($params);
$stmt->closeCursor();
$order_id = $conn->lastInsertId();
$order_id = $conn->lastInsertId();
$sql = 'INSERT INTO order_elements
$sql = 'INSERT INTO order_elements
(id, order_id, base_id, record_id, order_master_id)
VALUES
(null, :order_id, :base_id, :record_id, null)';
$stmt = $conn->prepare($sql);
$stmt = $conn->prepare($sql);
foreach ($lst as $basrec)
{
$basrec = explode('_', $basrec);
foreach ($lst as $basrec) {
$basrec = explode('_', $basrec);
$record = new record_adapter($basrec[0], $basrec[1]);
$base_id = $record->get_base_id();
$record_id = $basrec[1];
$record = new record_adapter($basrec[0], $basrec[1]);
$base_id = $record->get_base_id();
$record_id = $basrec[1];
$params = array(
':order_id' => $order_id
, ':base_id' => $base_id
, ':record_id' => $record_id
);
$stmt->execute($params);
}
$stmt->closeCursor();
$conn->commit();
} catch (Exception $e) {
$conn->rollBack();
return false;
}
$evt_mngr = eventsmanager_broker::getInstance(appbox::get_instance($Core), $Core);
$params = array(
':order_id' => $order_id
, ':base_id' => $base_id
, ':record_id' => $record_id
'order_id' => $order_id,
'usr_id' => $from_usr_id
);
$stmt->execute($params);
}
$stmt->closeCursor();
$conn->commit();
}
catch (Exception $e)
{
$conn->rollBack();
$evt_mngr->trigger('__NEW_ORDER__', $params);
return false;
return true;
}
$evt_mngr = eventsmanager_broker::getInstance(appbox::get_instance($Core), $Core);
$params = array(
'order_id' => $order_id,
'usr_id' => $from_usr_id
);
$evt_mngr->trigger('__NEW_ORDER__', $params);
return true;
}
/**
*
* @return Array
*/
protected function get_orderable_lst()
{
$ret = array();
foreach ($this as $basrec => $download_element)
/**
*
* @return Array
*/
protected function get_orderable_lst()
{
foreach ($download_element->get_orderable() as $name => $bool)
{
if ($bool === true)
{
$ret[] = $basrec;
$ret = array();
foreach ($this as $basrec => $download_element) {
foreach ($download_element->get_orderable() as $name => $bool) {
if ($bool === true) {
$ret[] = $basrec;
}
}
}
}
return $ret;
}
return $ret;
}
/**
*
* @param Int $admins
* @param Int $base_id
* @return Void
*/
public static function set_order_admins($admins, $base_id)
{
$appbox = appbox::get_instance(\bootstrap::getCore());
$conn = $appbox->get_connection();
$conn->beginTransaction();
try
/**
*
* @param Int $admins
* @param Int $base_id
* @return Void
*/
public static function set_order_admins($admins, $base_id)
{
$user_query = new User_Query($appbox);
$result = $user_query->on_base_ids(array($base_id))
->who_have_right(array('order_master'))
->execute()->get_results();
$appbox = appbox::get_instance(\bootstrap::getCore());
$conn = $appbox->get_connection();
$conn->beginTransaction();
try {
$user_query = new User_Query($appbox);
$result = $user_query->on_base_ids(array($base_id))
->who_have_right(array('order_master'))
->execute()->get_results();
foreach ($result as $user)
{
$user->ACL()->update_rights_to_base($base_id, array('order_master' => false));
}
foreach ($result as $user) {
$user->ACL()->update_rights_to_base($base_id, array('order_master' => false));
}
foreach ($admins as $admin)
{
$user = User_Adapter::getInstance($admin, $appbox);
$user->ACL()->update_rights_to_base($base_id, array('order_master' => true));
}
foreach ($admins as $admin) {
$user = User_Adapter::getInstance($admin, $appbox);
$user->ACL()->update_rights_to_base($base_id, array('order_master' => true));
}
$conn->commit();
$conn->commit();
} catch (Exception $e) {
$conn->rollBack();
}
return;
}
catch (Exception $e)
{
$conn->rollBack();
}
return;
}
}

View File

@@ -17,60 +17,66 @@
*/
class set_order extends set_abstract
{
/**
*
* @var int
*/
protected $id;
/**
*
* @var int
*/
protected $id;
/**
*
* @var user
*/
protected $user;
/**
*
* @var int
*/
protected $todo;
/**
*
* @var DateTime
*/
protected $created_on;
/**
*
* @var string
*/
protected $usage;
/**
*
* @var DateTime
*/
protected $deadline;
/**
*
* @var int
*/
protected $total;
/**
*
* @var int
*/
protected $ssel_id;
/**
*
* @var user
*/
protected $user;
/**
*
* @param int $id
* @return set_order
*/
public function __construct($id)
{
$appbox = appbox::get_instance(\bootstrap::getCore());
$session = $appbox->get_session();
$conn = $appbox->get_connection();
/**
*
* @var int
*/
protected $todo;
$sql = 'SELECT o.id, o.usr_id, o.created_on, o.`usage`, o.deadline,
/**
*
* @var DateTime
*/
protected $created_on;
/**
*
* @var string
*/
protected $usage;
/**
*
* @var DateTime
*/
protected $deadline;
/**
*
* @var int
*/
protected $total;
/**
*
* @var int
*/
protected $ssel_id;
/**
*
* @param int $id
* @return set_order
*/
public function __construct($id)
{
$appbox = appbox::get_instance(\bootstrap::getCore());
$session = $appbox->get_session();
$conn = $appbox->get_connection();
$sql = 'SELECT o.id, o.usr_id, o.created_on, o.`usage`, o.deadline,
COUNT(e.id) as total, o.ssel_id, COUNT(e2.id) as todo
FROM (`order` o, order_elements e)
LEFT JOIN order_elements e2
@@ -80,298 +86,281 @@ class set_order extends set_abstract
)
WHERE o.id = e.order_id
AND o.id = :order_id';
$stmt = $conn->prepare($sql);
$stmt->execute(array(':order_id' => $id));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt->closeCursor();
$stmt = $conn->prepare($sql);
$stmt->execute(array(':order_id' => $id));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt->closeCursor();
if (!$row)
throw new Exception('unknown order ' . $id);
if ( ! $row)
throw new Exception('unknown order ' . $id);
$current_user = User_Adapter::getInstance($row['usr_id'], $appbox);
$user = User_Adapter::getInstance($session->get_usr_id(), $appbox);
$current_user = User_Adapter::getInstance($row['usr_id'], $appbox);
$user = User_Adapter::getInstance($session->get_usr_id(), $appbox);
$this->id = $row['id'];
$this->user = $current_user;
$this->todo = $row['todo'];
$this->created_on = new DateTime($row['created_on']);
$this->usage = $row['usage'];
$this->deadline = new DateTime($row['deadline']);
$this->total = (int) $row['total'];
$this->ssel_id = (int) $row['ssel_id'];
$this->id = $row['id'];
$this->user = $current_user;
$this->todo = $row['todo'];
$this->created_on = new DateTime($row['created_on']);
$this->usage = $row['usage'];
$this->deadline = new DateTime($row['deadline']);
$this->total = (int) $row['total'];
$this->ssel_id = (int) $row['ssel_id'];
$base_ids = array_keys($user->ACL()->get_granted_base(array('order_master')));
$sql = 'SELECT e.base_id, e.record_id, e.order_master_id, e.id, e.deny
$base_ids = array_keys($user->ACL()->get_granted_base(array('order_master')));
$sql = 'SELECT e.base_id, e.record_id, e.order_master_id, e.id, e.deny
FROM order_elements e
WHERE order_id = :order_id
AND e.base_id
IN ('.implode(',', $base_ids).')';
IN (' . implode(',', $base_ids) . ')';
$stmt = $conn->prepare($sql);
$stmt->execute(array(':order_id' => $id));
$rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt->closeCursor();
$stmt = $conn->prepare($sql);
$stmt->execute(array(':order_id' => $id));
$rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt->closeCursor();
$elements = array();
$elements = array();
foreach ($rs as $row)
{
$order_master_id = $row['order_master_id'] ? $row['order_master_id'] : false;
foreach ($rs as $row) {
$order_master_id = $row['order_master_id'] ? $row['order_master_id'] : false;
$elements[$row['id']] = new record_orderElement(
phrasea::sbasFromBas($row['base_id']),
$row['record_id'],
$row['deny'],
$order_master_id
);
$elements[$row['id']] = new record_orderElement(
phrasea::sbasFromBas($row['base_id']),
$row['record_id'],
$row['deny'],
$order_master_id
);
}
$this->elements = $elements;
return $this;
}
$this->elements = $elements;
return $this;
}
/**
*
* @return User_Adapter
*/
public function get_user()
{
return $this->user;
}
/**
*
* @return DateTime
*/
public function get_created_on()
{
return $this->created_on;
}
/**
*
* @return DateTime
*/
public function get_deadline()
{
return $this->deadline;
}
/**
*
* @return string
*/
public function get_usage()
{
return $this->usage;
}
/**
*
* @return int
*/
public function get_total()
{
return $this->total;
}
/**
*
* @return int
*/
public function get_order_id()
{
return $this->id;
}
/**
*
* @return int
*/
public function get_todo()
{
return $this->todo;
}
/**
*
* @param Array $elements_ids
* @param boolean $force
* @return set_order
*/
public function send_elements(Array $elements_ids, $force)
{
$appbox = appbox::get_instance(\bootstrap::getCore());
$session = $appbox->get_session();
$conn = $appbox->get_connection();
$pusher = User_Adapter::getInstance($session->get_usr_id(), $appbox);
$basrecs = array();
foreach ($elements_ids as $id)
/**
*
* @return User_Adapter
*/
public function get_user()
{
if (isset($this->elements[$id]))
{
$basrecs[$id] = array(
'base_id' => $this->elements[$id]->get_base_id(),
'record_id' => $this->elements[$id]->get_record_id()
);
}
return $this->user;
}
$core = \bootstrap::getCore();
$em = $core->getEntityManager();
$Basket = null;
/* @var $repository \Repositories\BasketRepository */
if($this->ssel_id)
/**
*
* @return DateTime
*/
public function get_created_on()
{
$repository = $em->getRepository('\Entities\Basket');
return $this->created_on;
}
/**
*
* @return DateTime
*/
public function get_deadline()
{
return $this->deadline;
}
/**
*
* @return string
*/
public function get_usage()
{
return $this->usage;
}
/**
*
* @return int
*/
public function get_total()
{
return $this->total;
}
/**
*
* @return int
*/
public function get_order_id()
{
return $this->id;
}
/**
*
* @return int
*/
public function get_todo()
{
return $this->todo;
}
/**
*
* @param Array $elements_ids
* @param boolean $force
* @return set_order
*/
public function send_elements(Array $elements_ids, $force)
{
$appbox = appbox::get_instance(\bootstrap::getCore());
$session = $appbox->get_session();
$conn = $appbox->get_connection();
$pusher = User_Adapter::getInstance($session->get_usr_id(), $appbox);
$basrecs = array();
foreach ($elements_ids as $id) {
if (isset($this->elements[$id])) {
$basrecs[$id] = array(
'base_id' => $this->elements[$id]->get_base_id(),
'record_id' => $this->elements[$id]->get_record_id()
);
}
}
$core = \bootstrap::getCore();
$em = $core->getEntityManager();
try
{
$Basket = $repository->findUserBasket($this->ssel_id, $core->getAuthenticatedUser(), false);
}
catch(\Exception $e)
{
$Basket = null;
}
}
/* @var $repository \Repositories\BasketRepository */
if ($this->ssel_id) {
$repository = $em->getRepository('\Entities\Basket');
if(!$Basket)
{
$Basket = new \Entities\Basket();
$Basket->setName(sprintf(_('Commande du %s'), $this->created_on->format('Y-m-d')));
$Basket->setOwner($this->user);
$Basket->setPusher($core->getAuthenticatedUser());
try {
$Basket = $repository->findUserBasket($this->ssel_id, $core->getAuthenticatedUser(), false);
} catch (\Exception $e) {
$Basket = null;
}
}
$em->persist($Basket);
$em->flush();
if ( ! $Basket) {
$Basket = new \Entities\Basket();
$Basket->setName(sprintf(_('Commande du %s'), $this->created_on->format('Y-m-d')));
$Basket->setOwner($this->user);
$Basket->setPusher($core->getAuthenticatedUser());
$this->ssel_id = $Basket->getId();
$em->persist($Basket);
$em->flush();
$sql = 'UPDATE `order` SET ssel_id = :ssel_id WHERE id = :order_id';
$stmt = $conn->prepare($sql);
$stmt->execute(array(':ssel_id' => $Basket->getId(), ':order_id' => $this->id));
$stmt->closeCursor();
}
$this->ssel_id = $Basket->getId();
$n = 0;
$sql = 'UPDATE `order` SET ssel_id = :ssel_id WHERE id = :order_id';
$stmt = $conn->prepare($sql);
$stmt->execute(array(':ssel_id' => $Basket->getId(), ':order_id' => $this->id));
$stmt->closeCursor();
}
$sql = 'UPDATE order_elements
$n = 0;
$sql = 'UPDATE order_elements
SET deny="0", order_master_id = :usr_id
WHERE order_id = :order_id
AND id = :order_element_id';
if ($force == '0')
{
$sql .= ' AND ISNULL(order_master_id)';
}
$stmt = $conn->prepare($sql);
if ($force == '0') {
$sql .= ' AND ISNULL(order_master_id)';
}
$stmt = $conn->prepare($sql);
foreach ($basrecs as $order_element_id => $basrec)
{
try
{
$sbas_id = phrasea::sbasFromBas($basrec['base_id']);
$record = new record_adapter($sbas_id, $basrec['record_id']);
foreach ($basrecs as $order_element_id => $basrec) {
try {
$sbas_id = phrasea::sbasFromBas($basrec['base_id']);
$record = new record_adapter($sbas_id, $basrec['record_id']);
$BasketElement = new \Entities\BasketElement();
$BasketElement->setRecord($record);
$BasketElement->setBasket($Basket);
$BasketElement = new \Entities\BasketElement();
$BasketElement->setRecord($record);
$BasketElement->setBasket($Basket);
$Basket->addBasketElement($BasketElement);
$Basket->addBasketElement($BasketElement);
$em->persist($BasketElement);
$em->persist($BasketElement);
$params = array(
':usr_id' => $session->get_usr_id()
, ':order_id' => $this->id
, ':order_element_id' => $order_element_id
);
$params = array(
':usr_id' => $session->get_usr_id()
, ':order_id' => $this->id
, ':order_element_id' => $order_element_id
);
$stmt->execute($params);
$stmt->execute($params);
$n++;
$this->user->ACL()->grant_hd_on($record, $pusher, 'order');
$n ++;
$this->user->ACL()->grant_hd_on($record, $pusher, 'order');
unset($record);
}
catch (Exception $e)
{
unset($record);
} catch (Exception $e) {
}
}
}
$em->flush();
$stmt->closeCursor();
if ($n > 0) {
$evt_mngr = eventsmanager_broker::getInstance($appbox, $core);
$params = array(
'ssel_id' => $this->ssel_id,
'from' => $session->get_usr_id(),
'to' => $this->user->get_id(),
'n' => $n
);
$evt_mngr->trigger('__ORDER_DELIVER__', $params);
}
return $this;
}
$em->flush();
$stmt->closeCursor();
if ($n > 0)
/**
*
* @param Array $elements_ids
* @return set_order
*/
public function deny_elements(Array $elements_ids)
{
$evt_mngr = eventsmanager_broker::getInstance($appbox, $core);
$Core = bootstrap::getCore();
$appbox = appbox::get_instance(\bootstrap::getCore());
$session = $appbox->get_session();
$conn = $appbox->get_connection();
$params = array(
'ssel_id' => $this->ssel_id,
'from' => $session->get_usr_id(),
'to' => $this->user->get_id(),
'n' => $n
);
$n = 0;
$evt_mngr->trigger('__ORDER_DELIVER__', $params);
}
return $this;
}
/**
*
* @param Array $elements_ids
* @return set_order
*/
public function deny_elements(Array $elements_ids)
{
$Core = bootstrap::getCore();
$appbox = appbox::get_instance(\bootstrap::getCore());
$session = $appbox->get_session();
$conn = $appbox->get_connection();
$n = 0;
foreach ($elements_ids as $order_element_id)
{
$sql = 'UPDATE order_elements
foreach ($elements_ids as $order_element_id) {
$sql = 'UPDATE order_elements
SET deny="1", order_master_id = :order_master_id
WHERE order_id = :order_id AND id = :order_element_id
AND ISNULL(order_master_id)';
$params = array(
':order_master_id' => $session->get_usr_id()
, ':order_id' => $this->id
, ':order_element_id' => $order_element_id
);
$stmt = $conn->prepare($sql);
$stmt->execute($params);
$stmt->closeCursor();
$n++;
$params = array(
':order_master_id' => $session->get_usr_id()
, ':order_id' => $this->id
, ':order_element_id' => $order_element_id
);
$stmt = $conn->prepare($sql);
$stmt->execute($params);
$stmt->closeCursor();
$n ++;
}
if ($n > 0) {
$evt_mngr = eventsmanager_broker::getInstance($appbox, $Core);
$params = array(
'from' => $session->get_usr_id(),
'to' => $this->user->get_id(),
'n' => $n
);
$evt_mngr->trigger('__ORDER_NOT_DELIVERED__', $params);
}
return $this;
}
if ($n > 0)
{
$evt_mngr = eventsmanager_broker::getInstance($appbox, $Core);
$params = array(
'from' => $session->get_usr_id(),
'to' => $this->user->get_id(),
'n' => $n
);
$evt_mngr->trigger('__ORDER_NOT_DELIVERED__', $params);
}
return $this;
}
}

View File

@@ -17,37 +17,37 @@
*/
class set_ordermanager extends set_abstract
{
/**
*
* @var int
*/
protected $page;
/**
*
* @var int
*/
protected $page;
/**
*
* @var int
*/
protected $total;
/**
*
* @var int
*/
protected $total;
const PER_PAGE = 10;
const PER_PAGE = 10;
/**
*
* @return set_ordermanager
*/
public function __construct($sort = false, $page = 1)
{
$appbox = appbox::get_instance(\bootstrap::getCore());
$session = $appbox->get_session();
$conn = $appbox->get_connection();
/**
*
* @return set_ordermanager
*/
public function __construct($sort = false, $page = 1)
{
$appbox = appbox::get_instance(\bootstrap::getCore());
$session = $appbox->get_session();
$conn = $appbox->get_connection();
$page = (int) $page;
$page = (int) $page;
$debut = ($page - 1) * self::PER_PAGE;
$debut = ($page - 1) * self::PER_PAGE;
$user = User_Adapter::getInstance($session->get_usr_id(), $appbox);
$base_ids = array_keys($user->ACL()->get_granted_base(array('order_master')));
$sql = 'SELECT distinct o.id, o.usr_id, created_on, deadline, `usage`
$user = User_Adapter::getInstance($session->get_usr_id(), $appbox);
$base_ids = array_keys($user->ACL()->get_granted_base(array('order_master')));
$sql = 'SELECT distinct o.id, o.usr_id, created_on, deadline, `usage`
FROM (`order_elements` e, `order` o)
WHERE e.base_id IN (' . implode(', ', $base_ids) . ')
AND e.order_id = o.id
@@ -55,128 +55,122 @@ class set_ordermanager extends set_abstract
ORDER BY o.id DESC
LIMIT ' . (int) $debut . ',' . self::PER_PAGE;
$elements = array();
$elements = array();
$stmt = $conn->prepare($sql);
$stmt->execute();
$rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt->closeCursor();
$stmt = $conn->prepare($sql);
$stmt->execute();
$rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt->closeCursor();
foreach ($rs as $row)
{
$elements[] = new set_order($row['id']);
}
foreach ($rs as $row) {
$elements[] = new set_order($row['id']);
}
if ($sort)
{
if ($sort == 'created_on')
uasort($elements, array('ordermanager', 'date_orders_sort'));
elseif ($sort == 'user')
uasort($elements, array('ordermanager', 'user_orders_sort'));
elseif ($sort == 'usage')
uasort($elements, array('ordermanager', 'usage_orders_sort'));
}
if ($sort) {
if ($sort == 'created_on')
uasort($elements, array('ordermanager', 'date_orders_sort'));
elseif ($sort == 'user')
uasort($elements, array('ordermanager', 'user_orders_sort'));
elseif ($sort == 'usage')
uasort($elements, array('ordermanager', 'usage_orders_sort'));
}
$sql = 'SELECT distinct o.id
$sql = 'SELECT distinct o.id
FROM (`order_elements` e, `order` o)
WHERE e.base_id IN (' . implode(', ', $base_ids) . ')
AND e.order_id = o.id
GROUP BY o.id
ORDER BY o.id DESC';
$stmt = $conn->prepare($sql);
$stmt->execute(array(':usr_id' => $session->get_usr_id()));
$total = $stmt->rowCount();
$stmt->closeCursor();
$stmt = $conn->prepare($sql);
$stmt->execute(array(':usr_id' => $session->get_usr_id()));
$total = $stmt->rowCount();
$stmt->closeCursor();
$this->elements = $elements;
$this->page = $page;
$this->total = $total;
$this->elements = $elements;
$this->page = $page;
$this->total = $total;
return $this;
}
return $this;
}
/**
*
* @return int
*/
public function get_page()
{
return $this->page;
}
/**
*
* @return int
*/
public function get_page()
{
return $this->page;
}
/**
*
* @return int
*/
public function get_previous_page()
{
$p_page = $this->page < 2 ? false : ($this->page - 1);
/**
*
* @return int
*/
public function get_previous_page()
{
$p_page = $this->page < 2 ? false : ($this->page - 1);
return $p_page;
}
return $p_page;
}
/**
*
* @return int
*/
public function get_next_page()
{
$t_page = ceil($this->total / self::PER_PAGE);
$n_page = $this->page >= $t_page ? false : $this->page + 1;
/**
*
* @return int
*/
public function get_next_page()
{
$t_page = ceil($this->total / self::PER_PAGE);
$n_page = $this->page >= $t_page ? false : $this->page + 1;
return $n_page;
}
return $n_page;
}
/**
*
* @param string $a
* @param string $b
* @return int
*/
protected static function usage_orders_sort($a, $b)
{
$comp = strcasecmp($a['usage'], $b['usage']);
/**
*
* @param string $a
* @param string $b
* @return int
*/
protected static function usage_orders_sort($a, $b)
{
$comp = strcasecmp($a['usage'], $b['usage']);
if ($comp == 0)
if ($comp == 0)
return 0;
return 0;
return $comp < 0 ? -1 : 1;
}
return $comp < 0 ? -1 : 1;
}
/**
*
* @param string $a
* @param string $b
* @return int
*/
protected static function user_orders_sort($a, $b)
{
$comp = strcasecmp($a['usr_display'], $b['usr_display']);
/**
*
* @param string $a
* @param string $b
* @return int
*/
protected static function user_orders_sort($a, $b)
{
$comp = strcasecmp($a['usr_display'], $b['usr_display']);
if ($comp == 0)
return 0;
if ($comp == 0)
return $comp < 0 ? -1 : 1;
}
return 0;
/**
*
* @param DateTime $a
* @param DateTime $b
* @return int
*/
protected static function date_orders_sort(DateTime $a, DateTime $b)
{
$comp = $b->format('U') - $a->format('U');
return $comp < 0 ? -1 : 1;
}
/**
*
* @param DateTime $a
* @param DateTime $b
* @return int
*/
protected static function date_orders_sort(DateTime $a, DateTime $b)
{
$comp = $b->format('U') - $a->format('U');
if ($comp == 0)
return 0;
return $comp < 0 ? -1 : 1;
}
if ($comp == 0)
return 0;
return $comp < 0 ? -1 : 1;
}
}

View File

@@ -18,13 +18,12 @@
class set_result extends set_abstract
{
/**
*
* @return set_result
*/
public function __construct()
{
return $this;
}
/**
*
* @return set_result
*/
public function __construct()
{
return $this;
}
}

View File

@@ -18,173 +18,145 @@
class set_selection extends set_abstract
{
/**
*
* @return set_selection
*/
public function __construct()
{
$this->elements = array();
return $this;
}
/**
*
* @param \Entities\Basket $basket
* @return set_selection
*/
public function load_basket(\Entities\Basket $Basket)
{
foreach ($Basket->getElements() as $basket_element)
/**
*
* @return set_selection
*/
public function __construct()
{
$this->add_element($basket_element->getRecord());
$this->elements = array();
return $this;
}
return $this;
}
/**
*
* @param array $rights
* @return set_selection
*/
public function grep_authorized(Array $rights = array(), Array $sbas_rights = array())
{
$appbox = appbox::get_instance(\bootstrap::getCore());
$session = $appbox->get_session();
$user = User_Adapter::getInstance($session->get_usr_id(), $appbox);
$to_remove = array();
foreach ($this->elements as $id => $record)
/**
*
* @param \Entities\Basket $basket
* @return set_selection
*/
public function load_basket(\Entities\Basket $Basket)
{
$base_id = $record->get_base_id();
$sbas_id = $record->get_sbas_id();
$record_id = $record->get_record_id();
if (!$rights)
{
if ($user->ACL()->has_hd_grant($record))
{
continue;
foreach ($Basket->getElements() as $basket_element) {
$this->add_element($basket_element->getRecord());
}
if ($user->ACL()->has_preview_grant($record))
{
continue;
}
if (!$user->ACL()->has_access_to_base($base_id))
{
$to_remove[] = $id;
continue;
}
}
else
{
foreach ($rights as $right)
{
if (!$user->ACL()->has_right_on_base($base_id, $right))
{
$to_remove[] = $id;
continue;
}
}
foreach ($sbas_rights as $right)
{
if (!$user->ACL()->has_right_on_sbas($sbas_id, $right))
{
$to_remove[] = $id;
continue;
}
}
}
return $this;
}
try
{
$connsbas = $record->get_databox()->get_connection();
/**
*
* @param array $rights
* @return set_selection
*/
public function grep_authorized(Array $rights = array(), Array $sbas_rights = array())
{
$appbox = appbox::get_instance(\bootstrap::getCore());
$session = $appbox->get_session();
$sql = 'SELECT record_id
$user = User_Adapter::getInstance($session->get_usr_id(), $appbox);
$to_remove = array();
foreach ($this->elements as $id => $record) {
$base_id = $record->get_base_id();
$sbas_id = $record->get_sbas_id();
$record_id = $record->get_record_id();
if ( ! $rights) {
if ($user->ACL()->has_hd_grant($record)) {
continue;
}
if ($user->ACL()->has_preview_grant($record)) {
continue;
}
if ( ! $user->ACL()->has_access_to_base($base_id)) {
$to_remove[] = $id;
continue;
}
} else {
foreach ($rights as $right) {
if ( ! $user->ACL()->has_right_on_base($base_id, $right)) {
$to_remove[] = $id;
continue;
}
}
foreach ($sbas_rights as $right) {
if ( ! $user->ACL()->has_right_on_sbas($sbas_id, $right)) {
$to_remove[] = $id;
continue;
}
}
}
try {
$connsbas = $record->get_databox()->get_connection();
$sql = 'SELECT record_id
FROM record
WHERE ((status ^ ' . $user->ACL()->get_mask_xor($base_id) . ')
& ' . $user->ACL()->get_mask_and($base_id) . ')=0
AND record_id = :record_id';
$stmt = $connsbas->prepare($sql);
$stmt->execute(array(':record_id' => $record_id));
$num_rows = $stmt->rowCount();
$stmt->closeCursor();
$stmt = $connsbas->prepare($sql);
$stmt->execute(array(':record_id' => $record_id));
$num_rows = $stmt->rowCount();
$stmt->closeCursor();
if ($num_rows == 0)
{
$to_remove[] = $id;
if ($num_rows == 0) {
$to_remove[] = $id;
}
} catch (Exception $e) {
}
}
foreach ($to_remove as $id) {
unset($this->elements[$id]);
}
}
catch (Exception $e)
{
}
return $this;
}
foreach ($to_remove as $id)
/**
*
* @param array $lst
* @return set_selection
*/
public function load_list(Array $lst, $flatten_groupings = false)
{
unset($this->elements[$id]);
foreach ($lst as $basrec) {
$basrec = explode('_', $basrec);
if (count($basrec) == 2) {
try {
$record = new record_adapter((int) $basrec[0], (int) $basrec[1], count($this->elements));
} catch (Exception $e) {
continue;
}
if ($record->is_grouping() && $flatten_groupings === true) {
foreach ($record->get_children() as $rec) {
$this->add_element($rec);
}
} else {
$this->add_element($record);
}
}
}
return $this;
}
return $this;
}
/**
*
* @param array $lst
* @return set_selection
*/
public function load_list(Array $lst, $flatten_groupings = false)
{
foreach ($lst as $basrec)
/**
*
* @return array
*/
public function get_distinct_sbas_ids()
{
$basrec = explode('_', $basrec);
if (count($basrec) == 2)
{
try
{
$record = new record_adapter((int) $basrec[0], (int) $basrec[1], count($this->elements));
$ret = array();
foreach ($this->elements as $record) {
$sbas_id = phrasea::sbasFromBas($record->get_base_id());
$ret[$sbas_id] = $sbas_id;
}
catch (Exception $e)
{
continue;
}
if ($record->is_grouping() && $flatten_groupings === true)
{
foreach ($record->get_children() as $rec)
{
$this->add_element($rec);
}
}
else
{
$this->add_element($record);
}
}
return $ret;
}
return $this;
}
/**
*
* @return array
*/
public function get_distinct_sbas_ids()
{
$ret = array();
foreach ($this->elements as $record)
{
$sbas_id = phrasea::sbasFromBas($record->get_base_id());
$ret[$sbas_id] = $sbas_id;
}
return $ret;
}
}