Refactor asket_adapter

This commit is contained in:
Romain Neutron
2011-12-28 20:04:39 +01:00
parent bfa8e851c6
commit 646db61ca7
39 changed files with 749 additions and 3623 deletions

View File

@@ -74,7 +74,14 @@ return call_user_func(
$twig = new supertwig();
$twig->addFilter(array('nl2br' => 'nl2br'));
$basket_element = basket_element_adapter::getInstance($sselcont_id);
$em = $app['Core']->getEntityManager();
/* @var $repository \Repositories\BasketElementRepository */
$repository = $em->getRepository('\Entities\BasketElement');
$basket_element = $repository->findUserElement($sselcont_id, $app['Core']->getAuthenticatedUser());
$template = '/lightbox/note_form.twig';
$output = $twig->render($template, array('basket_element' => $basket_element, 'module_name' => ''));
@@ -89,13 +96,18 @@ return call_user_func(
$browser = Browser::getInstance();
$em = $app['Core']->getEntityManager();
/* @var $repository \Repositories\BasketElementRepository */
$repository = $em->getRepository('\Entities\BasketElement');
$BasketElement = $repository->findUserElement($sselcont_id, $app['Core']->getAuthenticatedUser());
if ($browser->isMobile())
{
$basket_element = basket_element_adapter::getInstance($sselcont_id);
$output = $twig->render('lightbox/basket_element.twig', array(
'basket_element' => $basket_element,
'module_name' => $basket_element->get_record()->get_title()
'basket_element' => $BasketElement,
'module_name' => $BasketElement->get_record()->get_title()
)
);
@@ -119,17 +131,6 @@ return call_user_func(
$usr_id = $appbox->get_session()->get_usr_id();
$em = $app['Core']->getEntityManager();
$repository = $em->getRepository('\Entities\BasketElement');
/* @var $repository \Repositories\BasketElementRepository */
$BasketElement = $repository->findUserElement(
$sselcont_id
, $app['Core']->getAuthenticatedUser()
);
$Basket = $BasketElement->getBasket();
$ret = array();
@@ -224,11 +225,6 @@ return call_user_func(
, $app['Core']->getAuthenticatedUser()
);
if ($basket->is_valid())
{
$basket->get_first_element()->load_users_infos();
}
$twig = new supertwig();
$twig->addFilter(array('nl2br' => 'nl2br'));
@@ -241,7 +237,7 @@ return call_user_func(
$response = new Response($twig->render($template, array(
'baskets_collection' => $basket_collection,
'basket' => $basket,
'local_title' => strip_tags($basket->get_name()),
'local_title' => strip_tags($basket->getName()),
'module' => 'lightbox',
'module_name' => _('admin::monitor: module validation')
)
@@ -284,7 +280,7 @@ return call_user_func(
$response = new Response($twig->render($template, array(
'baskets_collection' => $basket_collection,
'basket' => $basket,
'local_title' => strip_tags($basket->get_name()),
'local_title' => strip_tags($basket->getName()),
'module' => 'lightbox',
'module_name' => _('admin::monitor: module validation')
)
@@ -358,13 +354,20 @@ return call_user_func(
$app->post('/ajax/SET_NOTE/{sselcont_id}/', function (Silex\Application $app, $sselcont_id)
{
$output = array('error' => true, 'datas' => _('Erreur lors de l\'enregistrement des donnees'));
try
{
$request = $app['request'];
$note = $request->get('note');
$basket_element = basket_element_adapter::getInstance($sselcont_id);
$basket_element->set_note($note);
$em = $app['Core']->getEntityManager();
/* @var $repository \Repositories\BasketElementRepository */
$repository = $em->getRepository('\Entities\BasketElement');
$basket_element = $repository->findUserElement($sselcont_id, $app['Core']->getAuthenticatedUser());
$basket_element->getUserValidationDatas($app['Core']->getAuthenticatedUser())
->setNote($note);
$twig = new supertwig();
$twig->addFilter(array('nl2br' => 'nl2br'));
@@ -384,11 +387,6 @@ return call_user_func(
$output = array('error' => false, 'datas' => $datas);
}
}
catch (Exception $e)
{
return new Response('Bad Request : ' . $e->getMessage() . $e->getFile() . $e->getLine(), 400);
}
$output = p4string::jsonencode($output);

View File

@@ -114,11 +114,18 @@ return call_user_func(
if ($watermark)
{
if (basket_element_adapter::is_in_validation_session($record, $user))
$em = $app['Core']->getEntityManager();
$repository = $em->getRepository('\Entities\BasketElement');
/* @var $repository \Repositories\BasketElementRepository */
if ($repository->findReceivedValidationElementsByRecord($record, $user)->count() > 0)
{
$watermark = false;
}
elseif (basket_element_adapter::has_been_received($record, $user))
elseif ($repository->findReceivedElementsByRecord($record, $user)->count() > 0)
{
$watermark = false;
}
@@ -161,14 +168,20 @@ return call_user_func(
if ($watermark)
{
if (basket_element_adapter::is_in_validation_session($record, $user))
$em = $app['Core']->getEntityManager();
$repository = $em->getRepository('\Entities\BasketElement');
if ($repository->findReceivedValidationElementsByRecord($record, $user)->count() > 0)
{
$watermark = false;
}
elseif (basket_element_adapter::has_been_received($record, $user))
elseif ($repository->findReceivedElementsByRecord($record, $user)->count() > 0)
{
$watermark = false;
}
}
return $deliver_content($session, $record, $subdef, $watermark, $stamp, $app);

View File

@@ -119,7 +119,6 @@ class Root implements ControllerProviderInterface
'GV_defaultQuery_type' => $registry->get('GV_defaultQuery_type'),
'GV_multiAndReport' => $registry->get('GV_multiAndReport'),
'GV_thesaurus' => $registry->get('GV_thesaurus'),
// 'basket_collection' => new \basketCollection($appbox, $user->get_id(), $srt),
'cgus_agreement' => \databox_cgu::askAgreement(),
'css' => $css,
'feeds' => $feeds,

View File

@@ -106,6 +106,9 @@ class Helper extends \Alchemy\Phrasea\Helper\Helper
parent::__construct($core);
$this->selection = new \set_selection();
$request = $core->getRequest();
$appbox = \appbox::get_instance();
$usr_id = $appbox->get_session()->get_usr_id();

View File

@@ -46,6 +46,52 @@ class BasketElementRepository extends EntityRepository
return $query->getResult();
}
/**
*
* @param \record_adapter $record
* @param \User_Adapter $user
* @return \Doctrine\Common\Collections\ArrayCollection
*/
public function findReceivedElementsByRecord(\record_adapter $record, \User_Adapter $user)
{
$dql = 'SELECT e FROM Entities\BasketElement e
JOIN e.basket b
WHERE b.usr_id = :usr_id AND b.pusher_id IS NOT NULL
AND e.record_id = :record_id AND e.sbas_id = :sbas_id';
$params = array(
'sbas_id' => $record->get_sbas_id(),
'record_id' => $record->get_record_id(),
'usr_id' => $user->get_id()
);
$query = $this->_em->createQuery($dql);
$query->setParameters($params);
return $query->getResult();
}
public function findReceivedValidationElementsByRecord(\record_adapter $record, \User_Adapter $user)
{
$dql = 'SELECT e FROM Entities\BasketElement e
JOIN e.basket b
JOIN b.validation v
JOIN v.participants p
WHERE p.usr_id = :usr_id
AND e.record_id = :record_id AND e.sbas_id = :sbas_id';
$params = array(
'sbas_id' => $record->get_sbas_id(),
'record_id' => $record->get_record_id(),
'usr_id' => $user->get_id()
);
$query = $this->_em->createQuery($dql);
$query->setParameters($params);
return $query->getResult();
}
/**
*
* @param type $element_id

View File

@@ -39,6 +39,24 @@ class BasketRepository extends EntityRepository
return $query->getResult();
}
/**
* Returns all unread basket for a given user that are not marked as archived
*
* @param \User_Adapter $user
* @return \Doctrine\Common\Collections\ArrayCollection
*/
public function findUnreadActiveByUser(\User_Adapter $user)
{
$dql = 'SELECT b FROM Entities\Basket b
WHERE b.usr_id = :usr_id
AND b.archived = false AND b.is_read = false';
$query = $this->_em->createQuery($dql);
$query->setParameters(array('usr_id' => $user->get_id()));
return $query->getResult();
}
/**
* Returns all baskets that are in validation session not expired and
* where a specified user is participant (not owner)
@@ -95,8 +113,7 @@ class BasketRepository extends EntityRepository
WHERE e.record_id = :record_id AND e.sbas_id = e.sbas_id';
$params = array(
'record_id' => $record->get_record_id(),
'sbas_id' => $record->get_sbas_id()
'record_id' => $record->get_record_id()
);
$query = $this->_em->createQuery($dql);

View File

@@ -585,16 +585,16 @@ class API_V1_adapter extends API_V1_Abstract
*/
protected function list_baskets($usr_id)
{
$basket_coll = new basketCollection($this->appbox, $usr_id);
$em = $this->core->getEntityManager();
$repo = $em->getRepository('\Entities\Basket');
/* @var $repo \Repositories\BasketRepository */
$baskets = $repo->findActiveByUser($this->core->getAuthenticatedUser());
$ret = array();
foreach ($basket_coll->get_baskets() as $basktype => $baskets)
{
if (!in_array($basktype, array('recept', 'baskets')))
continue;
foreach ($baskets as $basket)
$ret[$basket->get_ssel_id()] = $this->list_basket($basket);
{
$ret[$basket->getId()] = $this->list_basket($basket);
}
return $ret;

File diff suppressed because it is too large Load Diff

View File

@@ -1,832 +0,0 @@
<?php
/*
* This file is part of Phraseanet
*
* (c) 2005-2010 Alchemy
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
/**
*
* @package Basket
* @license http://opensource.org/licenses/gpl-3.0 GPLv3
* @link www.phraseanet.com
*/
class basket_element_adapter implements cache_cacheableInterface
{
/**
*
* @var Array
*/
protected $choices;
/**
*
* @var boolean
*/
protected $is_validation_item = false;
/**
*
* @var int
*/
protected $validate_id;
/**
*
* @var int
*/
protected $my_agreement;
/**
*
* @var string
*/
protected $my_note;
/**
*
* @var int
*/
protected $avrAgree;
/**
*
* @var int
*/
protected $avrDisAgree;
/**
*
* @var int
*/
protected $sselcont_id;
/**
*
* @var int
*/
protected $parent_record_id;
/**
*
* @var int
*/
protected $ssel_id;
/**
*
* @var record_adapter
*/
protected $record;
protected $usr_id;
/**
*
* @var array
*/
protected static $_instance = array();
public function __construct($sselcont_id)
{
$appbox = appbox::get_instance();
$session = $appbox->get_session();
$this->usr_id = $session->get_usr_id();
$this->sselcont_id = (int) $sselcont_id;
$this->load();
return $this;
}
protected function load()
{
try
{
$datas = $this->get_data_from_cache();
$this->ssel_id = $datas['ssel_id'];
$this->order = $datas['order'];
$this->record = new record_adapter($datas['sbas_id'], $datas['record_id'], $this->order);
$this->avrDisAgree = $datas['avrDisAgree'];
$this->avrAgree = $datas['avrAgree'];
$this->is_validation_item = $datas['is_validation_item'];
$this->my_agreement = $datas['my_agreement'];
$this->my_note = $datas['my_note'];
$this->validate_id = $datas['validate_id'];
$this->choices = $datas['choices'];
$this->avrAgree = $datas['avrAgree'];
$this->avrDisAgree = $datas['avrDisAgree'];
return $this;
}
catch (Exception $e)
{
}
$sql = 'SELECT s.usr_id as owner, v.id as validate_id, v.can_see_others,
c.base_id, c.record_id, c.ord, c.ssel_id, v.usr_id,
d.agreement, d.note, d.updated_on
FROM (sselcont c, ssel s)
LEFT JOIN (validate v, validate_datas d)
ON (d.sselcont_id = c.sselcont_id AND d.validate_id = v.id )
WHERE s.ssel_id = c.ssel_id
AND c.sselcont_id = :sselcont_id';
try
{
$conn = connection::getPDOConnection();
$stmt = $conn->prepare($sql);
$stmt->execute(array(':sselcont_id' => $this->sselcont_id));
$rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt->closeCursor();
}
catch (Exception $e)
{
}
$first = true;
foreach ($rs as $row)
{
if ($row['validate_id'])
{
$this->is_validation_item = true;
if ($row['owner'] == $this->usr_id)
$see_others = true;
else
$see_others = ($row['can_see_others'] == '1');
if (!$see_others)
{
if ($row['usr_id'] != $this->usr_id)
continue;
}
}
if ($first)
{
$sbas_id = (int) phrasea::sbasFromBas($row['base_id']);
$record_id = (int) $row['record_id'];
$this->ssel_id = (int) $row['ssel_id'];
$this->order = $number = (int) $row['ord'];
$this->record = new record_adapter($sbas_id, $record_id, $number);
if ($this->is_validation_item)
{
$this->choices = array();
$this->avrAgree = 0;
$this->avrDisAgree = 0;
}
$first = false;
}
if ($this->is_validation_item)
{
if ($row['usr_id'] == $this->usr_id)
{
$this->my_agreement = (int) $row['agreement'];
$this->my_note = $row['note'];
$this->validate_id = (int) $row['validate_id'];
}
$this->choices[$row['usr_id']] = array(
'usr_id' => $row['usr_id'],
'usr_name' => User_Adapter::getInstance($row['usr_id'], appbox::get_instance())->get_display_name(),
'is_mine' => ($row['usr_id'] == $this->usr_id),
'agreement' => $row['agreement'],
'updated_on' => $row['updated_on'],
'note' => $row['note']
);
$this->avrAgree += $row["agreement"] > 0 ? 1 : 0;
$this->avrDisAgree += $row["agreement"] < 0 ? 1 : 0;
}
}
$datas = array(
'ssel_id' => $this->ssel_id
, 'sbas_id' => (int) $sbas_id
, 'record_id' => $record_id
, 'order' => $this->order
, 'is_validation_item' => $this->is_validation_item
, 'my_agreement' => $this->my_agreement
, 'my_note' => $this->my_note
, 'validate_id' => $this->validate_id
, 'choices' => $this->choices
, 'avrAgree' => $this->avrAgree
, 'avrDisAgree' => $this->avrDisAgree
);
$this->set_data_to_cache($datas);
return $this;
}
public function get_record()
{
return $this->record;
}
/**
*
* @return int
*/
public function get_order()
{
return $this->order;
}
/**
*
* @param int $number
* @return basket_element_adapter
*/
public function set_order($order)
{
$this->order = (int) $order;
return $this;
}
/**
* @return basket_element_adapter
*/
public static function getInstance($sselcont_id)
{
if (!isset(self::$_instance[$sselcont_id]))
{
self::$_instance[$sselcont_id] = new self($sselcont_id);
}
return array_key_exists($sselcont_id, self::$_instance) ? self::$_instance[$sselcont_id] : false;
}
/**
*
* @param basket_adapter $basket
* @param int $base_id
* @param int $record_id
* @param int $parent_record_id
* @param string $adjust_validation_datas
* @param boolean $fixing
* @return basket_element_adapter
*/
public static function create(basket_adapter $basket, $base_id, $record_id, $parent_record_id, $adjust_validation_datas, $fixing)
{
$appbox = appbox::get_instance();
$session = $appbox->get_session();
$user = User_Adapter::getInstance($session->get_usr_id(), $appbox);
$sbas_id = phrasea::sbasFromBas($base_id);
$record = new record_adapter($sbas_id, $record_id);
$ssel_id = $basket->get_ssel_id();
if (!$user->ACL()->has_right_on_base($base_id, 'canputinalbum'))
throw new Exception('You do not have rights' .
' to use this document in basket.');
$exists = false;
$sql = 'SELECT sselcont_id FROM sselcont
WHERE ssel_id = :ssel_id AND base_id = :base_id AND record_id = :record_id ';
$stmt = $appbox->get_connection()->prepare($sql);
$params = array(
':ssel_id' => $basket->get_ssel_id()
, ':base_id' => $base_id
, ':record_id' => $record_id
);
$stmt->execute($params);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt->closeCursor();
if ($row)
{
return new self($row['sselcont_id']);
}
$connbas = connection::getPDOConnection($sbas_id);
if (!$sbas_id)
throw new Exception('Unknown database');
if ($parent_record_id && $fixing === false)
{
if (!$user->ACL()->has_right_on_base($base_id, 'canaddrecord'))
throw new Exception('You do not have the right');
if ($record->is_grouping())
throw new Exception('Can\'t add grouping to grouping');
$ord = 0;
$sql = "SELECT (max(ord)+1) as ord
FROM regroup WHERE rid_parent = :parent_record_id";
$stmt = $connbas->prepare($sql);
$stmt->execute(array(':parent_record_id' => $parent_record_id));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt->closeCursor();
if ($row)
{
$ord = is_null($row["ord"]) ? 0 : $row["ord"];
}
else
{
$ord = 0;
}
$sql = 'INSERT INTO regroup (id, rid_parent, rid_child, dateadd, ord)
VALUES (null, :parent_record_id, :record_id, NOW(), :ord)';
$params = array(
':parent_record_id' => $parent_record_id
, ':record_id' => $record_id
, ':ord' => $ord
);
$stmt = $connbas->prepare($sql);
$stmt->execute($params);
$stmt->closeCursor();
$sql = 'UPDATE record SET moddate = NOW() WHERE record_id = :parent_record_id';
$stmt = $connbas->prepare($sql);
$stmt->execute(array(':parent_record_id' => $parent_record_id));
$stmt->closeCursor();
}
$sql = 'SELECT max(ord) as ord FROM sselcont WHERE ssel_id = :ssel_id';
$stmt = $appbox->get_connection()->prepare($sql);
$stmt->execute(array(':ssel_id' => $basket->get_ssel_id()));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt->closeCursor();
if ($row)
{
$ord = (int) $row['ord'] + 1;
}
else
{
$ord = 0;
}
$sql = ' INSERT INTO sselcont
(sselcont_id, ssel_id, base_id, record_id, ord)
VALUES (null, :ssel_id, :base_id, :record_id, :ord) ';
$stmt = $appbox->get_connection()->prepare($sql);
$params = array(
':ssel_id' => $basket->get_ssel_id()
, ':base_id' => $base_id
, ':record_id' => $record_id
, ':ord' => $ord
);
$stmt->execute($params);
$stmt->closeCursor();
$sselcont_id = $appbox->get_connection()->lastInsertId();
$ret['error'] = false;
$ret['datas'][] = $sselcont_id;
$sql = 'UPDATE ssel SET updater=NOW() WHERE ssel_id = :ssel_id';
$stmt = $appbox->get_connection()->prepare($sql);
$stmt->execute(array(':ssel_id' => $basket->get_ssel_id()));
$stmt->closeCursor();
if ($adjust_validation_datas == 'myvalid')
{
$sql = 'INSERT INTO validate_datas
(SELECT distinct null as id, id as validate_id
, :sselcont_id as sselcont_id
, null as updated_on, 0 as agreement, "" as note
FROM validate
WHERE ssel_id = :ssel_id)';
$stmt = $appbox->get_connection()->prepare($sql);
$stmt->execute(array(':sselcont_id' => $sselcont_id, ':ssel_id' => $basket->get_ssel_id()));
$stmt->closeCursor();
$sql = 'SELECT usr_id FROM validate WHERE ssel_id = :ssel_id';
$stmt = $appbox->get_connection()->prepare($sql);
$stmt->execute(array(':ssel_id' => $basket->get_ssel_id()));
$rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt->closeCursor();
foreach ($rs as $row)
{
if ($session->get_usr_id() != $row['usr_id'])
{
$basket->set_unread($row['usr_id']);
}
}
}
if ($parent_record_id)
{
$sql = 'SELECT null as id, ssel_id, usr_id
FROM ssel
WHERE usr_id != :usr_id AND rid = :parent_record_id
AND sbas_id = :sbas_id AND temporaryType="1"';
$stmt = $appbox->get_connection()->prepare($sql);
$params = array(
':usr_id' => $session->get_usr_id()
, ':parent_record_id' => $parent_record_id
, ':sbas_id' => $sbas_id
);
$stmt->execute($params);
$rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt->closeCursor();
foreach ($rs as $row)
{
$sql = 'SELECT max(ord) as ord FROM sselcont WHERE ssel_id = :ssel_id';
$stmt = $appbox->get_connection()->prepare($sql);
$stmt->execute(array(':ssel_id' => $row['ssel_id']));
$row2 = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt->closeCursor();
if ($row)
{
$ord = (int) $row2['ord'] + 1;
}
else
{
$ord = 0;
}
$sqlUp = ' INSERT INTO sselcont
(sselcont_id, ssel_id, base_id, record_id,ord)
VALUES (null, :ssel_id, :base_id, :record_id, :ord) ';
$stmt = $appbox->get_connection()->prepare($sql);
$params = array(
':ssel_id' => $row['ssel_id']
, ':base_id' => $base_id
, ':record_id' => $record_id
, ':ord' => $ord
);
$stmt->execute($params);
$stmt->closeCursor();
$sql = 'UPDATE ssel SET updater=NOW() WHERE ssel_id = :ssel_id';
$stmt = $appbox->get_connection()->prepare($sql);
$stmt->execute(array(':ssel_id' => $row['ssel_id']));
$stmt->closeCursor();
try
{
$basket_to_clean = basket_adapter::getInstance($appbox, $row['ssel_id'], $user->get_id());
$basket_to_clean->set_unread($row['usr_id']);
}
catch (Exception $e)
{
}
}
}
$basket->delete_cache();
return new self($sselcont_id);
}
/**
*
* @param string $note
* @return boolean
*/
function set_note($note)
{
if (!$this->is_validation_item)
{
throw new Exception('Element ' . $this->sselcont_id . ' is not a validation item');
}
$note = strip_tags($note);
if (!$this->validate_id)
return false;
$appbox = appbox::get_instance();
$usr_id = $appbox->get_session()->get_usr_id();
$sql = 'UPDATE validate_datas SET note = :note
WHERE sselcont_id = :sselcont_id AND validate_id = :validate_id ';
$stmt = $appbox->get_connection()->prepare($sql);
$params = array(
':note' => $note
, ':sselcont_id' => $this->sselcont_id
, ':validate_id' => $this->validate_id
);
$stmt->execute($params);
$stmt->closeCursor();
$this->my_note = $note;
foreach ($this->choices as $key => $values)
{
if ($values['is_mine'])
{
$this->choices[$key]['note'] = $note;
break;
}
}
try
{
$basket = basket_adapter::getInstance($appbox, $this->ssel_id, $usr_id);
$basket->delete_cache();
}
catch (Exception $e)
{
}
return $this;
}
/**
*
* @return void
*/
function load_users_infos()
{
if (!$this->is_validation_item)
{
throw new Exception('Element is not a validation item');
return false;
}
foreach ($this->choices as $key => $value)
{
$this->choices[$key]['usr_display'] = User_Adapter::getInstance($value['usr_id'], appbox::get_instance())->get_display_name();
}
}
/**
*
* @return int
*/
function get_note_count()
{
if (!$this->is_validation_item)
{
throw new Exception('Element is not a validation item');
return false;
}
$n = 0;
foreach ($this->choices as $key => $value)
{
if (trim($value['note']) != '')
{
$n++;
}
}
return $n;
}
/**
*
* @param boolean $boolean
* @return string
*/
function set_agreement($boolean)
{
if (!$this->is_validation_item)
{
throw new Exception('not a validation item');
}
if (!$this->validate_id)
throw new Exception('not a validation item');
$appbox = appbox::get_instance();
$usr_id = $appbox->get_session()->get_usr_id();
$boolean = in_array($boolean, array('1', '-1')) ? $boolean : '0';
$sql = 'UPDATE validate_datas
SET agreement = :agreement
WHERE sselcont_id = :sselcont_id
AND validate_id = :validate_id';
$params = array(
':agreement' => $boolean
, ':sselcont_id' => $this->sselcont_id
, ':validate_id' => $this->validate_id
);
$stmt = $appbox->get_connection()->prepare($sql);
$stmt->execute($params);
$stmt->closeCursor();
$this->delete_data_from_cache();
$basket = basket_adapter::getInstance($appbox, $this->ssel_id, $usr_id);
$basket->delete_cache();
return $this;
}
/**
*
* @return int
*/
public function get_sselcont_id()
{
return $this->sselcont_id;
}
/**
*
* @return boolean
*/
public function is_validation_item()
{
return $this->is_validation_item;
}
/**
*
* @return int
*/
public function get_my_agreement()
{
return $this->my_agreement;
}
/**
*
* @return string
*/
public function get_my_note()
{
return $this->my_note;
}
/**
*
* @return Array
*/
public function get_choices()
{
return $this->choices;
}
/**
*
* @return int
*/
public function get_ssel_id()
{
return $this->ssel_id;
}
public static function is_in_validation_session(record_Interface $record, User_Interface $user)
{
$conn = connection::getPDOConnection();
$sql = 'SELECT v.id FROM sselcont c, validate v
WHERE c.base_id = :base_id AND c.record_id = :record_id
AND v.usr_id = :usr_id AND c.ssel_id = v.ssel_id';
$params = array(
':base_id' => $record->get_base_id()
, ':record_id' => $record->get_record_id()
, ':usr_id' => $user->get_id()
);
$stmt = $conn->prepare($sql);
$stmt->execute($params);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt->closeCursor();
return!!$row;
}
public static function has_been_received(record_Interface $record, User_Interface $user)
{
$conn = connection::getPDOConnection();
$sql = 'SELECT sselcont_id FROM sselcont c, ssel s
WHERE c.ssel_id=s.ssel_id AND c.record_id = :record_id
AND c.base_id = :base_id AND s.pushFrom > 0
AND s.usr_id = :usr_id';
$params = array(
':base_id' => $record->get_base_id()
, ':record_id' => $record->get_record_id()
, ':usr_id' => $user->get_id()
);
$stmt = $conn->prepare($sql);
$stmt->execute($params);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt->closeCursor();
return!!$row;
}
public function get_avrAgree()
{
return $this->avrAgree;
}
public function get_avrDisAgree()
{
return $this->avrDisAgree;
}
public function validate(user_adapter $from_user, User_Adapter $to_user, $validate_id, $can_hd)
{
$appbox = appbox::get_instance();
if ($can_hd)
$to_user->ACL()->grant_hd_on($this->get_record(), $from_user, 'validate');
else
$to_user->ACL()->grant_preview_on($this->get_record(), $from_user, 'validate');
$sql = 'REPLACE INTO validate_datas
(id, validate_id, sselcont_id, updated_on, agreement)
VALUES
(null, :validate_id, :sselcont_id, null, 0)';
$stmt = $appbox->get_connection()->prepare($sql);
$params = array(
':validate_id' => $validate_id
, ':sselcont_id' => $this->get_sselcont_id()
);
$stmt->execute($params);
$stmt->closeCursor();
if (!$this->is_validation_item)
{
$this->choices = array();
$this->avrAgree = 0;
$this->avrDisAgree = 0;
}
$this->is_validation_item = true;
$this->choices[$to_user->get_id()] = array(
'usr_id' => $to_user->get_id(),
'usr_name' => $to_user->get_display_name(),
'is_mine' => ($to_user->get_id() == $this->usr_id),
'agreement' => 0,
'updated_on' => new DateTime(),
'note' => ''
);
if ($to_user->get_id() == $this->usr_id)
{
$this->validate_id = (int) $validate_id;
}
$this->delete_data_from_cache();
return $this;
}
public function get_cache_key($option = null)
{
return 'basket_element_' . $this->usr_id . '_' . $this->sselcont_id . ($option ? '_' . $option : '');
;
}
public function get_data_from_cache($option = null)
{
$appbox = appbox::get_instance();
return $appbox->get_data_from_cache($this->get_cache_key($option));
}
public function set_data_to_cache($value, $option = null, $duration = 0)
{
$appbox = appbox::get_instance();
return $appbox->set_data_to_cache($value, $this->get_cache_key($option), $duration);
}
public function delete_data_from_cache($option = null)
{
$appbox = appbox::get_instance();
return $appbox->delete_data_from_cache($this->get_cache_key($option));
}
}

View File

@@ -1,179 +0,0 @@
<?php
/*
* This file is part of Phraseanet
*
* (c) 2005-2010 Alchemy
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class basketCollection
{
private $baskets = array();
/**
* @param string $order (optionnal name_asc or date_desc - defaut to name_asc)
* @param array $except (array of element not return. available values are regroup baskets and recept)
* @return basketCollectionObject
*/
function __construct(appbox $appbox, $usr_id, $order='name asc', $except = array())
{
$user = User_Adapter::getInstance($usr_id, $appbox);
$current_timestamp_obj = new DateTime();
$current_timestamp = $current_timestamp_obj->format('U');
$sql = 'SELECT ssel_id FROM ssel WHERE usr_id = :usr_id
AND temporaryType="0"';
$stmt = $appbox->get_connection()->prepare($sql);
$stmt->execute(array(':usr_id' => $usr_id));
$rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt->closeCursor();
if (count($rs) === 0)
{
$basket = basket_adapter::create($appbox, '', $user);
}
$baskets = array();
$baskets['baskets'] = $baskets['recept'] = $baskets['regroup'] = array();
$core = bootstrap::getCore();
$em = $core->getEntityManager();
$baskets['baskets'] = $em->getRepository('Entities\Basket')
->findBy(array('usr_id' => $usr_id, 'pusher_id' => null));
$baskets['regroup'] = $em->getRepository('Entities\StoryWZ')
->findBy(array('usr_id' => $usr_id));
// $sql = 'SELECT s.ssel_id, s.usr_id as owner, v.id as validate_id,
// s.temporaryType, s.pushFrom, v.expires_on FROM ssel s
// LEFT JOIN validate v
// ON (v.ssel_id = s.ssel_id AND v.usr_id = :usr_id_v)
// WHERE (s.usr_id = :usr_id_o OR v.id IS NOT NULL)';
//
// $stmt = $appbox->get_connection()->prepare($sql);
// $stmt->execute(array(':usr_id_o' => $usr_id, ':usr_id_v' => $usr_id));
// $rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
// $stmt->closeCursor();
// foreach ($rs as $row)
// {
// $is_mine = ($row['owner'] == $usr_id);
//
// $expires_on_obj = new DateTime($row['expires_on']);
// $expires_on = $expires_on_obj->format('U');
//
// if ($row['validate_id'] != null && !$is_mine && $expires_on < $current_timestamp)
// continue;
//
// if ($row['temporaryType'] == '1')
// $baskets['regroup'][] = basket_adapter::getInstance($appbox, $row['ssel_id'], $usr_id);
// elseif (!is_null($row['validate_id']))
// {
//// $baskets['baskets'][] = basket_adapter::getInstance($appbox, $row['ssel_id'], $usr_id);
// }
// elseif ((int) $row['pushFrom'] > 0)
// $baskets['recept'][] = basket_adapter::getInstance($appbox, $row['ssel_id'], $usr_id);
//// else
//// $baskets['baskets'][] = basket_adapter::getInstance($appbox, $row['ssel_id'], $usr_id);
// }
$to_remove = array_intersect(array('recept', 'regroup', 'baskets'), $except);
foreach ($to_remove as $type)
$baskets[$type] = array();
if ($order == 'name asc')
{
uasort($baskets['baskets'], array('basketCollection', 'story_name_sort'));
uasort($baskets['regroup'], array('basketCollection', 'story_name_sort'));
uasort($baskets['recept'], array('basketCollection', 'story_name_sort'));
}
if ($order == 'date desc')
{
uasort($baskets['baskets'], array('basketCollection', 'story_date_sort'));
uasort($baskets['regroup'], array('basketCollection', 'story_date_sort'));
uasort($baskets['recept'], array('basketCollection', 'story_date_sort'));
}
$this->baskets = $baskets;
return $this;
}
public function get_baskets()
{
return $this->baskets;
}
function get_names()
{
$array_names = array();
foreach ($this->baskets as $type_name => $type)
{
foreach ($type as $basket)
{
$array_names[] = array('ssel_id' => $basket->get_ssel_id(), 'name' => $basket->get_name(), 'type' => $type_name);
}
}
return $array_names;
}
function story_date_sort($a, $b)
{
if (!$a->create || !$b->create)
return 0;
$comp = strcasecmp($a->create, $b->create);
if ($comp == 0)
return 0;
return $comp < 0 ? -1 : 1;
}
function story_name_sort($a, $b)
{
if (!$a->getName() || !$b->getName())
{
return 0;
}
$comp = strcasecmp($a->getName(), $b->getName());
if ($comp == 0)
return 0;
return $comp < 0 ? -1 : 1;
}
public static function get_updated_baskets()
{
$appbox = appbox::get_instance();
$conn = $appbox->get_connection();
$session = $appbox->get_session();
$sql = 'SELECT ssel_id FROM sselnew WHERE usr_id = :usr_id';
$stmt = $conn->prepare($sql);
$stmt->execute(array(':usr_id' => $session->get_usr_id()));
$rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt->closeCursor();
$baskets = array();
foreach ($rs as $row)
{
$baskets[] = basket_adapter::getInstance($appbox, $row['ssel_id'], $session->get_usr_id());
}
return $baskets;
}
}

View File

@@ -1923,7 +1923,7 @@ class record_adapter implements record_Interface, cache_cacheableInterface
$Core = bootstrap::getCore();
$em = $Core->getEntityManager();
$repo = $em->getRepository('\Entities\Baskets');
$repo = $em->getRepository('\Entities\Basket');
/* @var $$repo \Repositories\BasketRepository */
return $repo->findContainingRecord($this);

View File

@@ -225,7 +225,7 @@ class record_preview extends record_adapter
$this->train = $results->get_datas();
break;
case 'BASK':
$this->train = $this->container->get_elements();
$this->train = $this->container->getElements();
break;
case 'REG':
$this->train = $this->container->get_children();

View File

@@ -78,7 +78,7 @@ class set_export extends set_abstract
new record_exportElement(
$basket_element->getRecord()->get_sbas_id(),
$record_id,
$basket->get_name() . '/',
$basket->getName() . '/',
$remain_hd[$base_id]
);

View File

@@ -264,9 +264,17 @@ class set_order extends set_abstract
{
$sbas_id = phrasea::sbasFromBas($basrec['base_id']);
$record = new record_adapter($sbas_id, $basrec['record_id']);
$ret = $basket->push_element($record, false, false);
if ($ret['error'] === false)
{
$BasketElement = new BasketElement();
$BasketElement->setRecord($record);
$BasketElement->setBasket($Basket);
$Basket->addBasketElement($BasketElement);
$em->persist($BasketElement);
$em->merge($Basket);
$params = array(
':usr_id' => $session->get_usr_id()
, ':order_id' => $this->id
@@ -277,7 +285,7 @@ class set_order extends set_abstract
$n++;
$this->user->ACL()->grant_hd_on($record, $pusher, 'order');
}
unset($record);
}
catch (Exception $e)
@@ -285,6 +293,8 @@ class set_order extends set_abstract
}
}
$em->flush();
$stmt->closeCursor();
if ($n > 0)

View File

@@ -71,25 +71,14 @@ class Bridge_Application extends PhraseanetWebTestCaseAuthenticatedAbstract
$accounts = Bridge_Account::get_accounts_by_user($appbox, self::$user);
$usr_id = self::$user->get_id();
try
{
$basket_coll = new basketCollection($appbox, $usr_id);
$baskets = $basket_coll->get_baskets();
if (count($baskets["baskets"]) > 0)
{
$basket = array_shift($baskets["baskets"]);
$crawler = $this->client->request('POST', '/bridge/manager/', array('ssel' => $basket->get_ssel_id()));
$basket = $this->insertOneBasket();
$crawler = $this->client->request('POST', '/bridge/manager/', array('ssel' => $basket->getId()));
$pageContent = $this->client->getResponse()->getContent();
$this->assertNotContains("Oups ! something went wrong !", $pageContent);
$this->assertEquals(count($accounts) + 2, $crawler->filter('form')->count());
$this->assertTrue($this->client->getResponse()->isOk());
}
}
catch (Exception $e)
{
}
}
public function testLogin()
{

View File

@@ -1059,6 +1059,77 @@ abstract class PhraseanetPHPUnitAbstract extends WebTestCase
}
}
/**
*
* @return \Entities\BasketElement
*/
protected function insertOneBasketElement()
{
$basket = $this->insertOneBasket();
$basketElement = new \Entities\BasketElement();
$basketElement->setRecord(self::$record_1);
$basketElement->setBasket($basket);
$basket->addBasketElement($basketElement);
$em = self::$core->getEntityManager();
$em->persist($basketElement);
$em->merge($basket);
$em->flush();
return $basketElement;
}
/**
*
* @return \Entities\Basket
*/
protected function insertOneValidationBasket()
{
$em = self::$core->getEntityManager();
$basketElement = $this->insertOneBasketElement();
$basket = $basketElement->getBasket();
$Validation = new Entities\ValidationSession();
$Validation->setBasket($basket);
$Validation->setInitiator(self::$user);
$basket->setValidation($Validation);
$em->persist($Validation);
$em->merge($basket);
$Participant = new Entities\ValidationParticipant();
$Participant->setUser(self::$user);
$Participant->setCanAgree(true);
$Participant->setCanSeeOthers(true);
$Validation->addValidationParticipant($Participant);
$Participant->setSession($Validation);
$em->persist($Participant);
$em->merge($Validation);
$Data = new Entities\ValidationData();
$Data->setBasketElement($basketElement);
$Data->setParticipant($Participant);
$basketElement->addValidationData($Data);
$em->persist($Data);
$em->merge($basketElement);
$em->flush();
return $basket;
}
/**
* Create a new basket with current auhtenticated user as owner
* Create a new sessionValidation with the newly created basket

View File

@@ -397,7 +397,7 @@ class API_V1_adapterTest extends PhraseanetPHPUnitAuthenticatedAbstract
$em->persist($Basket);
$em->flush();
$ssel_id = $basket->getId();
$ssel_id = $Basket->getId();
$request = new Request(array(), array(), array(), array(), array(), array('HTTP_Accept' => 'application/json'));
$result = $this->object->delete_basket($request, $ssel_id);
@@ -422,12 +422,11 @@ class API_V1_adapterTest extends PhraseanetPHPUnitAuthenticatedAbstract
{
$appbox = appbox::get_instance();
$usr_id = $appbox->get_session()->get_usr_id();
$basket_coll = new basketCollection($appbox, $usr_id);
$baskets = $basket_coll->get_baskets();
$basket = array_pop($baskets['baskets']);
$basket = $this->insertOneBasket();
$request = new Request(array(), array(), array(), array(), array(), array('HTTP_Accept' => 'application/json'));
$result = $this->object->get_basket($request, $basket->get_ssel_id());
$result = $this->object->get_basket($request, $basket->getId());
$this->assertEquals(200, $result->get_http_code());
$this->assertEquals('application/json', $result->get_content_type());
$this->assertTrue(is_object(json_decode($result->format())));
@@ -437,36 +436,38 @@ class API_V1_adapterTest extends PhraseanetPHPUnitAuthenticatedAbstract
{
$appbox = appbox::get_instance();
$usr_id = $appbox->get_session()->get_usr_id();
$basket_coll = new basketCollection($appbox, $usr_id);
$baskets = $basket_coll->get_baskets();
$basket = array_pop($baskets['baskets']);
$basket = $this->insertOneBasket();
$request = new Request(array(), array(), array('name' => 'PROUTO'), array(), array(), array('HTTP_Accept' => 'application/json'));
$result = $this->object->set_basket_title($request, $basket->get_ssel_id());
$result = $this->object->set_basket_title($request, $basket->getId());
$this->assertEquals(200, $result->get_http_code());
$this->assertEquals('application/json', $result->get_content_type());
$this->assertTrue(is_object(json_decode($result->format())));
$basket = basket_adapter::getInstance($appbox, $basket->get_ssel_id(), $usr_id);
$this->assertEquals('PROUTO', $basket->get_name());
self::$core->getEntityManager()->refresh($basket);
$this->assertEquals('PROUTO', $basket->getName());
}
public function testSet_basket_description()
{
$appbox = appbox::get_instance();
$usr_id = $appbox->get_session()->get_usr_id();
$basket_coll = new basketCollection($appbox, $usr_id);
$baskets = $basket_coll->get_baskets();
$basket = array_pop($baskets['baskets']);
$basket = $this->insertOneBasket();
$request = new Request(array(), array(), array('description' => 'une belle description'), array(), array(), array('HTTP_Accept' => 'application/json'));
$result = $this->object->set_basket_description($request, $basket->get_ssel_id());
$result = $this->object->set_basket_description($request, $basket->getId());
$this->assertEquals(200, $result->get_http_code());
$this->assertEquals('application/json', $result->get_content_type());
$this->assertTrue(is_object(json_decode($result->format())));
$basket = basket_adapter::getInstance($appbox, $basket->get_ssel_id(), $usr_id);
$this->assertEquals('une belle description', $basket->get_description());
$em = self::$core->getEntityManager();
/* @var $em \Doctrine\ORM\EntityManager */
$em->refresh($basket);
$this->assertEquals('une belle description', $basket->getDescription());
}
public function testSearch_publications()

View File

@@ -795,8 +795,6 @@ class API_V1_test_adapter extends PhraseanetWebTestCaseAbstract
{
$this->evaluateGoodBasket($basket);
$this->assertEquals('un Joli Nom', $basket->name);
$basket_obj = basket_adapter::getInstance($appbox, $basket->ssel_id, $appbox->get_session()->get_usr_id());
$basket_obj->delete();
}
}
@@ -804,17 +802,10 @@ class API_V1_test_adapter extends PhraseanetWebTestCaseAbstract
{
$appbox = appbox::get_instance();
$usr_id = $appbox->get_session()->get_usr_id();
$basket_coll = new basketCollection($appbox, $usr_id);
$found = false;
foreach ($basket_coll->get_baskets() as $bask_group => $baskets)
{
if (!in_array($bask_group, array('recept', 'baskets')))
continue;
foreach ($baskets as $basket)
{
$found = true;
$route = '/baskets/' . $basket->get_ssel_id() . '/content/?oauth_token=' . self::$token;
$basket = $this->insertOneBasket();
$route = '/baskets/' . $basket->getId() . '/content/?oauth_token=' . self::$token;
$this->evaluateMethodNotAllowedRoute($route, array('POST', 'PUT', 'DELETE'));
@@ -832,7 +823,7 @@ class API_V1_test_adapter extends PhraseanetWebTestCaseAbstract
{
$this->evaluateGoodBasket($basket_str);
$this->assertEquals(count($basket->get_elements()), count((array) $basket_str->basket_elements));
$this->assertEquals(count($basket->getElements()), count((array) $basket_str->basket_elements));
foreach ($basket_str->basket_elements as $basket_element)
{
$this->assertObjectHasAttribute('basket_element_id', $basket_element);
@@ -846,29 +837,13 @@ class API_V1_test_adapter extends PhraseanetWebTestCaseAbstract
}
}
}
}
if (!$found)
$this->markTestSkipped('Unable to test basket set title');
}
public function testSetBasketTitle()
{
$appbox = appbox::get_instance();
$usr_id = $appbox->get_session()->get_usr_id();
$basket_coll = new basketCollection($appbox, $usr_id);
$basket = $this->insertOneBasket();
$found = false;
foreach ($basket_coll->get_baskets() as $bask_group => $baskets)
{
if (!in_array($bask_group, array('recept', 'baskets')))
continue;
foreach ($baskets as $basket)
{
$found = true;
$route = '/baskets/' . $basket->get_ssel_id() . '/setname/?oauth_token=' . self::$token;
$route = '/baskets/' . $basket->getId() . '/setname/?oauth_token=' . self::$token;
$this->evaluateMethodNotAllowedRoute($route, array('GET', 'PUT', 'DELETE'));
@@ -918,31 +893,13 @@ class API_V1_test_adapter extends PhraseanetWebTestCaseAbstract
$this->assertEquals($basket_str->name, 'aéaa');
}
break;
}
}
if (!$found)
$this->markTestSkipped('Unable to test basket set title');
}
public function testSetBasketDescription()
{
$appbox = appbox::get_instance();
$usr_id = $appbox->get_session()->get_usr_id();
$basket_coll = new basketCollection($appbox, $usr_id);
$basket = $this->insertOneBasket();
$found = false;
foreach ($basket_coll->get_baskets() as $bask_group => $baskets)
{
if (!in_array($bask_group, array('recept', 'baskets')))
continue;
foreach ($baskets as $basket)
{
$found = true;
$route = '/baskets/' . $basket->get_ssel_id() . '/setdescription/?oauth_token=' . self::$token;
$route = '/baskets/' . $basket->getId() . '/setdescription/?oauth_token=' . self::$token;
$this->evaluateMethodNotAllowedRoute($route, array('GET', 'PUT', 'DELETE'));
@@ -963,21 +920,14 @@ class API_V1_test_adapter extends PhraseanetWebTestCaseAbstract
}
break;
}
}
if (!$found)
$this->markTestSkipped('Unable to test basket set description');
}
public function testDeleteBasket()
{
$appbox = appbox::get_instance();
$usr_id = $appbox->get_session()->get_usr_id();
$basket = $this->insertOneBasket();
$basket2 = $this->insertOneBasket();
$basket = basket_adapter::create($appbox, 'test suppression panier', User_Adapter::getInstance($usr_id, $appbox));
$route = '/baskets/' . $basket->get_ssel_id() . '/delete/?oauth_token=' . self::$token;
$route = '/baskets/' . $basket->getId() . '/delete/?oauth_token=' . self::$token;
$this->evaluateMethodNotAllowedRoute($route, array('GET', 'PUT', 'DELETE'));
@@ -988,9 +938,16 @@ class API_V1_test_adapter extends PhraseanetWebTestCaseAbstract
$this->evaluateMetaJson200($content);
$this->assertObjectHasAttribute("baskets", $content->response);
$found = false;
foreach ($content->response->baskets as $basket)
{
$this->evaluateGoodBasket($basket);
$found = true;
}
if(!$found)
{
$this->fail('There should be a basket left');
}
}

View File

@@ -254,7 +254,7 @@ class API_V1_test_adapterYaml extends PhraseanetWebTestCaseAbstract
$this->assertTrue((strlen($metadatas["separator"]) > 0));
$this->assertTrue(is_string($metadatas["thesaurus_branch"]));
$this->assertTrue(in_array($metadatas["type"], array(databox_field::TYPE_DATE,databox_field::TYPE_STRING, databox_field::TYPE_NUMBER, databox_field::TYPE_TEXT)));
$this->assertTrue(in_array($metadatas["type"], array(databox_field::TYPE_DATE, databox_field::TYPE_STRING, databox_field::TYPE_NUMBER, databox_field::TYPE_TEXT)));
$this->assertTrue(is_bool($metadatas["indexable"]));
$this->assertTrue(is_bool($metadatas["multivalue"]));
$this->assertTrue(is_bool($metadatas["readonly"]));
@@ -487,7 +487,7 @@ class API_V1_test_adapterYaml extends PhraseanetWebTestCaseAbstract
$this->assertNotEquals($subdef->get_size(), $headers["download_content_length"]);
break;
case "url" :
$this->assertTrue(strpos($headers['content_type'], $subdef->get_mime()) === 0, 'Verify that header '.$headers['content_type'].' contains subdef mime type '.$subdef->get_mime());
$this->assertTrue(strpos($headers['content_type'], $subdef->get_mime()) === 0, 'Verify that header ' . $headers['content_type'] . ' contains subdef mime type ' . $subdef->get_mime());
$this->assertEquals($subdef->get_size(), $headers["download_content_length"]);
break;
}
@@ -805,26 +805,14 @@ class API_V1_test_adapterYaml extends PhraseanetWebTestCaseAbstract
{
$this->evaluateGoodBasket($basket);
$this->assertEquals('un Joli Nom', $basket["name"]);
$basket_obj = basket_adapter::getInstance($appbox, $basket["ssel_id"], $appbox->get_session()->get_usr_id());
$basket_obj->delete();
}
}
public function testBasketContent()
{
$appbox = appbox::get_instance();
$usr_id = $appbox->get_session()->get_usr_id();
$basket_coll = new basketCollection($appbox, $usr_id);
$basket = $this->insertOneBasket();
$found = false;
foreach ($basket_coll->get_baskets() as $bask_group => $baskets)
{
if (!in_array($bask_group, array('recept', 'baskets')))
continue;
foreach ($baskets as $basket)
{
$found = true;
$route = '/baskets/' . $basket->get_ssel_id() . '/content/?oauth_token=' . self::$token;
$route = '/baskets/' . $basket->getId() . '/content/?oauth_token=' . self::$token;
$this->evaluateMethodNotAllowedRoute($route, array('POST', 'PUT', 'DELETE'));
@@ -842,7 +830,7 @@ class API_V1_test_adapterYaml extends PhraseanetWebTestCaseAbstract
{
$this->evaluateGoodBasket($basket_str);
$this->assertEquals(count($basket->get_elements()), count((array) $basket_str["basket_elements"]));
$this->assertEquals(count($basket->getElements()), count((array) $basket_str["basket_elements"]));
foreach ($basket_str["basket_elements"] as $basket_element)
{
$this->assertArrayHasKey('basket_element_id', $basket_element);
@@ -856,29 +844,13 @@ class API_V1_test_adapterYaml extends PhraseanetWebTestCaseAbstract
}
}
}
}
if (!$found)
$this->markTestSkipped('Unable to test basket set title');
}
public function testSetBasketTitle()
{
$appbox = appbox::get_instance();
$usr_id = $appbox->get_session()->get_usr_id();
$basket_coll = new basketCollection($appbox, $usr_id);
$basket = $this->insertOneBasket();
$found = false;
foreach ($basket_coll->get_baskets() as $bask_group => $baskets)
{
if (!in_array($bask_group, array('recept', 'baskets')))
continue;
foreach ($baskets as $basket)
{
$found = true;
$route = '/baskets/' . $basket->get_ssel_id() . '/setname/?oauth_token=' . self::$token;
$route = '/baskets/' . $basket->getId() . '/setname/?oauth_token=' . self::$token;
$this->evaluateMethodNotAllowedRoute($route, array('GET', 'PUT', 'DELETE'));
@@ -927,32 +899,13 @@ class API_V1_test_adapterYaml extends PhraseanetWebTestCaseAbstract
$this->evaluateGoodBasket($basket_str);
$this->assertEquals($basket_str["name"], 'aéaa');
}
break;
}
}
if (!$found)
$this->markTestSkipped('Unable to test basket set title');
}
public function testSetBasketDescription()
{
$appbox = appbox::get_instance();
$usr_id = $appbox->get_session()->get_usr_id();
$basket_coll = new basketCollection($appbox, $usr_id);
$basket = $this->insertOneBasket();
$found = false;
foreach ($basket_coll->get_baskets() as $bask_group => $baskets)
{
if (!in_array($bask_group, array('recept', 'baskets')))
continue;
foreach ($baskets as $basket)
{
$found = true;
$route = '/baskets/' . $basket->get_ssel_id() . '/setdescription/?oauth_token=' . self::$token;
$route = '/baskets/' . $basket->getId() . '/setdescription/?oauth_token=' . self::$token;
$this->evaluateMethodNotAllowedRoute($route, array('GET', 'PUT', 'DELETE'));
@@ -971,23 +924,14 @@ class API_V1_test_adapterYaml extends PhraseanetWebTestCaseAbstract
$this->assertEquals($basket_str["description"], 'une belle desc');
}
break;
}
}
if (!$found)
$this->markTestSkipped('Unable to test basket set description');
}
public function testDeleteBasket()
{
$appbox = appbox::get_instance();
$usr_id = $appbox->get_session()->get_usr_id();
$basket = $this->insertOneBasket();
$basket2 = $this->insertOneBasket();
$basket = basket_adapter::create($appbox, 'test suppression panier', User_Adapter::getInstance($usr_id, $appbox));
$route = '/baskets/' . $basket->get_ssel_id() . '/delete/?oauth_token=' . self::$token;
$route = '/baskets/' . $basket->getId() . '/delete/?oauth_token=' . self::$token;
$this->evaluateMethodNotAllowedRoute($route, array('GET', 'PUT', 'DELETE'));
@@ -998,9 +942,16 @@ class API_V1_test_adapterYaml extends PhraseanetWebTestCaseAbstract
$this->evaluateMetaYaml200($content);
$this->assertArrayHasKey("baskets", $content["response"]);
$found = false;
foreach ($content["response"]["baskets"] as $basket)
{
$this->evaluateGoodBasket($basket);
$found = true;
}
if (!$found)
{
$this->fail('There should be a basket left');
}
}

View File

@@ -14,6 +14,7 @@ class Module_LightboxTest extends PhraseanetWebTestCaseAuthenticatedAbstract
protected $item;
protected $validation_basket;
protected static $need_records = 1;
// protected static $need_subdefs = true;
public function setUp()
@@ -25,16 +26,11 @@ class Module_LightboxTest extends PhraseanetWebTestCaseAuthenticatedAbstract
$publisher = array_shift($this->feed->get_publishers());
$this->entry = Feed_Entry_Adapter::create($appbox, $this->feed, $publisher, 'title', "sub Titkle", " jean pierre", "jp@test.com");
$this->item = Feed_Entry_Item::create($appbox, $this->entry, self::$record_1);
$basket = basket_adapter::create($appbox, 'bask validation', self::$user);
$basket->push_element(self::$record_1, false, false);
$basket->validation_to_users(self::$user, true, true, true);
$this->validation_basket = $basket;
}
public function tearDown()
{
$this->feed->delete();
// $this->validation_basket->delete();
parent::tearDown();
}
@@ -43,79 +39,21 @@ class Module_LightboxTest extends PhraseanetWebTestCaseAuthenticatedAbstract
return require dirname(__FILE__) . '/../../Alchemy/Phrasea/Application/Lightbox.php';
}
/**
*
* @return array
*/
protected function get_baskets()
{
$appbox = appbox::get_instance();
$basketcoll = new basketCollection($appbox, self::$user->get_id());
$basket_coll = $basketcoll->get_baskets();
return $basket_coll['baskets'];
}
/**
*
* @return basket_adapter
*/
protected function get_basket()
{
$appbox = appbox::get_instance();
$basketcoll = new basketCollection($appbox, self::$user->get_id());
$basket_coll = $basketcoll->get_baskets();
while(($basket = array_shift($basket_coll['baskets'])))
{
if(!$basket->is_valid())
return $basket;
}
$this->fail('Unable to find a basket');
}
protected function get_validation_basket()
{
return $this->validation_basket;
}
/**
*
* @return basket_element_adapter
*/
protected function get_basket_element()
{
$basket = $this->get_basket();
$basket->push_element(self::$record_1, false, false);
foreach($basket->get_elements() as $basket_element)
{
return $basket_element;
}
}
/**
*
* @return basket_element_adapter
*/
protected function get_validation_basket_element()
{
$basket = $this->get_validation_basket();
foreach($basket->get_elements() as $basket_element)
{
return $basket_element;
}
}
public function testRouteSlash()
{
$baskets = $this->get_baskets();
$n = mt_rand(2, 8);
for ($i = 0; $i != $n; $i++)
{
$basket = $this->insertOneBasket();
}
$this->set_user_agent(self::USER_AGENT_FIREFOX8MAC);
$crawler = $this->client->request('GET', '/');
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
$this->assertEquals('UTF-8', $this->client->getResponse()->getCharset());
$this->assertEquals($crawler->filter('div.basket_wrapper')->count(), count($baskets));
$this->assertEquals($crawler->filter('div.basket_wrapper')->count(), $n);
$this->set_user_agent(self::USER_AGENT_IE6);
@@ -133,34 +71,34 @@ class Module_LightboxTest extends PhraseanetWebTestCaseAuthenticatedAbstract
public function testAjaxNoteForm()
{
$basket_element = $this->get_basket_element();
$basket_element = $this->insertOneBasketElement();
$this->set_user_agent(self::USER_AGENT_FIREFOX8MAC);
$crawler = $this->client->request('GET', '/ajax/NOTE_FORM/'.$basket_element->get_sselcont_id().'/');
$crawler = $this->client->request('GET', '/ajax/NOTE_FORM/' . $basket_element->getId() . '/');
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
$this->assertEquals('', trim($this->client->getResponse()->getContent()));
$this->set_user_agent(self::USER_AGENT_IE6);
$crawler = $this->client->request('GET', '/ajax/NOTE_FORM/'.$basket_element->get_sselcont_id().'/');
$crawler = $this->client->request('GET', '/ajax/NOTE_FORM/' . $basket_element->getId() . '/');
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
$this->assertEquals('', trim($this->client->getResponse()->getContent()));
$this->set_user_agent(self::USER_AGENT_IPHONE);
$crawler = $this->client->request('GET', '/ajax/NOTE_FORM/'.$basket_element->get_sselcont_id().'/');
$crawler = $this->client->request('GET', '/ajax/NOTE_FORM/' . $basket_element->getId() . '/');
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
$this->assertNotEquals('', trim($this->client->getResponse()->getContent()));
}
public function testAjaxElement()
{
$basket_element = $this->get_basket_element();
$basket_element = $this->insertOneBasketElement();
$this->set_user_agent(self::USER_AGENT_FIREFOX8MAC);
$crawler = $this->client->request('GET', '/ajax/LOAD_BASKET_ELEMENT/'.$basket_element->get_sselcont_id().'/');
$crawler = $this->client->request('GET', '/ajax/LOAD_BASKET_ELEMENT/' . $basket_element->getId() . '/');
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
$this->assertEquals('application/json', $this->client->getResponse()->headers->get('Content-type'));
$datas = json_decode($this->client->getResponse()->getContent());
@@ -176,7 +114,7 @@ class Module_LightboxTest extends PhraseanetWebTestCaseAuthenticatedAbstract
$this->set_user_agent(self::USER_AGENT_IE6);
$crawler = $this->client->request('GET', '/ajax/LOAD_BASKET_ELEMENT/'.$basket_element->get_sselcont_id().'/');
$crawler = $this->client->request('GET', '/ajax/LOAD_BASKET_ELEMENT/' . $basket_element->getId() . '/');
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
$this->assertEquals('application/json', $this->client->getResponse()->headers->get('Content-type'));
$datas = json_decode($this->client->getResponse()->getContent());
@@ -192,7 +130,7 @@ class Module_LightboxTest extends PhraseanetWebTestCaseAuthenticatedAbstract
$this->set_user_agent(self::USER_AGENT_IPHONE);
$crawler = $this->client->request('GET', '/ajax/LOAD_BASKET_ELEMENT/'.$basket_element->get_sselcont_id().'/');
$crawler = $this->client->request('GET', '/ajax/LOAD_BASKET_ELEMENT/' . $basket_element->getId() . '/');
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
$this->assertNotEquals('application/json', $this->client->getResponse()->headers->get('Content-type'));
}
@@ -201,7 +139,7 @@ class Module_LightboxTest extends PhraseanetWebTestCaseAuthenticatedAbstract
{
$this->set_user_agent(self::USER_AGENT_FIREFOX8MAC);
$crawler = $this->client->request('GET', '/ajax/LOAD_FEED_ITEM/'.$this->entry->get_id().'/'.$this->item->get_id().'/');
$crawler = $this->client->request('GET', '/ajax/LOAD_FEED_ITEM/' . $this->entry->get_id() . '/' . $this->item->get_id() . '/');
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
$this->assertEquals('application/json', $this->client->getResponse()->headers->get('Content-type'));
$datas = json_decode($this->client->getResponse()->getContent());
@@ -217,7 +155,7 @@ class Module_LightboxTest extends PhraseanetWebTestCaseAuthenticatedAbstract
$this->set_user_agent(self::USER_AGENT_IE6);
$crawler = $this->client->request('GET', '/ajax/LOAD_FEED_ITEM/'.$this->entry->get_id().'/'.$this->item->get_id().'/');
$crawler = $this->client->request('GET', '/ajax/LOAD_FEED_ITEM/' . $this->entry->get_id() . '/' . $this->item->get_id() . '/');
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
$this->assertEquals('application/json', $this->client->getResponse()->headers->get('Content-type'));
$datas = json_decode($this->client->getResponse()->getContent());
@@ -233,7 +171,7 @@ class Module_LightboxTest extends PhraseanetWebTestCaseAuthenticatedAbstract
$this->set_user_agent(self::USER_AGENT_IPHONE);
$crawler = $this->client->request('GET', '/ajax/LOAD_FEED_ITEM/'.$this->entry->get_id().'/'.$this->item->get_id().'/');
$crawler = $this->client->request('GET', '/ajax/LOAD_FEED_ITEM/' . $this->entry->get_id() . '/' . $this->item->get_id() . '/');
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
$this->assertNotEquals('application/json', $this->client->getResponse()->headers->get('Content-type'));
}
@@ -241,46 +179,46 @@ class Module_LightboxTest extends PhraseanetWebTestCaseAuthenticatedAbstract
public function testValidate()
{
$basket = $this->get_basket();
$basket = $this->insertOneBasket();
$this->set_user_agent(self::USER_AGENT_FIREFOX8MAC);
$crawler = $this->client->request('GET', '/validate/'.$basket->get_ssel_id().'/');
$crawler = $this->client->request('GET', '/validate/' . $basket->getId() . '/');
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
$this->assertEquals('UTF-8', $this->client->getResponse()->getCharset());
$this->set_user_agent(self::USER_AGENT_IE6);
$crawler = $this->client->request('GET', '/validate/'.$basket->get_ssel_id().'/');
$crawler = $this->client->request('GET', '/validate/' . $basket->getId() . '/');
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
$this->assertEquals('UTF-8', $this->client->getResponse()->getCharset());
$this->set_user_agent(self::USER_AGENT_IPHONE);
$crawler = $this->client->request('GET', '/validate/'.$basket->get_ssel_id().'/');
$crawler = $this->client->request('GET', '/validate/' . $basket->getId() . '/');
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
$this->assertEquals('UTF-8', $this->client->getResponse()->getCharset());
}
public function testCompare()
{
$basket = $this->get_basket();
$basket = $this->insertOneBasket();
$this->set_user_agent(self::USER_AGENT_FIREFOX8MAC);
$crawler = $this->client->request('GET', '/compare/'.$basket->get_ssel_id().'/');
$crawler = $this->client->request('GET', '/compare/' . $basket->getId() . '/');
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
$this->assertEquals('UTF-8', $this->client->getResponse()->getCharset());
$this->set_user_agent(self::USER_AGENT_IE6);
$crawler = $this->client->request('GET', '/compare/'.$basket->get_ssel_id().'/');
$crawler = $this->client->request('GET', '/compare/' . $basket->getId() . '/');
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
$this->assertEquals('UTF-8', $this->client->getResponse()->getCharset());
$this->set_user_agent(self::USER_AGENT_IPHONE);
$crawler = $this->client->request('GET', '/compare/'.$basket->get_ssel_id().'/');
$crawler = $this->client->request('GET', '/compare/' . $basket->getId() . '/');
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
$this->assertEquals('UTF-8', $this->client->getResponse()->getCharset());
}
@@ -289,54 +227,66 @@ class Module_LightboxTest extends PhraseanetWebTestCaseAuthenticatedAbstract
{
$this->set_user_agent(self::USER_AGENT_FIREFOX8MAC);
$crawler = $this->client->request('GET', '/feeds/entry/'.$this->entry->get_id().'/');
$crawler = $this->client->request('GET', '/feeds/entry/' . $this->entry->get_id() . '/');
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
$this->assertEquals('UTF-8', $this->client->getResponse()->getCharset());
$this->set_user_agent(self::USER_AGENT_IE6);
$crawler = $this->client->request('GET', '/feeds/entry/'.$this->entry->get_id().'/');
$crawler = $this->client->request('GET', '/feeds/entry/' . $this->entry->get_id() . '/');
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
$this->assertEquals('UTF-8', $this->client->getResponse()->getCharset());
$this->set_user_agent(self::USER_AGENT_IPHONE);
$crawler = $this->client->request('GET', '/feeds/entry/'.$this->entry->get_id().'/');
$crawler = $this->client->request('GET', '/feeds/entry/' . $this->entry->get_id() . '/');
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
$this->assertEquals('UTF-8', $this->client->getResponse()->getCharset());
}
public function testAjaxReport()
{
$validationBasket = $this->insertOneValidationBasket();
$this->set_user_agent(self::USER_AGENT_FIREFOX8MAC);
$crawler = $this->client->request('GET', '/ajax/LOAD_REPORT/'.$this->validation_basket->get_ssel_id().'/');
$crawler = $this->client->request('GET', '/ajax/LOAD_REPORT/' . $validationBasket->getId() . '/');
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
$this->assertEquals('UTF-8', $this->client->getResponse()->getCharset());
}
public function testAjaxSetNote()
{
$crawler = $this->client->request('POST', '/ajax/SET_NOTE/'.$this->get_basket_element()->get_sselcont_id().'/');
$crawler = $this->client->request('POST', '/ajax/SET_NOTE/' . $this->insertOneBasketElement()->getId() . '/');
$this->assertEquals(400, $this->client->getResponse()->getStatusCode());
$crawler = $this->client->request('POST', '/ajax/SET_NOTE/'.$this->get_validation_basket_element()->get_sselcont_id().'/');
$validationBasket = $this->insertOneValidationBasket();
$validationBasketElement = $validationBasket->getElements()->first();
$this->assertEquals(200, $this->client->getResponse()->getStatusCode(), sprintf('set note to element %s ',$this->get_validation_basket_element()->get_sselcont_id()));
$crawler = $this->client->request('POST', '/ajax/SET_NOTE/' . $validationBasketElement->getId() . '/');
$this->assertEquals(200, $this->client->getResponse()->getStatusCode(), sprintf('set note to element %s ', $validationBasketElement->getId()));
$this->assertEquals('application/json', $this->client->getResponse()->headers->get('Content-type'));
$datas = json_decode($this->client->getResponse()->getContent());
$this->assertTrue(is_object($datas), 'asserting good json datas');
$this->assertObjectHasAttribute('datas', $datas);
$this->assertObjectHasAttribute('error', $datas);
}
public function testAjaxSetAgreement()
{
$crawler = $this->client->request('POST', '/ajax/SET_ELEMENT_AGREEMENT/'.$this->get_basket_element()->get_sselcont_id().'/');
$basket = $this->insertOneBasket();
$basketElement = $basket->getElements()->first();
$crawler = $this->client->request('POST', '/ajax/SET_ELEMENT_AGREEMENT/' . $basketElement->getId() . '/');
$this->assertEquals(400, $this->client->getResponse()->getStatusCode());
$crawler = $this->client->request('POST', '/ajax/SET_ELEMENT_AGREEMENT/'.$this->get_validation_basket_element()->get_sselcont_id().'/');
$validationBasket = $this->insertOneValidationBasket();
$validationBasketElement = $validationBasket->getElements()->first();
$this->assertEquals(200, $this->client->getResponse()->getStatusCode(), sprintf('set note to element %s ',$this->get_validation_basket_element()->get_sselcont_id()));
$crawler = $this->client->request('POST', '/ajax/SET_ELEMENT_AGREEMENT/' . $validationBasketElement->getId() . '/');
$this->assertEquals(200, $this->client->getResponse()->getStatusCode(), sprintf('set note to element %s ', $validationBasketElement->getId()));
$this->assertEquals('application/json', $this->client->getResponse()->headers->get('Content-type'));
$datas = json_decode($this->client->getResponse()->getContent());
@@ -344,14 +294,19 @@ class Module_LightboxTest extends PhraseanetWebTestCaseAuthenticatedAbstract
$this->assertObjectHasAttribute('datas', $datas);
$this->assertObjectHasAttribute('error', $datas);
}
public function testAjaxSetRelease()
{
$crawler = $this->client->request('POST', '/ajax/SET_RELEASE/'.$this->get_basket()->get_ssel_id().'/');
$basket = $this->insertOneBasket();
$crawler = $this->client->request('POST', '/ajax/SET_RELEASE/' . $basket->getId() . '/');
$this->assertEquals(400, $this->client->getResponse()->getStatusCode());
$crawler = $this->client->request('POST', '/ajax/SET_RELEASE/'.$this->get_validation_basket()->get_ssel_id().'/');
$validationBasket = $this->insertOneValidationBasket();
$this->assertEquals(200, $this->client->getResponse()->getStatusCode(), sprintf('set note to element %s ',$this->get_validation_basket()->get_ssel_id()));
$crawler = $this->client->request('POST', '/ajax/SET_RELEASE/' . $validationBasket->getId() . '/');
$this->assertEquals(200, $this->client->getResponse()->getStatusCode(), sprintf('set note to element %s ', $validationBasket->getId()));
$this->assertEquals('application/json', $this->client->getResponse()->headers->get('Content-type'));
$datas = json_decode($this->client->getResponse()->getContent());

View File

@@ -27,10 +27,8 @@ class Module_Prod_Route_TooltipTest extends PhraseanetWebTestCaseAuthenticatedAb
public function testRouteBasket()
{
$appbox = appbox::get_instance();
$basketcoll = new basketCollection($appbox, self::$user->get_id());
$basket_coll = $basketcoll->get_baskets();
$basket = array_shift($basket_coll['baskets']);
$basket = $this->insertOneBasket();
$crawler = $this->client->request('POST', '/tooltip/basket/' . $basket->getId() . '/');
$pageContent = $this->client->getResponse()->getContent();

View File

@@ -473,14 +473,24 @@ class record_adapterTest extends PhraseanetPHPUnitAuthenticatedAbstract
{
$appbox = appbox::get_instance();
$usr_id = $appbox->get_session()->get_usr_id();
$basket_coll = new basketCollection($appbox, $usr_id);
$baskets = $basket_coll->get_baskets();
$baskets = $baskets['baskets'];
$basket = array_shift($baskets);
$em = self::$core->getEntityManager();
$basket = $this->insertOneBasket();
$this->assertInstanceOf('\Entities\Basket', $basket);
$basket->push_element(self::$record_1, false, false);
/* @var $basket \Entities\Basket */
$basket_element = new \Entities\BasketElement();
$basket_element->setRecord(self::$record_1);
$basket_element->setBasket($basket);
$em->persist($basket_element);
$basket->addBasketElement($basket_element);
$em->merge($basket);
$em->flush();
$found = $sselcont_id = false;
@@ -489,7 +499,7 @@ class record_adapterTest extends PhraseanetPHPUnitAuthenticatedAbstract
foreach (self::$record_1->get_container_baskets() as $c_basket)
{
if ($c_basket->getId() == $basket->get_ssel_id())
if ($c_basket->getId() == $basket->getId())
{
$found = true;
foreach ($c_basket->getElements() as $b_el)
@@ -504,7 +514,6 @@ class record_adapterTest extends PhraseanetPHPUnitAuthenticatedAbstract
if (!$found)
$this->fail();
$basket->remove_from_ssel($sselcont_id);
}
}

View File

@@ -13,27 +13,23 @@
{% endblock %}
{% macro valid_baskets_length(baskets) %}
{% set foo = 0 %}
{% set number = 0 %}
{% for item in baskets %}
{% if item.is_valid() %}
{% set foo = foo + 1 %}
{% if item.getValidation() %}
{% set number = number + 1 %}
{% endif %}
{% endfor %}
{{foo}}
{{number}}
{% endmacro %}
{% macro baskets_length(baskets_collection) %}
{% set foo = 0 %}
{% for key,baskets in baskets_collection.get_baskets() %}
{% if key == 'baskets' or key == 'recept' %}
{% macro baskets_length(baskets) %}
{% set number = 0 %}
{% for item in baskets %}
{% if item.is_valid() == false %}
{% set foo = foo + 1 %}
{% if item.getValidation() == false %}
{% set number = number + 1 %}
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
{{foo}}
{{number}}
{% endmacro %}
{% block content %}
@@ -46,7 +42,7 @@
<ul data-role="listview">
<li>
<a href="#validation">{% trans 'Validations'%}</a>
<span class="ui-li-count">{{_self.valid_baskets_length(baskets_collection.get_baskets().baskets)}}</span>
<span class="ui-li-count">{{_self.valid_baskets_length(baskets_collection)}}</span>
</li>
<li>
<a href="#baskets">{% trans 'Paniers'%}</a>

View File

@@ -19,7 +19,7 @@
<form action="">
<textarea class="note_area"
id="note_area_{{basket_element.getId()}}"
{% if basket_element.getUserValidationData(user).getNote() == '' %}placeholder="Note"{% endif %}>{{basket_element.getUserValidationData(user).getNote()}}</textarea>
{% if basket_element.getUserValidationDatas(user).getNote() == '' %}placeholder="Note"{% endif %}>{{basket_element.getUserValidationDatas(user).getNote()}}</textarea>
<button type="submit" class="note_area_validate">{% trans 'boutton::valider' %}</button>
<input name="sselcont_id" value="{{basket_element.getId()}}" type="hidden"/>
</form>

View File

@@ -24,7 +24,7 @@
<ul class="image_set">
{% for basket_element in basket.getElements() %}
<li class="image_box" id="sselcontid_{{basket_element.getId()}}">
<div class="valid_choice valid_choice_{{basket_element.getId()}} {% if basket_element.getUserValidationData(user).getAgreement() == true %}agree{% elseif basket_element.getUserValidationData(user).getAgreement() == false %}disagree{% endif %}">
<div class="valid_choice valid_choice_{{basket_element.getId()}} {% if basket_element.getUserValidationDatas(user).getAgreement() == true %}agree{% elseif basket_element.getUserValidationDatas(user).getAgreement() == false %}disagree{% endif %}">
</div>
<a href="/lightbox/ajax/LOAD_BASKET_ELEMENT/{{basket_element.getId()}}/">
{{thumbnail.format(basket_element.getRecord().get_thumbnail(), 80, 80, '', session, true)}}

View File

@@ -17,7 +17,7 @@
{{ basket.getValidation().getValidationString(user) }}
</div>
<ul style="margin:10px 0 0 20px;width:200px;">
{% for validation_data in basket_element.getValidationData() %}
{% for validation_data in basket_element.getValidationDatas() %}
{% if validation_data.getAgreement() == true %}
{% set classuser = 'agree' %}
{% elseif validation_data.getAgreement() == false %}
@@ -38,12 +38,12 @@
<table cellspacing="0" cellpadding="0" style="width:230px;">
<tr>
<td>
<div style="width:70px;margin:0px auto 0;" class="ui-corner-all big_box agree_{{basket_element.getId()}} agree {% if basket_element.getValidationData().getParticipant(user).getAgreement() != true %}not_decided{% endif %}">
<div style="width:70px;margin:0px auto 0;" class="ui-corner-all big_box agree_{{basket_element.getId()}} agree {% if basket_element.getValidationDatas().getParticipant(user).getAgreement() != true %}not_decided{% endif %}">
<img src="/skins/lightbox/agree-bigie6.gif" style="vertical-align:middle;"/><span>{% trans 'validation:: OUI' %}</span>
</div>
</td>
<td>
<div style="width:70px;margin:0px auto;" class="ui-corner-all big_box disagree_{{basket_element.get_sselcont_id()}} disagree {% if basket_element.getValidationData().getParticipant(user).getAgreement() != false %}not_decided{% endif %}">
<div style="width:70px;margin:0px auto;" class="ui-corner-all big_box disagree_{{basket_element.getId()}} disagree {% if basket_element.getValidationDatas().getParticipant(user).getAgreement() != false %}not_decided{% endif %}">
<img src="/skins/lightbox/disagree-bigie6.gif" style="vertical-align:middle;"/><span>{% trans 'validation:: NON' %}</span>
</div>
</td>

View File

@@ -112,26 +112,18 @@
<td>
<select id="navigation">
<optgroup label="{% trans 'Validations'%}">
{% for key,baskets in baskets_collection.get_baskets() %}
{% if key == 'baskets' %}
{% for item in baskets %}
{% if item.is_valid() %}
<option {% if basket.get_ssel_id() == item.get_ssel_id() %} selected="selected" {% endif %}
value="{{item.get_ssel_id()}}">{{item.get_name()}}</option>
{% endif %}
{% endfor %}
{% for item in baskets() %}
{% if item.getValidation() %}
<option {% if item.getId() == basket.getId() %} selected="selected" {% endif %}
value="{{basket.getId()}}">{{basket.getName()}}</option>
{% endif %}
{% endfor %}
</optgroup>
<optgroup label="{% trans 'Paniers'%}">
{% for key,baskets in baskets_collection.get_baskets() %}
{% if key == 'baskets' or key == 'recept' %}
{% for item in baskets %}
{% if item.is_valid() == false %}
<option {% if basket.get_ssel_id() == item.get_ssel_id() %} selected="selected" {% endif %}
value="{{item.get_ssel_id()}}">{{item.get_name()}}</option>
{% endif %}
{% endfor %}
{% for item in baskets() %}
{% if item.getValidation() is empty %}
<option {% if item.getId() == basket.getId() %} selected="selected" {% endif %}
value="{{item.getId()}}">{{item.getName()}}</option>
{% endif %}
{% endfor %}
</optgroup>

View File

@@ -30,7 +30,7 @@
</tr>
</thead>
<tbody>
{% for basket in baskets_collection.get_baskets() %}
{% for basket in baskets_collection %}
{% if basket.getValidation() %}
{% set basket_length = basket.getElements().count() %}
<tr>

View File

@@ -1,24 +1,24 @@
{% block basket %}
<div id="sc_container">
{% for element in basket.get_elements() %}
{% for element in basket.getElements() %}
<div class="basket_element_wrapper">
<a href="/lightbox/ajax/LOAD_BASKET_ELEMENT/{{element.get_sselcont_id()}}/">
<div id="scid_{{element.get_sselcont_id()}}" class="basket_element ui-corner-all {% if basket_element and basket_element.get_sselcont_id() == element.get_sselcont_id() %}selected{% endif %}">
<div class="display_id">{{element.get_record().get_number()}}</div>
{% if basket.is_valid() %}
<a href="/lightbox/ajax/LOAD_BASKET_ELEMENT/{{element.getId()}}/">
<div id="scid_{{element.getId()}}" class="basket_element ui-corner-all {% if basket_element and basket_element.getId() == element.getId() %}selected{% endif %}">
<div class="display_id">{{element.getRecord().get_number()}}</div>
{% if basket.getValidation() %}
<div class="agreement">
<img src="/skins/lightbox/agree.png"
class="agree_button {%if element.get_my_agreement() != 1 %}not_decided{%endif%} agree_{{element.get_sselcont_id()}}" />
class="agree_button {%if element.getUserValidationDatas(user) != true %}not_decided{%endif%} agree_{{element.getId()}}" />
<img src="/skins/lightbox/disagree.png"
class="disagree_button {%if element.get_my_agreement() != -1 %}not_decided{%endif%} disagree_{{element.get_sselcont_id()}}" />
class="disagree_button {%if element.getUserValidationDatas(user) != false %}not_decided{%endif%} disagree_{{element.getId()}}" />
</div>
{% endif %}
{{thumbnail.format(element.get_record().get_thumbnail,114,85, '', session, true)}}
{{thumbnail.format(element.getRecord().get_thumbnail,114,85, '', session, true)}}
<form name="download_form" class="download_form" style="display:none;">
<input type="hidden" name="basrec" value="{{element.get_record().get_serialize_key()}}"/>
<input type="hidden" name="basrec" value="{{element.getRecord().get_serialize_key()}}"/>
</form>
<div tooltipsrc="/prod/tooltip/preview/{{element.get_record().get_sbas_id()}}/{{element.get_record().get_record_id()}}/" class="previewTips"></div>
<div tooltipsrc="/prod/tooltip/preview/{{element.getRecord().get_sbas_id()}}/{{element.getRecord().get_record_id()}}/" class="previewTips"></div>
</div>
</a>
</div>

View File

@@ -18,12 +18,12 @@
{% endfor %}
<form>
<textarea>{{basket_element.get_my_note()}}</textarea>
<textarea>{{basket_element.getUserValidationDatas(user).getNote()}}</textarea>
<div class="buttons">
<button class="note_closer ui-corner-all">
{% trans 'boutton::fermer' %}
</button>
<button class="note_saver ui-corner-all" id="note_saver_{{basket_element.get_sselcont_id()}}">
<button class="note_saver ui-corner-all" id="note_saver_{{basket_element.getId()}}">
{% trans 'boutton::enregistrer' %}
</button>
</div>

View File

@@ -84,7 +84,7 @@
</div>
<div id="right_column" class="PNB">
<div class="right_column_title title15 unselectable">
{% if basket.is_valid() %}
{% if basket.getValidation() %}
<img class="collapsed" src="/skins/lightbox/collapsed.png"/>
<img class="expanded" src="/skins/lightbox/expanded.png"/>
{% endif %}
@@ -122,7 +122,7 @@
<td style="width:20px;">
</td>
<td style="width:310px;">
{% if basket.is_valid() %}
{% if basket.getValidation() %}
<img title="{% trans 'lightbox::recaptitulatif' %}" class="report" src="/skins/lightbox/retour.png"/>
{% endif %}
<select id="navigation">

View File

@@ -238,7 +238,7 @@
</div>
{% for basket_element in basket.get_elements() %}
{% for basket_element in basket.getElements() %}
<span class="wrapCHIM_{{ basket_element.getRecord().get_serialize_key() }} valid">
<table style="width: 100%; min-width: 330px; display: inline-block;">
<tr>
@@ -247,21 +247,21 @@
</td>
<td style="width:100%;">
<table style=width:100%>
{% for choice in basket_element.get_choices() %}
{% for choice in basket_element.getValidationDatas()) %}
<tr>
<td> {{choice.usr_name}} </td>
<td> {{ choice.getParticipant().getUser().get_display_name() }} </td>
<td>
{% if choice.agreement == '1' %}
{% if choice.getAgreement() == true %}
<img style="cursor:help;" src='/skins/lightbox/agree.png' title="{% trans "L'utilisateur approuve ce document" %}" />
{% elseif choice.agreement == '-1' %}
{% elseif choice.getAgreement() == false %}
<img style="cursor:help;" src='/skins/lightbox/disagree.png' title="{% trans "L'utilisateur desapprouve ce document" %}" />
{% else %}
<img style="cursor:help;" src='/skins/icons/valid.png' title="{% trans "L'utilisateur n'a pas encore donne son avis sur ce document" %}" />
{% endif %}
</td>
<td style="width:25px;">
{% if choice.note != '' %}
<img style="cursor:help;" src='/skins/icons/file-edit.png' class="noteTips" title="{{choice.note|e|nl2br}}" />
{% if choice.getNote() != '' %}
<img style="cursor:help;" src='/skins/icons/file-edit.png' class="noteTips" title="{{choice.getNote()|nl2br}}" />
{% endif %}
</td>
</tr>

View File

@@ -34,8 +34,8 @@
{% set title = '' %}
{% set desc = '' %}
{% if publishing.is_basket() %}
{% set title = publishing.get_original_basket().get_name() %}
{% set desc = publishing.get_original_basket().get_description() %}
{% set title = publishing.get_original_basket().getName() %}
{% set desc = publishing.get_original_basket().getDescription() %}
{% endif %}
<div><label for="feed_add_title">{% trans 'publication : titre' %}</label></div>
<div><input class="required_text" type="text" name="title" id="feed_add_title" value="{{title}}" /></div>

View File

@@ -1,6 +1,6 @@
<div id="PREVIEWCURRENTCONT" class="PNB10">
<ul>
{% for child in record.get_container().get_elements() %}
{% for child in record.get_container().getElements() %}
{% set thumbnail = child.get_record().get_thumbnail() %}
{% if thumbnail.is_paysage() %}
@@ -23,7 +23,7 @@
{% endif %}
<li class="{{class}} prevTrainCurrent">
<img {{tooltip|raw}} jsargs="BASK|{{child.get_order()}}|{{record.get_container().get_ssel_id()}}"
<img {{tooltip|raw}} jsargs="BASK|{{child.get_order()}}|{{record.get_container().getId()}}"
class="openPreview prevRegToolTip" return(false);" src="{{thumbnail.get_url()}}"
style="{{style}}margin:7px;position:relative;"/></li>
{% endfor %}

View File

@@ -16,6 +16,9 @@
*/
/* @var $Core \Alchemy\Phrasea\Core */
$Core = require_once __DIR__ . "/../../lib/bootstrap.php";
$em = $Core->getEntityManager();
$appbox = appbox::get_instance();
$session = $appbox->get_session();
@@ -35,7 +38,6 @@ $out = null;
if ($parm["act"] == "DELIMG" && $parm["p0"] != "")
{
$em = $Core->getEntityManager();
$repository = $em->getRepository('\Entities\BasketElement');
/* @var $repository \Repositories\BasketElementRepository */
$basket_element = $repository->findUserElement($Core->getRequest('p0'), $user);
@@ -45,8 +47,6 @@ if ($parm["act"] == "DELIMG" && $parm["p0"] != "")
if ($parm["act"] == "ADDIMG" && ($parm["p0"] != "" && $parm["p0"] != null))
{
$em = $Core->getEntityManager();
$repository = $em->getRepository('\Entities\Basket');
/* @var $repository \Repositories\BasketRepository */
$basket = $repository->findUserBasket($Core->getRequest('courChuId'), $user);
@@ -67,8 +67,6 @@ if ($parm["act"] == "ADDIMG" && ($parm["p0"] != "" && $parm["p0"] != null))
if ($parm["act"] == "DELCHU" && ($parm["p0"] != "" && $parm["p0"] != null))
{
$em = $Core->getEntityManager();
$repository = $em->getRepository('\Entities\Basket');
/* @var $repository \Repositories\BasketRepository */
$basket = $repository->findUserBasket($Core->getRequest('courChuId'), $user);
@@ -81,8 +79,6 @@ if ($parm["act"] == "DELCHU" && ($parm["p0"] != "" && $parm["p0"] != null))
if ($parm["act"] == "NEWCHU" && ($parm["p0"] != "" && $parm["p0"] != null))
{
$em = $Core->getEntityManager();
$basket = new \Entities\Basket();
$basket->setName($Core->getRequest('p0'));
$basket->setOwner($user);
@@ -92,50 +88,57 @@ if ($parm["act"] == "NEWCHU" && ($parm["p0"] != "" && $parm["p0"] != null))
$parm['courChuId'] = $basket->getId();
}
$basket_coll = new basketCollection($appbox, $usr_id, 'name ASC', array('regroup'));
$baskets = $basket_coll->get_baskets();
$repository = $em->getRepository('\Entities\Basket');
/* @var $repository \Repositories\BasketRepository */
$baskets = $repository->findActiveByUser($user);
$out = "<table style='width:99%' class='baskIndicator' id='baskMainTable'><tr><td>";
$out .= '<select id="chutier_name" name="chutier_name" onChange="chg_chu();" style="width:120px;">';
$firstGroup = true;
$baskets_opt = $recepts_opt = '';
foreach ($baskets as $typeBask => $basket)
{
if (!$firstGroup)
$out.='</optgroup>';
$firstGroup = false;
if ($typeBask == 'baskets' && count($basket) > 0)
if (!$basket->getPusherId())
{
$out.='<optgroup label="' . _('paniers::categories: mes paniers') . '">';
foreach ($basket as $bask)
{
$baskId = $bask->get_ssel_id();
$baskId = $basket->getId();
$sltd = '';
if (is_null($parm['courChuId']) || trim($parm['courChuId']) == '')
$parm['courChuId'] = $baskId;
if ($parm['courChuId'] == $baskId)
$sltd = 'selected';
$out .= '<option class="chut_choice" ' . $sltd . ' value="' . $baskId . '">' . $bask->get_name() . '</option>';
}
$baskets_opt .= '<option class="chut_choice" ' . $sltd . ' value="' . $baskId . '">'
. $basket->getName() . '</option>';
}
if ($typeBask == 'recept' && !is_null($basket))
if ($basket->getPusherId())
{
$out.='<optgroup label="' . _('paniers::categories: paniers recus') . '">';
foreach ($basket as $bask)
{
$baskId = $bask->get_ssel_id();
$baskId = $basket->getId();
$sltd = '';
if (is_null($parm['courChuId']) || trim($parm['courChuId']) == '')
$parm['courChuId'] = $baskId;
if ($parm['courChuId'] == $baskId)
$sltd = 'selected';
$out .= '<option class="chut_choice" ' . $sltd . ' value="' . $baskId . '">' . $bask->get_name() . '</option>';
}
$recepts_opt .= '<option class="chut_choice" ' . $sltd . ' value="' . $baskId . '">'
. $basket->getName() . '</option>';
}
}
if ($baskets_opt)
{
$out .= '<optgroup label="' . _('paniers::categories: mes paniers') . '">'
. $baskets_opt
. '</optgroup>';
}
if ($recepts_opt)
{
$out .= '<optgroup label="' . _('paniers::categories: paniers recus') . '">'
. $recepts_opt
. '</optgroup>';
}
$out.='</optgroup>';
$out .= "</select>";
$out .= '</td><td style="width:40%">';
@@ -157,35 +160,33 @@ echo '<div class="baskName">' . sprintf(_('paniers:: paniers:: %d documents dans
?></div><?php
?><div><?php
echo $out;
?><div class="baskDel" title="<?php echo _('action : supprimer') ?>" onclick="evt_chutier('DELSSEL');"/></div><?php
?><div class="baskCreate" title="<?php echo _('action:: nouveau panier') ?>" onclick="newBasket();"></div><?php
?><div style="float:right;position:relative;width:3px;height:16px;"></div><?php
if ($nbElems > 0 && ($ACL->has_right("candwnldhd") || $ACL->has_right("candwnldpreview") || $ACL->has_right("cancmd") > 0 ))
{
?><div class="baskDownload" title="<?php echo _('action : exporter') ?>" onclick="evt_dwnl();"></div><?php
}
if ($nbElems > 0)
{
?><div class="baskPrint" title="<?php echo _('action : print') ?>" onclick="evt_print();"></div><?php
}
$jsclick = '';
if ($parm['courChuId'] != null && $parm['courChuId'] != '' && is_numeric($parm['courChuId']))
{
?><div class="baskDownload" title="<?php echo _('action : exporter') ?>" onclick="evt_dwnl();"></div><?php
}
if ($nbElems > 0)
{
?><div class="baskPrint" title="<?php echo _('action : print') ?>" onclick="evt_print();"></div><?php
}
$jsclick = '';
if ($parm['courChuId'] != null && $parm['courChuId'] != '' && is_numeric($parm['courChuId']))
{
$jsclick = ' onclick=openCompare(\'' . $parm['courChuId'] . '\') ';
}
}
?><div class="baskComparator" <?php echo $jsclick ?> title="<?php echo _('action : ouvrir dans le comparateur') ?>"></div><?php
?></td><?php
?></tr><?php
?></table><?php
?></div><?php
?><div class="divexterne" style="height:270px;overflow-x:hidden;overflow-y:auto;position:relative"><?php
if ($basket->getPusher() instanceof user)
{
?><div class="txtPushClient"><?php
if ($basket->getPusher() instanceof user)
{
?><div class="txtPushClient"><?php
echo sprintf(_('paniers:: panier emis par %s'), $basket->getPusher()->get_display_name())
?></div><?php
?></div><?php
}
foreach ($basket->getElements() as $basket_element)
@@ -235,32 +236,29 @@ echo '<div class="baskName">' . sprintf(_('paniers:: paniers:: %d documents dans
{
$tooltip = 'tooltipsrc="/prod/tooltip/caption/' . $record->get_sbas_id() . '/' . $record->get_record_id() . '/basket/"';
}
?><div class="diapochu"><?php
?><div class="image"><?php
?><img onclick="openPreview('BASK',<?php echo $basket_element->getRecord()->get_number() ?>,<?php echo $parm["courChuId"] ?>); return(false);"
<?php echo $tooltip ?> style="position:relative; top:<?php echo $top ?>px; <?php echo $dim ?>"
?><div class="diapochu"><?php
?><div class="image"><?php
?><img onclick="openPreview('BASK',<?php echo $basket_element->getRecord()->get_number() ?>,<?php echo $parm["courChuId"] ?>); return(false);"
<?php echo $tooltip ?> style="position:relative; top:<?php echo $top ?>px; <?php echo $dim ?>"
class="<?php echo $classSize ?> baskTips" src="<?php echo $thumbnail->get_url() ?>"><?php
?></div><?php
?><div class="tools"><?php
?><div class="baskOneDel" onclick="evt_del_in_chutier('<?php echo $basket_element->getId() ?>');"
?></div><?php ?><div class="tools"><?php ?><div class="baskOneDel" onclick="evt_del_in_chutier('<?php echo $basket_element->getId() ?>');"
title="<?php echo _('action : supprimer') ?>"></div><?php
if ($user->ACL()->has_right_on_base($record->get_base_id(), 'candwnldhd') ||
$user->ACL()->has_right_on_base($record->get_base_id(), 'candwnldpreview') ||
$user->ACL()->has_right_on_base($record->get_base_id(), 'cancmd') ||
$user->ACL()->has_preview_grant($record))
{
?><div class="baskOneDownload" onclick="evt_dwnl('<?php echo $record->get_sbas_id() ?>_<?php echo $record->get_record_id() ?>');" title="<?php echo _('action : exporter') ?>"></div><?php
?><div class="baskOneDownload" onclick="evt_dwnl('<?php echo $record->get_sbas_id() ?>_<?php echo $record->get_record_id() ?>');" title="<?php echo _('action : exporter') ?>"></div><?php
}
?></div><?php
?></div><?php
?></div><?php
?></div><?php
}
?></div></div><div id="blocNoBask" class="bodyLeft" style="height: 22px;display:none;bottom:0px;"><?php
?><div class="baskTitle"><?php
?><div id="flechechu" class="flechenochu"></div><?php
?><div id="viewtext" class="baskName"><?php echo $jscriptnochu ?><span style="width:16px;height:16px;position: absolute; right: 10px;background-position:center center;" class='baskIndicator'></span></div><?php ?></div><?php ?></div>
<?php
?>
?></div></div><div id="blocNoBask" class="bodyLeft" style="height: 22px;display:none;bottom:0px;"><?php
?><div class="baskTitle"><?php
?><div id="flechechu" class="flechenochu"></div><?php
?><div id="viewtext" class="baskName"><?php echo $jscriptnochu ?><span style="width:16px;height:16px;position: absolute; right: 10px;background-position:center center;" class='baskIndicator'></span></div><?php ?></div><?php ?></div>
<?php
?>
<script>
var oldNoview = p4.nbNoview;
p4.nbNoview = parseInt(<?php echo $nbNoview ?>);

View File

@@ -15,7 +15,9 @@
* @license http://opensource.org/licenses/gpl-3.0 GPLv3
* @link www.phraseanet.com
*/
require_once __DIR__ . "/../../lib/bootstrap.php";
$Core = require_once __DIR__ . "/../../lib/bootstrap.php";
$em = $Core->getEntityManager();
$appbox = appbox::get_instance();
$session = $appbox->get_session();
@@ -119,16 +121,17 @@ switch ($parm['action'])
break;
case 'BASKUPDATE':
$noview = 0;
$basket_coll = new basketCollection($appbox, $usr_id);
$baskets = $basket_coll->get_baskets();
foreach ($baskets['baskets'] as $basket)
$repository = $em->getRepository('\Entities\Basket');
/* @var $repository \Repositories\BasketRepository */
$baskets = $repository->findActiveByUser($user);
foreach ($baskets as $basket)
{
if ($basket->is_unread())
if (!$basket->getIsRead())
$noview++;
}
foreach ($baskets['recept'] as $basket)
{
if ($basket->is_unread())
if (!$basket->getIsRead())
$noview++;
}
$output = $noview;

View File

@@ -17,6 +17,10 @@
*/
$Core = require_once __DIR__ . "/../../lib/bootstrap.php";
$em = $Core->getEntityManager();
$user = $Core->getAuthenticatedUser();
$appbox = appbox::get_instance();
$session = $appbox->get_session();
$session->close_storage();
@@ -66,7 +70,11 @@ $ret['notifications'] = $twig->render('prod/notifications.twig', array('notifica
$ret['changed'] = array();
$baskets = basketCollection::get_updated_baskets();
$repository = $em->getRepository('\Entities\Basket');
/* @var $repository \Repositories\BasketRepository */
$baskets = $repository->findUnreadActiveByUser($user);
foreach ($baskets as $basket)
{
$ret['changed'][] = $basket->getId();

View File

@@ -244,7 +244,7 @@ $user = User_Adapter::getInstance($usr_id, $appbox);
$Basket = $repository->findUserBasket($Core->getRequest()->get('SSTTID'), $Core->getAuthenticatedUser());
foreach ($Basket->get_elements() as $basket_element)
foreach ($Basket->getElements() as $basket_element)
{
/* @var $basket_element \Entities\BasketElement */
$record = $basket_element->getRecord();