This commit is contained in:
Nicolas Le Goff
2011-12-27 13:06:51 +01:00
300 changed files with 3436 additions and 3162 deletions

3
.gitmodules vendored
View File

@@ -63,3 +63,6 @@
url = https://github.com/wavded/humane-js.git url = https://github.com/wavded/humane-js.git
[submodule "www/include/vendor/qunit"]
path = www/include/vendor/qunit
url = git://github.com/jquery/qunit.git

View File

@@ -27,7 +27,9 @@ require_once dirname(__FILE__) . '/../lib/classes/bootstrap.class.php';
try try
{ {
bootstrap::register_autoloads(); \bootstrap::register_autoloads();
$Core = \bootstrap::getCore();
$app = new Application(" $app = new Application("
_____ _ _ _____ _____ ______ _ _ ______ _______ _____ _ _ _____ _____ ______ _ _ ______ _______
@@ -45,7 +47,8 @@ try
This program comes with ABSOLUTELY NO WARRANTY. This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it This is free software, and you are welcome to redistribute it
under certain conditions; type `about:license' for details.\n\n" under certain conditions; type `about:license' for details.\n\n"
. ' KONSOLE KOMMANDER', GV_version . ' ' . GV_version_name); . ' KONSOLE KOMMANDER', $Core->getVersion()->getName()
. ' ' . $Core->getVersion()->getNumber());
$app->add(new module_console_aboutAuthors('about:authors')); $app->add(new module_console_aboutAuthors('about:authors'));
$app->add(new module_console_aboutLicense('about:license')); $app->add(new module_console_aboutLicense('about:license'));

View File

@@ -2,4 +2,4 @@
dir.src=/tmp/jenkinsWorking-dev dir.src=/tmp/jenkinsWorking-dev
# test.ci # test.ci
dir.dest=/home/sites_web/test-dev.ci.alchemyasp.com dir.dest=/home/sites_web/test-dev.ci.alchemyasp.com/pv3

View File

@@ -32,6 +32,8 @@ return call_user_func(function()
$app = new Silex\Application(); $app = new Silex\Application();
$app["Core"] = bootstrap::getCore();
$app["appbox"] = appbox::get_instance(); $app["appbox"] = appbox::get_instance();
/** /**
@@ -68,7 +70,7 @@ return call_user_func(function()
*/ */
$app['api'] = function () use ($app) $app['api'] = function () use ($app)
{ {
return new API_V1_adapter(false, $app["appbox"]); return new API_V1_adapter(false, $app["appbox"], $app["Core"]);
}; };

View File

@@ -20,7 +20,6 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @license http://opensource.org/licenses/gpl-3.0 GPLv3 * @license http://opensource.org/licenses/gpl-3.0 GPLv3
* @link www.phraseanet.com * @link www.phraseanet.com
*/ */
return call_user_func( return call_user_func(
function() function()
{ {
@@ -30,17 +29,29 @@ return call_user_func(
$app = new Silex\Application(); $app = new Silex\Application();
$app->get('/', function () use ($session, $appbox) $app['Core'] = bootstrap::getCore();
$app->get('/', function (Silex\Application $app) use ($session, $appbox)
{ {
User_Adapter::updateClientInfos((6)); User_Adapter::updateClientInfos((6));
$basket_collection = new basketCollection($appbox, $session->get_usr_id());
$em = $app['Core']->getEntityManager();
$repository = $em->getRepository('\Entities\Basket');
/* @var $repository \Repositories\BasketRepository */
$basket_collection = $repository->findActiveByUser(
$app['Core']->getAuthenticatedUser()
);
$twig = new supertwig(); $twig = new supertwig();
$twig->addFilter(array('nl2br' => 'nl2br')); $twig->addFilter(array('nl2br' => 'nl2br'));
$browser = Browser::getInstance(); $browser = Browser::getInstance();
$template = 'lightbox/index.twig'; $template = 'lightbox/index.twig';
if (!$browser->isNewGeneration() && !$browser->isMobile()) if (!$browser->isNewGeneration() && !$browser->isMobile())
{
$template = 'lightbox/IE6/index.twig'; $template = 'lightbox/IE6/index.twig';
}
$output = $twig->render($template, array( $output = $twig->render($template, array(
'baskets_collection' => $basket_collection, 'baskets_collection' => $basket_collection,
@@ -55,7 +66,7 @@ return call_user_func(
} }
); );
$app->get('/ajax/NOTE_FORM/{sselcont_id}/', function($sselcont_id) use ($session, $appbox) $app->get('/ajax/NOTE_FORM/{sselcont_id}/', function(Silex\Application $app, $sselcont_id) use ($session, $appbox)
{ {
$browser = Browser::getInstance(); $browser = Browser::getInstance();
if (!$browser->isMobile()) if (!$browser->isMobile())
@@ -71,7 +82,7 @@ return call_user_func(
} }
)->assert('sselcont_id', '\d+'); )->assert('sselcont_id', '\d+');
$app->get('/ajax/LOAD_BASKET_ELEMENT/{sselcont_id}/', function($sselcont_id) $app->get('/ajax/LOAD_BASKET_ELEMENT/{sselcont_id}/', function(Silex\Application $app, $sselcont_id)
{ {
$twig = new supertwig(); $twig = new supertwig();
$twig->addFilter(array('nl2br' => 'nl2br', 'formatoctet' => 'p4string::format_octets')); $twig->addFilter(array('nl2br' => 'nl2br', 'formatoctet' => 'p4string::format_octets'));
@@ -107,19 +118,30 @@ return call_user_func(
$appbox = appbox::get_instance(); $appbox = appbox::get_instance();
$usr_id = $appbox->get_session()->get_usr_id(); $usr_id = $appbox->get_session()->get_usr_id();
$basket_element = basket_element_adapter::getInstance($sselcont_id);
$basket = basket_adapter::getInstance($appbox, $basket_element->get_ssel_id(), $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(); $ret = array();
$ret['number'] = $basket_element->get_record()->get_number(); $ret['number'] = $BasketElement->getRecord()->get_number();
$ret['title'] = $basket_element->get_record()->get_title(); $ret['title'] = $BasketElement->getRecord()->get_title();
$ret['preview'] = $twig->render($template_preview, array('record' => $basket_element->get_record(), 'not_wrapped' => true)); $ret['preview'] = $twig->render($template_preview, array('record' => $BasketElement->getRecord(), 'not_wrapped' => true));
$ret['options_html'] = $twig->render($template_options, array('basket_element' => $basket_element)); $ret['options_html'] = $twig->render($template_options, array('basket_element' => $BasketElement));
$ret['agreement_html'] = $twig->render($template_agreement, array('basket' => $basket, 'basket_element' => $basket_element)); $ret['agreement_html'] = $twig->render($template_agreement, array('basket' => $Basket, 'basket_element' => $BasketElement));
$ret['selector_html'] = $twig->render($template_selector, array('basket_element' => $basket_element)); $ret['selector_html'] = $twig->render($template_selector, array('basket_element' => $BasketElement));
$ret['note_html'] = $twig->render($template_note, array('basket_element' => $basket_element)); $ret['note_html'] = $twig->render($template_note, array('basket_element' => $BasketElement));
$ret['caption'] = $twig->render($template_caption, array('view' => 'preview', 'record' => $basket_element->get_record())); $ret['caption'] = $twig->render($template_caption, array('view' => 'preview', 'record' => $BasketElement->getRecord()));
$output = p4string::jsonencode($ret); $output = p4string::jsonencode($ret);
return new Response($output, 200, array('Content-Type' => 'application/json')); return new Response($output, 200, array('Content-Type' => 'application/json'));
@@ -130,7 +152,7 @@ return call_user_func(
$app->get('/ajax/LOAD_FEED_ITEM/{entry_id}/{item_id}/', function($entry_id, $item_id) $app->get('/ajax/LOAD_FEED_ITEM/{entry_id}/{item_id}/', function(Silex\Application $app, $entry_id, $item_id)
{ {
$twig = new supertwig(); $twig = new supertwig();
$twig->addFilter(array('nl2br' => 'nl2br', 'formatoctet' => 'p4string::format_octets')); $twig->addFilter(array('nl2br' => 'nl2br', 'formatoctet' => 'p4string::format_octets'));
@@ -182,15 +204,25 @@ return call_user_func(
} }
)->assert('entry_id', '\d+')->assert('item_id', '\d+'); )->assert('entry_id', '\d+')->assert('item_id', '\d+');
$app->get('/validate/{ssel_id}/', function ($ssel_id) use ($session, $appbox) $app->get('/validate/{ssel_id}/', function (Silex\Application $app, $ssel_id) use ($session, $appbox)
{ {
User_Adapter::updateClientInfos((6)); User_Adapter::updateClientInfos((6));
$browser = Browser::getInstance(); $browser = Browser::getInstance();
$basket_collection = new basketCollection($appbox, $session->get_usr_id()); $em = $app['Core']->getEntityManager();
$basket = basket_adapter::getInstance($appbox, $ssel_id, $session->get_usr_id()); $repository = $em->getRepository('\Entities\Basket');
/* @var $repository \Repositories\BasketRepository */
$basket_collection = $repository->findActiveByUser(
$app['Core']->getAuthenticatedUser()
);
$basket = $repository->findUserBasket(
$ssel_id
, $app['Core']->getAuthenticatedUser()
);
if ($basket->is_valid()) if ($basket->is_valid())
{ {
@@ -220,20 +252,25 @@ return call_user_func(
} }
)->assert('ssel_id', '\d+'); )->assert('ssel_id', '\d+');
$app->get('/compare/{ssel_id}/', function ($ssel_id) use ($session, $appbox) $app->get('/compare/{ssel_id}/', function (Silex\Application $app, $ssel_id) use ($session, $appbox)
{ {
User_Adapter::updateClientInfos((6)); User_Adapter::updateClientInfos((6));
$browser = Browser::getInstance(); $browser = Browser::getInstance();
$basket_collection = new basketCollection($appbox, $session->get_usr_id()); $em = $app['Core']->getEntityManager();
$basket = basket_adapter::getInstance($appbox, $ssel_id, $session->get_usr_id()); $repository = $em->getRepository('\Entities\Basket');
if ($basket->is_valid()) /* @var $repository \Repositories\BasketRepository */
{ $basket_collection = $repository->findActiveByUser(
$basket->get_first_element()->load_users_infos(); $app['Core']->getAuthenticatedUser()
} );
$basket = $repository->findUserBasket(
$ssel_id
, $app['Core']->getAuthenticatedUser()
);
$twig = new supertwig(); $twig = new supertwig();
@@ -260,7 +297,7 @@ return call_user_func(
$app->get('/feeds/entry/{entry_id}/', function ($entry_id) use ($session, $appbox) $app->get('/feeds/entry/{entry_id}/', function (Silex\Application $app, $entry_id) use ($session, $appbox)
{ {
User_Adapter::updateClientInfos((6)); User_Adapter::updateClientInfos((6));
@@ -293,7 +330,7 @@ return call_user_func(
} }
)->assert('entry_id', '\d+'); )->assert('entry_id', '\d+');
$app->get('/ajax/LOAD_REPORT/{ssel_id}/', function($ssel_id) use ($appbox, $app) $app->get('/ajax/LOAD_REPORT/{ssel_id}/', function(Silex\Application $app, $ssel_id) use ($appbox, $app)
{ {
$twig = new supertwig(); $twig = new supertwig();
$twig->addFilter(array('nl2br' => 'nl2br')); $twig->addFilter(array('nl2br' => 'nl2br'));
@@ -311,7 +348,7 @@ return call_user_func(
} }
)->assert('ssel_id', '\d+'); )->assert('ssel_id', '\d+');
$app->post('/ajax/SET_NOTE/{sselcont_id}/', function ($sselcont_id) use ($app) $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')); $output = array('error' => true, 'datas' => _('Erreur lors de l\'enregistrement des donnees'));
try try
@@ -352,7 +389,7 @@ return call_user_func(
} }
)->assert('sselcont_id', '\d+'); )->assert('sselcont_id', '\d+');
$app->post('/ajax/SET_ELEMENT_AGREEMENT/{sselcont_id}/', function($sselcont_id) use ($app) $app->post('/ajax/SET_ELEMENT_AGREEMENT/{sselcont_id}/', function(Silex\Application $app, $sselcont_id)
{ {
$request = $app['request']; $request = $app['request'];
$agreement = (int) $request->get('agreement'); $agreement = (int) $request->get('agreement');
@@ -388,7 +425,7 @@ return call_user_func(
)->assert('sselcont_id', '\d+'); )->assert('sselcont_id', '\d+');
$app->post('/ajax/SET_RELEASE/{ssel_id}/', function($ssel_id) use ($session, $appbox) $app->post('/ajax/SET_RELEASE/{ssel_id}/', function(Silex\Application $app, $ssel_id) use ($session, $appbox)
{ {
$basket = basket_adapter::getInstance($appbox, $ssel_id, $appbox->get_session()->get_usr_id()); $basket = basket_adapter::getInstance($appbox, $ssel_id, $appbox->get_session()->get_usr_id());

View File

@@ -34,6 +34,8 @@ return call_user_func(function()
{ {
$app = new Silex\Application(); $app = new Silex\Application();
$app['Core'] = bootstrap::getCore();
$app->register(new Silex\Provider\ValidatorServiceProvider(), array( $app->register(new Silex\Provider\ValidatorServiceProvider(), array(
'validator.class_path' => __DIR__ . '/../../../../lib/vendor/symfony/src', 'validator.class_path' => __DIR__ . '/../../../../lib/vendor/symfony/src',
)); ));

View File

@@ -30,6 +30,8 @@ return call_user_func(
$app = new Silex\Application(); $app = new Silex\Application();
$app['Core'] = bootstrap::getCore();
$deliver_content = function(Session_Handler $session, record_adapter $record, $subdef, $watermark, $stamp, $app) $deliver_content = function(Session_Handler $session, record_adapter $record, $subdef, $watermark, $stamp, $app)
{ {

View File

@@ -15,6 +15,7 @@ use Silex\Application;
use Alchemy\Phrasea\Controller\Setup as Controller; use Alchemy\Phrasea\Controller\Setup as Controller;
use Alchemy\Phrasea\Controller\Utils as ControllerUtils; use Alchemy\Phrasea\Controller\Utils as ControllerUtils;
require_once dirname(__FILE__) . '/../../../bootstrap.php';
/** /**
* *
* @package * @package
@@ -26,6 +27,8 @@ return call_user_func(function()
{ {
$app = new Silex\Application(); $app = new Silex\Application();
$app['Core'] = bootstrap::getCore();
$app['install'] = false; $app['install'] = false;
$app['upgrade'] = false; $app['upgrade'] = false;

View File

@@ -39,8 +39,7 @@ class Users implements ControllerProviderInterface
$controllers->post('/rights/', function() use ($app) $controllers->post('/rights/', function() use ($app)
{ {
$request = $app['request']; $rights = new UserHelper\Edit($app['Core']);
$rights = new UserHelper\Edit($request);
$template = 'admin/editusers.twig'; $template = 'admin/editusers.twig';
$twig = new \supertwig(); $twig = new \supertwig();
@@ -55,8 +54,7 @@ class Users implements ControllerProviderInterface
$controllers->get('/rights/', function() use ($app) $controllers->get('/rights/', function() use ($app)
{ {
$request = $app['request']; $rights = new UserHelper\Edit($app['Core']);
$rights = new UserHelper\Edit($request);
$template = 'admin/editusers.twig'; $template = 'admin/editusers.twig';
$twig = new \supertwig(); $twig = new \supertwig();
@@ -71,11 +69,7 @@ class Users implements ControllerProviderInterface
$controllers->post('/delete/', function() use ($app) $controllers->post('/delete/', function() use ($app)
{ {
$request = $app['request']; $module = new UserHelper\Edit($app['Core']);
$module = new UserHelper\Edit($request);
$module->delete_users(); $module->delete_users();
return $app->redirect('/admin/users/search/'); return $app->redirect('/admin/users/search/');
@@ -88,8 +82,7 @@ class Users implements ControllerProviderInterface
try try
{ {
$request = $app['request']; $rights = new UserHelper\Edit($app['Core']);
$rights = new UserHelper\Edit($request);
$rights->apply_rights(); $rights->apply_rights();
$rights->apply_infos(); $rights->apply_infos();
@@ -110,8 +103,7 @@ class Users implements ControllerProviderInterface
$controllers->post('/rights/quotas/', function() use ($app) $controllers->post('/rights/quotas/', function() use ($app)
{ {
$request = $app['request']; $rights = new UserHelper\Edit($app['Core']);
$rights = new UserHelper\Edit($request);
$template = 'admin/editusers_quotas.twig'; $template = 'admin/editusers_quotas.twig';
$twig = new \supertwig(); $twig = new \supertwig();
@@ -125,8 +117,7 @@ class Users implements ControllerProviderInterface
$controllers->post('/rights/quotas/apply/', function() use ($app) $controllers->post('/rights/quotas/apply/', function() use ($app)
{ {
$request = $app['request']; $rights = new UserHelper\Edit($app['Core']);
$rights = new UserHelper\Edit($request);
$rights->apply_quotas(); $rights->apply_quotas();
return; return;
@@ -135,8 +126,7 @@ class Users implements ControllerProviderInterface
$controllers->post('/rights/time/', function() use ($app) $controllers->post('/rights/time/', function() use ($app)
{ {
$request = $app['request']; $rights = new UserHelper\Edit($app['Core']);
$rights = new UserHelper\Edit($request);
$template = 'admin/editusers_timelimit.twig'; $template = 'admin/editusers_timelimit.twig';
$twig = new \supertwig(); $twig = new \supertwig();
@@ -150,8 +140,7 @@ class Users implements ControllerProviderInterface
$controllers->post('/rights/time/apply/', function() use ($app) $controllers->post('/rights/time/apply/', function() use ($app)
{ {
$request = $app['request']; $rights = new UserHelper\Edit($app['Core']);
$rights = new UserHelper\Edit($request);
$rights->apply_time(); $rights->apply_time();
return; return;
@@ -160,8 +149,7 @@ class Users implements ControllerProviderInterface
$controllers->post('/rights/masks/', function() use ($app) $controllers->post('/rights/masks/', function() use ($app)
{ {
$request = $app['request']; $rights = new UserHelper\Edit($app['Core']);
$rights = new UserHelper\Edit($request);
$template = 'admin/editusers_masks.twig'; $template = 'admin/editusers_masks.twig';
$twig = new \supertwig(); $twig = new \supertwig();
@@ -175,46 +163,40 @@ class Users implements ControllerProviderInterface
$controllers->post('/rights/masks/apply/', function() use ($app) $controllers->post('/rights/masks/apply/', function() use ($app)
{ {
$request = $app['request']; $rights = new UserHelper\Edit($app['Core']);
$rights = new UserHelper\Edit($request);
$rights->apply_masks(); $rights->apply_masks();
return; return;
} }
); );
$controllers->post('/search/', function() use ($app) $controllers->match('/search/', function() use ($app)
{ {
$request = $app['request']; $users = new UserHelper\Manage($app['Core']);
$users = new UserHelper\Manage($request);
$template = 'admin/users.html'; $template = 'admin/users.html';
$twig = new \supertwig(); $twig = new \supertwig();
$twig->addFilter(array('floor' => 'floor')); $twig->addFilter(array('floor' => 'floor'));
$twig->addFilter(array('getDate' => 'phraseadate::getDate')); $twig->addFilter(array('getDate' => 'phraseadate::getDate'));
return $twig->render($template, $users->search($request)); return $twig->render($template, $users->search());
} }
); );
$controllers->get('/search/', function() use ($app) $controllers->post('/apply_template/', function() use ($app)
{ {
$request = $app['request']; $users = UserHelper\Manage($app['Core']);
$users = new UserHelper\Manage($request);
$template = 'admin/users.html';
$twig = new \supertwig(); $users->apply_template();
$twig->addFilter(array('floor' => 'floor'));
$twig->addFilter(array('getDate' => 'phraseadate::getDate'));
return $twig->render($template, $users->search($request)); return new Symfony\Component\HttpFoundation\RedirectResponse('/admin/users/search/');
} }
); );
$controllers->get('/typeahead/search/', function() use ($app, $appbox) $controllers->get('/typeahead/search/', function() use ($app, $appbox)
{ {
$request = $app['request']; $request = $app['request'];
$user_query = new User_Query($appbox); $user_query = new \User_Query($appbox);
$user = User_Adapter::getInstance($appbox->get_session()->get_usr_id(), $appbox); $user = User_Adapter::getInstance($appbox->get_session()->get_usr_id(), $appbox);
$like_value = $request->get('term'); $like_value = $request->get('term');
@@ -258,7 +240,7 @@ class Users implements ControllerProviderInterface
try try
{ {
$request = $app['request']; $request = $app['request'];
$module = new UserHelper\Manage($request); $module = new UserHelper\Manage($app['Core']);
if ($request->get('template') == '1') if ($request->get('template') == '1')
{ {
$user = $module->create_template(); $user = $module->create_template();
@@ -285,7 +267,7 @@ class Users implements ControllerProviderInterface
$controllers->post('/export/csv/', function() use ($appbox, $app) $controllers->post('/export/csv/', function() use ($appbox, $app)
{ {
$request = $app['request']; $request = $app['request'];
$user_query = new \User_Query($appbox); $user_query = new \User_Query($appbox, $app['Core']);
$user = \User_Adapter::getInstance($appbox->get_session()->get_usr_id(), $appbox); $user = \User_Adapter::getInstance($appbox->get_session()->get_usr_id(), $appbox);
$like_value = $request->get('like_value'); $like_value = $request->get('like_value');

View File

@@ -136,7 +136,7 @@ class Basket implements ControllerProviderInterface
}); });
$controllers->post( $controllers->post(
'/{basket_id}/{basket_element_id}/delete/' '/{basket_id}/delete/{basket_element_id}/'
, function(Application $app, Request $request, $basket_id, $basket_element_id) , function(Application $app, Request $request, $basket_id, $basket_element_id)
{ {
/* @var $em \Doctrine\ORM\EntityManager */ /* @var $em \Doctrine\ORM\EntityManager */
@@ -343,6 +343,61 @@ class Basket implements ControllerProviderInterface
} }
}); });
$controllers->post(
'/{basket_id}/stealElements/'
, function(Application $app, Request $request, $basket_id)
{
$em = $app['Core']->getEntityManager();
/* @var $em \Doctrine\ORM\EntityManager */
$basket = $em->getRepository('\Entities\Basket')
->findUserBasket($basket_id, $app['Core']->getAuthenticatedUser());
$user = $app['Core']->getAuthenticatedUser();
/* @var $user \User_Adapter */
$n = 0;
foreach ($request->get('elements') as $bask_element_id)
{
$basket_element = $em->getRepository('\Entities\BasketElement')
->findUserElement($bask_element_id, $user);
if(!$basket_element)
{
continue;
}
$basket_element->setBasket($basket);
$em->merge($basket_element);
$n++;
}
$em->merge($basket);
$em->flush();
$data = array(
'success' => true
, 'message' => sprintf(_('%d records moved'), $n)
);
if ($request->getRequestFormat() == 'json')
{
$datas = $app['Core']['Serializer']->serialize($data, 'json');
return new Response($datas, 200, array('Content-type' => 'application/json'));
}
else
{
return new RedirectResponse('/');
}
});
$controllers->get('/create/', function(Application $app) $controllers->get('/create/', function(Application $app)
{ {
$twig = new \supertwig(); $twig = new \supertwig();
@@ -364,7 +419,7 @@ class Basket implements ControllerProviderInterface
$twig = new \supertwig(); $twig = new \supertwig();
$html = $twig->render('prod/basket.twig', array('basket' => $basket)); $html = $twig->render('prod/WorkZone/Basket.html.twig', array('basket' => $basket));
return new Response($html); return new Response($html);
})->assert('basket_id', '\d+'); })->assert('basket_id', '\d+');

View File

@@ -45,9 +45,9 @@ class Bridge implements ControllerProviderInterface
}; };
if (!$account->get_api()->get_connector()->is_configured()) if (!$account->get_api()->get_connector()->is_configured())
throw new \Bridge_Exception_ApiConnectorNotConfigured(); throw new \Bridge_Exception_ApiConnectorNotConfigured("Bridge API Connector is not configured");
if (!$account->get_api()->get_connector()->is_connected()) if (!$account->get_api()->get_connector()->is_connected())
throw new \Bridge_Exception_ApiConnectorNotConnected (); throw new \Bridge_Exception_ApiConnectorNotConnected ("Bridge API Connector is not connected");
return; return;
}); });
@@ -55,7 +55,7 @@ class Bridge implements ControllerProviderInterface
$controllers->post('/manager/' $controllers->post('/manager/'
, function() use ($app, $twig) , function() use ($app, $twig)
{ {
$route = new RecordHelper\Bridge($app['request']); $route = new RecordHelper\Bridge($app['Core']);
$appbox = \appbox::get_instance(); $appbox = \appbox::get_instance();
$user = \User_Adapter::getInstance($appbox->get_session()->get_usr_id(), $appbox); $user = \User_Adapter::getInstance($appbox->get_session()->get_usr_id(), $appbox);
@@ -420,7 +420,7 @@ class Bridge implements ControllerProviderInterface
$account = \Bridge_Account::load_account($appbox, $request->get('account_id')); $account = \Bridge_Account::load_account($appbox, $request->get('account_id'));
$app['require_connection']($account); $app['require_connection']($account);
$route = new RecordHelper\Bridge($request); $route = new RecordHelper\Bridge($app['Core']);
$route->grep_records($account->get_api()->acceptable_records()); $route->grep_records($account->get_api()->acceptable_records());
$params = array( $params = array(
@@ -447,7 +447,7 @@ class Bridge implements ControllerProviderInterface
$account = \Bridge_Account::load_account($appbox, $request->get('account_id')); $account = \Bridge_Account::load_account($appbox, $request->get('account_id'));
$app['require_connection']($account); $app['require_connection']($account);
$route = new RecordHelper\Bridge($request); $route = new RecordHelper\Bridge($app['Core']);
$route->grep_records($account->get_api()->acceptable_records()); $route->grep_records($account->get_api()->acceptable_records());
$connector = $account->get_api()->get_connector(); $connector = $account->get_api()->get_connector();

View File

@@ -30,9 +30,7 @@ class Edit implements ControllerProviderInterface
$controllers->post('/', function() use ($app) $controllers->post('/', function() use ($app)
{ {
$request = $app['request']; $handler = new RecordHelper\Edit($app['Core']);
$handler = new RecordHelper\Edit($request);
$handler->propose_editing(); $handler->propose_editing();
@@ -48,7 +46,7 @@ class Edit implements ControllerProviderInterface
$controllers->post('/apply/', function() use ($app) $controllers->post('/apply/', function() use ($app)
{ {
$request = $app['request']; $request = $app['request'];
$editing = new RecordHelper\Edit($request); $editing = new RecordHelper\Edit($app['Core']);
$editing->execute($request); $editing->execute($request);
$template = 'prod/actions/edit_default.twig'; $template = 'prod/actions/edit_default.twig';

View File

@@ -43,7 +43,7 @@ class Feed implements ControllerProviderInterface
$user = \User_Adapter::getInstance($appbox->get_session()->get_usr_id(), $appbox); $user = \User_Adapter::getInstance($appbox->get_session()->get_usr_id(), $appbox);
$feeds = \Feed_Collection::load_all($appbox, $user); $feeds = \Feed_Collection::load_all($appbox, $user);
$request = $app['request']; $request = $app['request'];
$publishing = new RecordHelper\Feed($request); $publishing = new RecordHelper\Feed($app['Core']);
$datas = $twig->render('prod/actions/publish/publish.html', array('publishing' => $publishing, 'feeds' => $feeds)); $datas = $twig->render('prod/actions/publish/publish.html', array('publishing' => $publishing, 'feeds' => $feeds));
@@ -71,7 +71,7 @@ class Feed implements ControllerProviderInterface
$entry = \Feed_Entry_Adapter::create($appbox, $feed, $publisher, $title, $subtitle, $author_name, $author_mail); $entry = \Feed_Entry_Adapter::create($appbox, $feed, $publisher, $title, $subtitle, $author_name, $author_mail);
$publishing = new RecordHelper\Feed($request); $publishing = new RecordHelper\Feed($app['Core']);
foreach ($publishing->get_elements() as $record) foreach ($publishing->get_elements() as $record)
{ {

View File

@@ -34,7 +34,7 @@ class MoveCollection implements ControllerProviderInterface
$controllers->post('/', function() use ($app) $controllers->post('/', function() use ($app)
{ {
$request = $app['request']; $request = $app['request'];
$move = new RecordHelper\MoveCollection($request); $move = new RecordHelper\MoveCollection($app['Core']);
$move->propose(); $move->propose();
$template = 'prod/actions/collection_default.twig'; $template = 'prod/actions/collection_default.twig';
@@ -49,7 +49,7 @@ class MoveCollection implements ControllerProviderInterface
$controllers->post('/apply/', function() use ($app) $controllers->post('/apply/', function() use ($app)
{ {
$request = $app['request']; $request = $app['request'];
$move = new RecordHelper\MoveCollection($request); $move = new RecordHelper\MoveCollection($app['Core']);
$move->execute($request); $move->execute($request);
$template = 'prod/actions/collection_submit.twig'; $template = 'prod/actions/collection_submit.twig';

View File

@@ -46,9 +46,8 @@ class WorkZone implements ControllerProviderInterface
, 'srt' => $app['request']->get('sort') , 'srt' => $app['request']->get('sort')
); );
$twig->addFilter(array('get_collection_logo' => 'collection::getLogo'));
return new Response($twig->render('prod/baskets.html', $params)); return new Response($twig->render('prod/WorkZone/WorkZone.html.twig', $params));
}); });
return $controllers; return $controllers;

View File

@@ -20,15 +20,6 @@ use Silex\ControllerProviderInterface;
use Silex\ControllerCollection; use Silex\ControllerCollection;
date_default_timezone_set('Europe/Berlin'); date_default_timezone_set('Europe/Berlin');
require_once dirname(__FILE__) . '/../../../../version.inc';
require_once dirname(__FILE__) . '/../../../../classes/phrasea.class.php';
require_once dirname(__FILE__) . '/../../../../classes/bootstrap.class.php';
require_once dirname(__FILE__) . '/../../../../classes/cache/cacheableInterface.class.php';
require_once dirname(__FILE__) . '/../../../../classes/cache/interface.class.php';
require_once dirname(__FILE__) . '/../../../../classes/cache/nocache.class.php';
require_once dirname(__FILE__) . '/../../../../classes/cache/adapter.class.php';
require_once dirname(__FILE__) . '/../../../../classes/User/Interface.class.php';
require_once dirname(__FILE__) . '/../../../../classes/User/Adapter.class.php';
/** /**
* *
@@ -43,8 +34,6 @@ class Installer implements ControllerProviderInterface
{ {
$controllers = new ControllerCollection(); $controllers = new ControllerCollection();
$app['available_languages'] = \User_Adapter::detectLanguage(new \Setup_Registry());
$controllers->get('/', function() use ($app) $controllers->get('/', function() use ($app)
{ {
$request = $app['request']; $request = $app['request'];
@@ -89,17 +78,17 @@ class Installer implements ControllerProviderInterface
} }
$ld_path = array(dirname(__FILE__) . '/../../../../templates/web'); $ld_path = array(__DIR__ . '/../../../../../templates/web');
$loader = new Twig_Loader_Filesystem($ld_path); $loader = new \Twig_Loader_Filesystem($ld_path);
$twig = new Twig_Environment($loader); $twig = new \Twig_Environment($loader);
$html = $twig->render( $html = $twig->render(
'/setup/index.twig' '/setup/index.twig'
, array_merge($constraints_coll, array( , array_merge($constraints_coll, array(
'locale' => Session_Handler::get_locale() 'locale' => Session_Handler::get_locale()
, 'available_locales' => $app['available_languages'] , 'available_locales' => $app['Core']::getAvailableLanguages()
, 'version_number' => GV_version , 'version_number' => $app['Core']['Version']->getNumber()
, 'version_name' => GV_version_name , 'version_name' => $app['Core']['Version']->getName()
, 'current_servername' => $request->getScheme() . '://' . $request->getHttpHost() . '/' , 'current_servername' => $request->getScheme() . '://' . $request->getHttpHost() . '/'
)) ))
); );
@@ -111,12 +100,12 @@ class Installer implements ControllerProviderInterface
{ {
\phrasea::use_i18n(\Session_Handler::get_locale()); \phrasea::use_i18n(\Session_Handler::get_locale());
$ld_path = array(dirname(__FILE__) . '/../../../../templates/web'); $ld_path = array(__DIR__ . '/../../../../../templates/web');
$loader = new Twig_Loader_Filesystem($ld_path); $loader = new \Twig_Loader_Filesystem($ld_path);
$twig = new Twig_Environment($loader); $twig = new \Twig_Environment($loader);
$twig->addExtension(new Twig_Extensions_Extension_I18n()); $twig->addExtension(new \Twig_Extensions_Extension_I18n());
$request = $app['request']; $request = $app['request'];
@@ -125,14 +114,15 @@ class Installer implements ControllerProviderInterface
{ {
$warnings[] = _('It is not recommended to install Phraseanet without HTTPS support'); $warnings[] = _('It is not recommended to install Phraseanet without HTTPS support');
} }
$html = $twig->render( $html = $twig->render(
'/setup/step2.twig' '/setup/step2.twig'
, array( , array(
'locale' => \Session_Handler::get_locale() 'locale' => \Session_Handler::get_locale()
, 'available_locales' => $app['available_languages'] , 'available_locales' => $app['Core']::getAvailableLanguages()
, 'available_templates' => \appbox::list_databox_templates() , 'available_templates' => \appbox::list_databox_templates()
, 'version_number' => GV_version , 'version_number' => $app['Core']['Version']->getNumber()
, 'version_name' => GV_version_name , 'version_name' => $app['Core']['Version']->getName()
, 'warnings' => $warnings , 'warnings' => $warnings
, 'current_servername' => $request->getScheme() . '://' . $request->getHttpHost() . '/' , 'current_servername' => $request->getScheme() . '://' . $request->getHttpHost() . '/'
, 'discovered_binaries' => \setup::discover_binaries() , 'discovered_binaries' => \setup::discover_binaries()

View File

@@ -25,7 +25,6 @@ use Silex\ControllerCollection;
* @license http://opensource.org/licenses/gpl-3.0 GPLv3 * @license http://opensource.org/licenses/gpl-3.0 GPLv3
* @link www.phraseanet.com * @link www.phraseanet.com
*/ */
class Upgrader implements ControllerProviderInterface class Upgrader implements ControllerProviderInterface
{ {
@@ -34,7 +33,6 @@ class Upgrader implements ControllerProviderInterface
$controllers = new ControllerCollection(); $controllers = new ControllerCollection();
$app['registry'] = new \Setup_Registry(); $app['registry'] = new \Setup_Registry();
$app['available_languages'] = \User_Adapter::detectLanguage($app['registry']);
$app['twig'] = function() $app['twig'] = function()
{ {
return new \supertwig(); return new \supertwig();
@@ -51,10 +49,11 @@ class Upgrader implements ControllerProviderInterface
, array( , array(
'locale' => \Session_Handler::get_locale() 'locale' => \Session_Handler::get_locale()
, 'upgrade_status' => $upgrade_status , 'upgrade_status' => $upgrade_status
, 'available_locales' => $app['available_languages'] , 'available_locales' => $app['Core']::getAvailableLanguages()
, 'bad_users' => \User_Adapter::get_wrong_email_users(\appbox::get_instance()) , 'bad_users' => \User_Adapter::get_wrong_email_users(\appbox::get_instance())
, 'version_number' => GV_version , 'version_number' => $app['Core']['Version']->getNumber()
, 'version_name' => GV_version_name) , 'version_name' => $app['Core']['Version']->getName()
)
); );
ini_set('display_errors', 'on'); ini_set('display_errors', 'on');

View File

@@ -24,7 +24,16 @@ require_once __DIR__ . '/../../vendor/Silex/vendor/pimple/lib/Pimple.php';
class Core extends \Pimple class Core extends \Pimple
{ {
/**
protected static $availableLanguages = array(
'ar_SA' => 'العربية'
, 'de_DE' => 'Deutsch'
, 'en_GB' => 'English'
, 'es_ES' => 'Español'
, 'fr_FR' => 'Français'
);
/**
* *
* @var Core\Configuration * @var Core\Configuration
*/ */
@@ -54,10 +63,23 @@ class Core extends \Pimple
}); });
$this['Registry'] = $this->share(function() if (\setup::is_installed())
{ {
return \registry::get_instance(); $this['Registry'] = $this->share(function()
}); {
return \registry::get_instance();
});
\phrasea::start();
$this->enableEvents();
}
else
{
$this['Registry'] = $this->share(function()
{
return new \Setup_Registry();
});
}
/** /**
* Initialize Request * Initialize Request
@@ -82,22 +104,21 @@ class Core extends \Pimple
$this->verifyTimeZone(); $this->verifyTimeZone();
\phrasea::start();
$this->detectLanguage(); $this->detectLanguage();
$this->enableLocales(); $this->enableLocales();
$this->enableEvents();
define('JETON_MAKE_SUBDEF', 0x01); define('JETON_MAKE_SUBDEF', 0x01);
define('JETON_WRITE_META_DOC', 0x02); define('JETON_WRITE_META_DOC', 0x02);
define('JETON_WRITE_META_SUBDEF', 0x04); define('JETON_WRITE_META_SUBDEF', 0x04);
define('JETON_WRITE_META', 0x06); define('JETON_WRITE_META', 0x06);
$gatekeeper = \gatekeeper::getInstance(); if (\setup::is_installed())
$gatekeeper->check_directory(); {
$gatekeeper = \gatekeeper::getInstance();
$gatekeeper->check_directory();
}
return; return;
} }
@@ -203,6 +224,7 @@ class Core extends \Pimple
protected function enableEvents() protected function enableEvents()
{ {
\phrasea::load_events(); \phrasea::load_events();
return; return;
@@ -216,8 +238,8 @@ class Core extends \Pimple
if ($this->getRegistry()->get('GV_debug')) if ($this->getRegistry()->get('GV_debug'))
{ {
ini_set('display_errors', 'on'); ini_set('display_errors', 'on');
ini_set('display_startup_errors', 'on'); ini_set('display_startup_errors', 'on');
} }
else else
{ {
@@ -237,23 +259,24 @@ class Core extends \Pimple
return $this; return $this;
} }
/**
*
* @return Array
*/
public static function getAvailableLanguages()
{
return static::$availableLanguages;
}
protected function detectLanguage() protected function detectLanguage()
{ {
$availables = array(
'ar_SA' => 'العربية'
, 'de_DE' => 'Deutsch'
, 'en_GB' => 'English'
, 'es_ES' => 'Español'
, 'fr_FR' => 'Français'
);
$this->getRequest()->setDefaultLocale( $this->getRequest()->setDefaultLocale(
$this->getRegistry()->get('GV_default_lng', 'en_GB') $this->getRegistry()->get('GV_default_lng', 'en_GB')
); );
$cookies = $this->getRequest()->cookies; $cookies = $this->getRequest()->cookies;
if (isset($availables[$cookies->get('locale')])) if (isset(static::$availableLanguages[$cookies->get('locale')]))
{ {
$this->getRequest()->setLocale($cookies->get('locale')); $this->getRequest()->setLocale($cookies->get('locale'));
} }

View File

@@ -22,7 +22,11 @@ use Alchemy\Phrasea\Core;
class Helper class Helper
{ {
private $core; /**
*
* @var Alchemy\Phrasea\Core\Kernel
*/
protected $core;
/** /**
* *

View File

@@ -12,7 +12,7 @@
namespace Alchemy\Phrasea\Helper\Record; namespace Alchemy\Phrasea\Helper\Record;
use Alchemy\Phrasea\Helper\RecordsAbstract as RecordHelper; use Alchemy\Phrasea\Helper\Record\Helper as RecordHelper;
/** /**
* *

View File

@@ -8,13 +8,17 @@
* For the full copyright and license information, please view the LICENSE * For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
*/ */
namespace Alchemy\Phrasea\Helper\Record; namespace Alchemy\Phrasea\Helper\Record;
use Alchemy\Phrasea\Helper\Record\Helper as RecordHelper,
use Alchemy\Phrasea\Helper\RecordsAbstract as RecordHelper; Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Request;
/** /**
* Edit Record Helper
* This object handles /edit/ request and filters records that user can edit
*
* It prepares metadatas, databases structures.
* *
* @package * @package
* @license http://opensource.org/licenses/gpl-3.0 GPLv3 * @license http://opensource.org/licenses/gpl-3.0 GPLv3
@@ -64,16 +68,21 @@ class Edit extends RecordHelper
* @var boolean * @var boolean
*/ */
protected $works_on_unique_sbas = true; protected $works_on_unique_sbas = true;
/**
*
* @var type
*/
protected $has_thesaurus = false; protected $has_thesaurus = false;
/**
*
public function __construct(Request $request) * @param \Alchemy\Phrasea\Core $core
* @return Edit
*/
public function __construct(\Alchemy\Phrasea\Core $core)
{ {
$appbox = \appbox::get_instance(); parent::__construct($core);
parent::__construct($request);
if ($this->is_single_grouping()) if ($this->is_single_grouping())
{ {
@@ -186,9 +195,7 @@ class Edit extends RecordHelper
protected function generate_javascript_elements() protected function generate_javascript_elements()
{ {
$_lst = array(); $_lst = array();
$appbox = \appbox::get_instance(); $user = $this->getCore()->getAuthenticatedUser();
$session = $appbox->get_session();
$user = \User_Adapter::getInstance($session->get_usr_id(), $appbox);
$twig = new \supertwig(); $twig = new \supertwig();
foreach ($this->selection as $record) foreach ($this->selection as $record)
@@ -323,9 +330,7 @@ class Edit extends RecordHelper
protected function generate_javascript_status() protected function generate_javascript_status()
{ {
$_tstatbits = array(); $_tstatbits = array();
$appbox = \appbox::get_instance(); $user = $this->getCore()->getAuthenticatedUser();
$session = $appbox->get_session();
$user = \User_Adapter::getInstance($session->get_usr_id(), $appbox);
if ($user->ACL()->has_right('changestatus')) if ($user->ACL()->has_right('changestatus'))
{ {
@@ -462,7 +467,6 @@ class Edit extends RecordHelper
} }
if (!is_array($request->get('mds'))) if (!is_array($request->get('mds')))
return $this; return $this;
$sbas_id = (int) $request->get('sbid'); $sbas_id = (int) $request->get('sbid');

View File

@@ -12,7 +12,7 @@
namespace Alchemy\Phrasea\Helper\Record; namespace Alchemy\Phrasea\Helper\Record;
use Alchemy\Phrasea\Helper\RecordsAbstract as RecordHelper; use Alchemy\Phrasea\Helper\Record\Helper as RecordHelper;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
/** /**
@@ -43,14 +43,12 @@ class Feed extends RecordHelper
/** /**
* *
* @param Request $request * @param \Alchemy\Phrasea\Core $core
* @return RecordsFeed * @return Feed
*/ */
public function __construct(Request $request) public function __construct(\Alchemy\Phrasea\Core $core)
{ {
$appbox = \appbox::get_instance(); parent::__construct($core);
parent::__construct($request);
if ($this->is_single_grouping()) if ($this->is_single_grouping())
{ {

View File

@@ -9,7 +9,7 @@
* file that was distributed with this source code. * file that was distributed with this source code.
*/ */
namespace Alchemy\Phrasea\Helper; namespace Alchemy\Phrasea\Helper\Record;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
@@ -20,7 +20,7 @@ use Symfony\Component\HttpFoundation\Request;
* @license http://opensource.org/licenses/gpl-3.0 GPLv3 * @license http://opensource.org/licenses/gpl-3.0 GPLv3
* @link www.phraseanet.com * @link www.phraseanet.com
*/ */
class RecordsAbstract class Helper extends \Alchemy\Phrasea\Helper\Helper
{ {
/** /**
@@ -92,45 +92,35 @@ class RecordsAbstract
/** /**
* *
* @var basket_adapter * @var \Entities\Basket
*/ */
protected $original_basket; protected $original_basket;
/** /**
* *
* @return action_move * @param \Alchemy\Phrasea\Core $core
* @return Helper
*/ */
public function __construct(Request $request) public function __construct(\Alchemy\Phrasea\Core $core)
{ {
$this->request = $request; parent::__construct($core);
$this->selection = new \set_selection(); $this->selection = new \set_selection();
$appbox = \appbox::get_instance(); $appbox = \appbox::get_instance();
$usr_id = $appbox->get_session()->get_usr_id(); $usr_id = $appbox->get_session()->get_usr_id();
if (trim($request->get('ssel')) !== '') if (trim($request->get('ssel')) !== '')
{ {
$basket = \basket_adapter::getInstance($appbox, $request->get('ssel'), $usr_id); $em = $this->getCore()->getEntityManager();
$repository = $em->getRepository('\Entities\Basket');
if ($basket->is_grouping() && $this->flatten_groupings === true) /* @var $$repository \Repositories\BasketRepository */
{ $Basket = $repository->findUserBasket($request->get('ssel'), $this->getCore()->getAuthenticatedUser());
foreach ($basket->get_elements() as $basket_element)
{ $this->selection->load_basket($Basket);
/* @var $basket_element basket_element_adapter */
$this->selection->add_element($basket_element->get_record()); $this->is_basket = true;
} $this->original_basket = $Basket;
}
elseif($basket->is_grouping())
{
$grouping = new record_adapter($basket->get_sbas_id(), $basket->get_record_id());
$this->selection->add_element($grouping);
}
else
{
$this->selection->load_basket($basket);
$this->is_basket = true;
}
$this->original_basket = $basket;
} }
else else
{ {
@@ -159,7 +149,7 @@ class RecordsAbstract
/** /**
* If the original selection was a basket, returns the basket object * If the original selection was a basket, returns the basket object
* *
* @return basket_adapter * @return \Entities\Basket
*/ */
public function get_original_basket() public function get_original_basket()
{ {
@@ -304,16 +294,6 @@ class RecordsAbstract
return $this->selection->serialize_list(); return $this->selection->serialize_list();
} }
public function get_request()
{
return $this->request;
}
public function set_request($request)
{
$this->request = $request;
}
public function grep_records(Closure $closure) public function grep_records(Closure $closure)
{ {
foreach ($this->selection->get_elements() as $record) foreach ($this->selection->get_elements() as $record)

View File

@@ -11,8 +11,7 @@
namespace Alchemy\Phrasea\Helper\Record; namespace Alchemy\Phrasea\Helper\Record;
use Alchemy\Phrasea\Helper\Record\Helper as RecordHelper;
use Alchemy\Phrasea\Helper\RecordsAbstract as RecordHelper;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
/** /**
@@ -23,33 +22,37 @@ use Symfony\Component\HttpFoundation\Request;
*/ */
class MoveCollection extends RecordHelper class MoveCollection extends RecordHelper
{ {
/** /**
* *
* @var Array * @var Array
*/ */
protected $required_rights = array('candeleterecord'); protected $required_rights = array('candeleterecord');
/** /**
* *
* @var Array * @var Array
*/ */
protected $available_destinations; protected $available_destinations;
/** /**
* *
*/ */
protected $works_on_unique_sbas = true; protected $works_on_unique_sbas = true;
/** /**
* Constructor
* *
* @return action_move * @param \Alchemy\Phrasea\Core $core
* @return MoveCollection
*/ */
public function __construct(Request $request) public function __construct(\Alchemy\Phrasea\Core $core)
{ {
parent::__construct($request); parent::__construct($core);
$this->evaluate_destinations(); $this->evaluate_destinations();
return $this; return $this;
} }
/** /**
* Check which collections can receive the documents * Check which collections can receive the documents
* *
@@ -60,14 +63,13 @@ class MoveCollection extends RecordHelper
$this->available_destinations = array(); $this->available_destinations = array();
if (!$this->is_possible) if (!$this->is_possible)
return $this; return $this;
$appbox = \appbox::get_instance(); $this->available_destinations = array_keys(
$session = $appbox->get_session(); $this->getCore()->getAuthenticatedUser()->ACL()->get_granted_base(
$user = \User_Adapter::getInstance($session->get_usr_id(), $appbox); array('canaddrecord'), array($this->sbas_id)
)
$this->available_destinations = array_keys($user->ACL()->get_granted_base(array('canaddrecord'), array($this->sbas_id))); );
return $this; return $this;
} }
@@ -95,8 +97,7 @@ class MoveCollection extends RecordHelper
public function execute(Request $request) public function execute(Request $request)
{ {
$appbox = \appbox::get_instance(); $appbox = \appbox::get_instance();
$session = $appbox->get_session(); $user = $this->getCore()->getAuthenticatedUser();
$user = \User_Adapter::getInstance($session->get_usr_id(), $appbox);
$base_dest = $base_dest =
$user->ACL()->has_right_on_base($request->get('base_id'), 'canaddrecord') ? $user->ACL()->has_right_on_base($request->get('base_id'), 'canaddrecord') ?
@@ -130,4 +131,5 @@ class MoveCollection extends RecordHelper
return $this; return $this;
} }
} }

View File

@@ -12,7 +12,7 @@
namespace Alchemy\Phrasea\Helper\Record; namespace Alchemy\Phrasea\Helper\Record;
use Alchemy\Phrasea\Helper\RecordsAbstract as RecordHelper; use Alchemy\Phrasea\Helper\Record\Helper as RecordHelper;
/** /**
* *

View File

@@ -19,11 +19,9 @@ use Symfony\Component\HttpFoundation\Request;
* @license http://opensource.org/licenses/gpl-3.0 GPLv3 * @license http://opensource.org/licenses/gpl-3.0 GPLv3
* @link www.phraseanet.com * @link www.phraseanet.com
*/ */
class Edit class Edit extends \Alchemy\Phrasea\Helper\Helper
{ {
protected $request;
/** /**
* *
* @var array * @var array
@@ -42,19 +40,11 @@ class Edit
*/ */
protected $base_id; protected $base_id;
/** public function __construct(\Alchemy\Phrasea\Core $core)
*
* @param Symfony\Component\HttpFoundation\Request $request
* @return module_admin_route_users_edit
*/
public function __construct(Request $request)
{ {
parent::__construct($core);
$this->users = explode(';', $request->get('users')); $this->users = explode(';', $request->get('users'));
$this->request = $request;
$appbox = \appbox::get_instance();
$session = $appbox->get_session();
$users = array(); $users = array();
foreach ($this->users as $usr_id) foreach ($this->users as $usr_id)
{ {
@@ -83,23 +73,26 @@ class Edit
protected function delete_user(\User_Adapter $user) protected function delete_user(\User_Adapter $user)
{ {
$appbox = \appbox::get_instance(); $master = $this->getCore()->getAuthenticatedUser();
$session = $appbox->get_session();
$list = array_keys(\User_Adapter::getInstance($session->get_usr_id(), $appbox)->ACL()->get_granted_base(array('canadmin'))); $list = array_keys($master->ACL()->get_granted_base(array('canadmin')));
$user->ACL()->revoke_access_from_bases($list); $user->ACL()->revoke_access_from_bases($list);
if ($user->ACL()->is_phantom()) if ($user->ACL()->is_phantom())
{
$user->delete(); $user->delete();
}
return $this; return $this;
} }
public function get_users_rights() public function get_users_rights()
{ {
$user = $this->getCore()->getAuthenticatedUser();
$appbox = \appbox::get_instance(); $appbox = \appbox::get_instance();
$session = $appbox->get_session();
$list = array_keys(\User_Adapter::getInstance($session->get_usr_id(), $appbox)->ACL()->get_granted_base(array('canadmin'))); $list = array_keys($user->ACL()->get_granted_base(array('canadmin')));
$sql = "SELECT $sql = "SELECT
b.sbas_id, b.sbas_id,
@@ -203,7 +196,7 @@ class Edit
public function get_quotas() public function get_quotas()
{ {
$this->base_id = (int) $this->request->get('base_id'); $this->base_id = (int) $this->getCore()->getRequest()->get('base_id');
// $this->base_id = (int) $parm['base_id']; // $this->base_id = (int) $parm['base_id'];
@@ -230,7 +223,7 @@ class Edit
public function get_masks() public function get_masks()
{ {
$this->base_id = (int) $this->request->get('base_id'); $this->base_id = (int) $this->getCore()->getRequest()->get('base_id');
$sql = "SELECT BIN(mask_and) AS mask_and, BIN(mask_xor) AS mask_xor $sql = "SELECT BIN(mask_and) AS mask_and, BIN(mask_xor) AS mask_xor
FROM basusr FROM basusr
@@ -334,7 +327,7 @@ class Edit
public function get_time() public function get_time()
{ {
$this->base_id = (int) $this->request->get('base_id'); $this->base_id = (int) $this->getCore()->getRequest()->get('base_id');
$sql = "SELECT u.usr_id, time_limited, limited_from, limited_to $sql = "SELECT u.usr_id, time_limited, limited_from, limited_to
FROM (usr u INNER JOIN basusr bu ON u.usr_id = bu.usr_id) FROM (usr u INNER JOIN basusr bu ON u.usr_id = bu.usr_id)
@@ -540,7 +533,14 @@ class Edit
return $this; return $this;
} }
$appbox = \appbox::get_instance(); $user = User_adapter::getInstance(array_pop($this->users), appbox::get_instance());
if ($user->is_template())
{
return $this;
}
$appbox = appbox::get_instance();
$session = $appbox->get_session(); $session = $appbox->get_session();
$request = \http_request::getInstance(); $request = \http_request::getInstance();
@@ -584,15 +584,45 @@ class Edit
return $this; return $this;
} }
public function apply_template()
{
$appbox = appbox::get_instance();
$session = $appbox->get_session();
$template = \User_adapter::getInstance($this->request->get('template'), $appbox);
if ($template->get_template_owner()->get_id() != $session->get_usr_id())
{
throw new \Exception_Forbidden('You are not the owner of the template');
}
$current_user = \User_adapter::getInstance($session->get_usr_id(), $appbox);
$base_ids = array_keys($current_user->ACL()->get_granted_base(array('canadmin')));
foreach ($this->users as $usr_id)
{
$user = \User_adapter::getInstance($usr_id, $appbox);
if($user->is_template())
{
continue;
}
$user->ACL()->apply_model($template, $base_ids);
}
return $this;
}
public function apply_quotas() public function apply_quotas()
{ {
$this->base_id = (int) $this->request->get('base_id'); $this->base_id = (int) $this->getCore()->getRequest()->get('base_id');
foreach ($this->users as $usr_id) foreach ($this->users as $usr_id)
{ {
$user = \User_Adapter::getInstance($usr_id, \appbox::get_instance()); $user = \User_Adapter::getInstance($usr_id, \appbox::get_instance());
if ($this->request->get('quota')) if ($this->getCore()->getRequest()->get('quota'))
$user->ACL()->set_quotas_on_base($this->base_id, $this->request->get('droits'), $this->request->get('restes')); $user->ACL()->set_quotas_on_base($this->base_id, $this->getCore()->getRequest()->get('droits'), $this->getCore()->getRequest()->get('restes'));
else else
$user->ACL()->remove_quotas_on_base($this->base_id); $user->ACL()->remove_quotas_on_base($this->base_id);
} }
@@ -602,12 +632,13 @@ class Edit
public function apply_masks() public function apply_masks()
{ {
$this->base_id = (int) $this->request->get('base_id'); $request = $this->getCore()->getRequest();
$this->base_id = (int) $request->get('base_id');
$vand_and = $this->request->get('vand_and'); $vand_and = $request->get('vand_and');
$vand_or = $this->request->get('vand_or'); $vand_or = $request->get('vand_or');
$vxor_and = $this->request->get('vxor_and'); $vxor_and = $request->get('vxor_and');
$vxor_or = $this->request->get('vxor_or'); $vxor_or = $request->get('vxor_or');
if ($vand_and && $vand_or && $vxor_and && $vxor_or) if ($vand_and && $vand_or && $vxor_and && $vxor_or)
{ {
@@ -624,13 +655,14 @@ class Edit
public function apply_time() public function apply_time()
{ {
$request = $this->getCore()->getRequest();
$this->base_id = (int) $this->request->get('base_id'); $this->base_id = (int) $request->get('base_id');
$dmin = $this->request->get('dmin') ? new \DateTime($this->request->get('dmin')) : null; $dmin = $request->get('dmin') ? new \DateTime($request->get('dmin')) : null;
$dmax = $this->request->get('dmax') ? new \DateTime($this->request->get('dmax')) : null; $dmax = $request->get('dmax') ? new \DateTime($request->get('dmax')) : null;
$activate = $this->request->get('limit'); $activate = $request->get('limit');
foreach ($this->users as $usr_id) foreach ($this->users as $usr_id)
{ {

View File

@@ -19,10 +19,9 @@ use Symfony\Component\HttpFoundation\Request;
* @license http://opensource.org/licenses/gpl-3.0 GPLv3 * @license http://opensource.org/licenses/gpl-3.0 GPLv3
* @link www.phraseanet.com * @link www.phraseanet.com
*/ */
class Manage class Manage extends \Alchemy\Phrasea\Helper\Helper
{ {
protected $request;
/** /**
* *
* @var array * @var array
@@ -39,18 +38,11 @@ class Manage
*/ */
protected $usr_id; protected $usr_id;
public function __construct(Request $request) public function search()
{ {
$this->request = $request; $request = $this->getCore()->getRequest();
return $this;
}
public function search(Request $request)
{
$appbox = \appbox::get_instance(); $appbox = \appbox::get_instance();
$session = $appbox->get_session();
$offset_start = (int) $request->get('offset_start'); $offset_start = (int) $request->get('offset_start');
$offset_start = $offset_start < 0 ? 0 : $offset_start; $offset_start = $offset_start < 0 ? 0 : $offset_start;
@@ -69,7 +61,7 @@ class Manage
, 'offset_start' => $offset_start , 'offset_start' => $offset_start
); );
$user = \User_Adapter::getInstance($session->get_usr_id(), $appbox); $user = $this->getCore()->getAuthenticatedUser();
$query = new \User_Query($appbox); $query = new \User_Query($appbox);
if (is_array($request->get('base_id'))) if (is_array($request->get('base_id')))
@@ -111,17 +103,24 @@ class Manage
$this->query_parms[$k] = false; $this->query_parms[$k] = false;
} }
$query = new User_Query($appbox);
$templates = $query
->only_templates(true)
->execute()->get_results();
return array( return array(
'users' => $this->results, 'users' => $this->results,
'parm' => $this->query_parms, 'parm' => $this->query_parms,
'invite_user' => $invite, 'invite_user' => $invite,
'autoregister_user' => $autoregister 'autoregister_user' => $autoregister,
'templates' => $templates
); );
} }
public function create_newuser() public function create_newuser()
{ {
$email = $this->request->get('value'); $email = $this->getCore()->getRequest()->get('value');
if(!\mail::validateEmail($email)) if(!\mail::validateEmail($email))
{ {
@@ -153,7 +152,7 @@ class Manage
public function create_template() public function create_template()
{ {
$name = $this->request->get('value'); $name = $this->getCore()->getRequest()->get('value');
if(trim($name) === '') if(trim($name) === '')
{ {
@@ -161,7 +160,7 @@ class Manage
} }
$appbox = \appbox::get_instance(); $appbox = \appbox::get_instance();
$user = \User_Adapter::getInstance($appbox->get_session()->get_usr_id(), $appbox); $user = $this->getCore()->getAuthenticatedUser();
$created_user = \User_Adapter::create($appbox, $name, \random::generatePassword(16), null, false, false); $created_user = \User_Adapter::create($appbox, $name, \random::generatePassword(16), null, false, false);
$created_user->set_template($user); $created_user->set_template($user);

View File

@@ -22,214 +22,235 @@ require_once __DIR__ . '/../../classes/record/adapter.class.php';
*/ */
class BasketElement class BasketElement
{ {
/**
* @var integer $id
*/
private $id;
/** /**
* @var integer $record_id * @var integer $id
*/ */
private $record_id; private $id;
/** /**
* @var integer $sbas_id * @var integer $record_id
*/ */
private $sbas_id; private $record_id;
/** /**
* @var integer $ord * @var integer $sbas_id
*/ */
private $ord; private $sbas_id;
/** /**
* @var datetime $created * @var integer $ord
*/ */
private $created; private $ord;
/** /**
* @var datetime $updated * @var datetime $created
*/ */
private $updated; private $created;
/** /**
* @var Entities\Basket * @var datetime $updated
*/ */
private $basket; private $updated;
/**
* @var Entities\Basket
*/
private $basket;
/** /**
* Get id * Get id
* *
* @return integer * @return integer
*/ */
public function getId() public function getId()
{
return $this->id;
}
/**
* Set record_id
*
* @param integer $recordId
*/
public function setRecordId($recordId)
{
$this->record_id = $recordId;
}
/**
* Get record_id
*
* @return integer
*/
public function getRecordId()
{
return $this->record_id;
}
/**
* Set sbas_id
*
* @param integer $sbasId
*/
public function setSbasId($sbasId)
{
$this->sbas_id = $sbasId;
}
/**
* Get sbas_id
*
* @return integer
*/
public function getSbasId()
{
return $this->sbas_id;
}
/**
* Set ord
*
* @param integer $ord
*/
public function setOrd($ord)
{
$this->ord = $ord;
}
/**
* Get ord
*
* @return integer
*/
public function getOrd()
{
return $this->ord;
}
/**
* Set created
*
* @param datetime $created
*/
public function setCreated($created)
{
$this->created = $created;
}
/**
* Get created
*
* @return datetime
*/
public function getCreated()
{
return $this->created;
}
/**
* Set updated
*
* @param datetime $updated
*/
public function setUpdated($updated)
{
$this->updated = $updated;
}
/**
* Get updated
*
* @return datetime
*/
public function getUpdated()
{
return $this->updated;
}
/**
* Set basket
*
* @param Entities\Basket $basket
*/
public function setBasket(\Entities\Basket $basket)
{
$this->basket = $basket;
}
/**
* Get basket
*
* @return Entities\Basket
*/
public function getBasket()
{
return $this->basket;
}
public function getRecord()
{
return new \record_adapter($this->getSbasId(), $this->getRecordId(), $this->getOrd());
}
public function setRecord(\record_adapter $record)
{
$this->setRecordId($record->get_record_id());
$this->setSbasId($record->get_sbas_id());
}
public function setLastInBasket()
{
$this->setOrd($this->getBasket()->getElements()->count() + 1);
}
/**
* @var Entities\ValidationData
*/
private $validation_datas;
public function __construct()
{
$this->validation_datas = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Add validation_datas
*
* @param Entities\ValidationData $validationDatas
*/
public function addValidationData(\Entities\ValidationData $validationDatas)
{
$this->validation_datas[] = $validationDatas;
}
/**
* Get validation_datas
*
* @return Doctrine\Common\Collections\Collection
*/
public function getValidationDatas()
{
return $this->validation_datas;
}
/**
*
* @param \User_Adapter $user
* @return \Entities\ValidationData
*/
public function getUserValidationDatas(\User_Adapter $user)
{
foreach ($this->validation_datas as $validationData)
{ {
return $this->id; /* @var $validationData \Entities\ValidationData */
if ($validationData->getParticipant()->getUser()->get_id() == $user->get_id())
{
return $validationData;
}
} }
/** throw new \Exception('There is no such participant');
* Set record_id }
*
* @param integer $recordId
*/
public function setRecordId($recordId)
{
$this->record_id = $recordId;
}
/**
* Get record_id
*
* @return integer
*/
public function getRecordId()
{
return $this->record_id;
}
/**
* Set sbas_id
*
* @param integer $sbasId
*/
public function setSbasId($sbasId)
{
$this->sbas_id = $sbasId;
}
/**
* Get sbas_id
*
* @return integer
*/
public function getSbasId()
{
return $this->sbas_id;
}
/**
* Set ord
*
* @param integer $ord
*/
public function setOrd($ord)
{
$this->ord = $ord;
}
/**
* Get ord
*
* @return integer
*/
public function getOrd()
{
return $this->ord;
}
/**
* Set created
*
* @param datetime $created
*/
public function setCreated($created)
{
$this->created = $created;
}
/**
* Get created
*
* @return datetime
*/
public function getCreated()
{
return $this->created;
}
/**
* Set updated
*
* @param datetime $updated
*/
public function setUpdated($updated)
{
$this->updated = $updated;
}
/**
* Get updated
*
* @return datetime
*/
public function getUpdated()
{
return $this->updated;
}
/**
* Set basket
*
* @param Entities\Basket $basket
*/
public function setBasket(\Entities\Basket $basket)
{
$this->basket = $basket;
}
/**
* Get basket
*
* @return Entities\Basket
*/
public function getBasket()
{
return $this->basket;
}
public function getRecord()
{
return new \record_adapter($this->getSbasId(), $this->getRecordId(), $this->getOrd());
}
public function setRecord(\record_adapter $record)
{
$this->setRecordId($record->get_record_id());
$this->setSbasId($record->get_sbas_id());
}
public function setLastInBasket()
{
$this->setOrd($this->getBasket()->getElements()->count() + 1);
}
/**
* @var Entities\ValidationData
*/
private $validation_datas;
public function __construct()
{
$this->validation_datas = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Add validation_datas
*
* @param Entities\ValidationData $validationDatas
*/
public function addValidationData(\Entities\ValidationData $validationDatas)
{
$this->validation_datas[] = $validationDatas;
}
/**
* Get validation_datas
*
* @return Doctrine\Common\Collections\Collection
*/
public function getValidationDatas()
{
return $this->validation_datas;
}
} }

View File

@@ -8,7 +8,9 @@
* For the full copyright and license information, please view the LICENSE * For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
*/ */
namespace Entities; namespace Entities;
/** /**
* *
* @package * @package
@@ -28,19 +30,44 @@ class ValidationParticipant
*/ */
private $usr_id; private $usr_id;
/**
* @var Entities\ValidationData
*/
private $datases;
/** /**
* @var Entities\ValidationSession * @var Entities\ValidationSession
*/ */
private $session; private $session;
/**
* @var datetime $reminded
*/
private $reminded = false;
/**
* @var Entities\ValidationData
*/
private $datas;
/**
* @var boolean $is_confirmed
*/
private $is_confirmed = false;
/**
* @var boolean $can_agree
*/
private $can_agree = false;
/**
* @var boolean $can_see_others
*/
private $can_see_others = false;
/**
* @var boolean $is_aware
*/
private $is_aware = false;
public function __construct() public function __construct()
{ {
$this->datases = new \Doctrine\Common\Collections\ArrayCollection(); $this->datas = new \Doctrine\Common\Collections\ArrayCollection();
} }
/** /**
@@ -76,21 +103,11 @@ class ValidationParticipant
/** /**
* Add datases * Add datases
* *
* @param Entities\ValidationData $datases * @param Entities\ValidationData $datas
*/ */
public function addValidationData(\Entities\ValidationData $datases) public function addValidationData(\Entities\ValidationData $datas)
{ {
$this->datases[] = $datases; $this->datas[] = $datas;
}
/**
* Get datases
*
* @return Doctrine\Common\Collections\Collection
*/
public function getDatases()
{
return $this->datases;
} }
/** /**
@@ -113,12 +130,6 @@ class ValidationParticipant
return $this->session; return $this->session;
} }
/**
* @var boolean $is_aware
*/
private $is_aware = false;
/** /**
* Set is_aware * Set is_aware
* *
@@ -144,10 +155,125 @@ class ValidationParticipant
* @param \User_Adapter $user * @param \User_Adapter $user
* @return ValidationParticipant * @return ValidationParticipant
*/ */
public function setParticipant(\User_Adapter $user) public function setUser(\User_Adapter $user)
{ {
$this->usr_id = $user->get_id(); $this->usr_id = $user->get_id();
return $this; return $this;
} }
public function getUser()
{
return \User_Adapter::getInstance($this->getUsrId(), appbox::get_instance());
}
/**
* Set reminded
*
* @param datetime $reminded
*/
public function setReminded($reminded)
{
$this->reminded = $reminded;
}
/**
* Get reminded
*
* @return datetime
*/
public function getReminded()
{
return $this->reminded;
}
/**
* Get datas
*
* @return Doctrine\Common\Collections\Collection
*/
public function getDatas()
{
return $this->datas;
}
/**
* Set is_confirmed
*
* @param boolean $isConfirmed
*/
public function setIsConfirmed($isConfirmed)
{
$this->is_confirmed = $isConfirmed;
}
/**
* Get is_confirmed
*
* @return boolean
*/
public function getIsConfirmed()
{
return $this->is_confirmed;
}
/**
* Set can_agree
*
* @param boolean $canAgree
*/
public function setCanAgree($canAgree)
{
$this->can_agree = $canAgree;
}
/**
* Get can_agree
*
* @return boolean
*/
public function getCanAgree()
{
return $this->can_agree;
}
/**
* Set can_see_others
*
* @param boolean $canSeeOthers
*/
public function setCanSeeOthers($canSeeOthers)
{
$this->can_see_others = $canSeeOthers;
}
/**
* Get can_see_others
*
* @return boolean
*/
public function getCanSeeOthers()
{
return $this->can_see_others;
}
public function isReleasable()
{
if ($this->getIsConfirmed())
{
return false;
}
foreach ($this->getDatas() as $validation_data)
{
/* @var $validation_data \Entities\ValidationData */
if ($validation_data->getAgreement() === null)
{
return false;
}
}
return true;
}
} }

View File

@@ -265,6 +265,24 @@ class ValidationSession
return $this->participants; return $this->participants;
} }
/**
* Get a participant
*
* @return Entities\ValidationParticipant
*/
public function getParticipant(\User_Adapter $user)
{
foreach ($this->getParticipants() as $participant)
{
if ($participant->getUser()->get_id() == $user->get_id())
{
return $participant;
}
}
throw new \Exception_NotFound('Particpant not found');
}
/** /**
* @var integer $initiator * @var integer $initiator
*/ */
@@ -295,6 +313,11 @@ class ValidationSession
return $this->initiator_id; return $this->initiator_id;
} }
public function isInitiator(\User_Adapter $user)
{
return $this->getInitiatorId() == $user->get_id();
}
public function setInitiator(\User_Adapter $user) public function setInitiator(\User_Adapter $user)
{ {
$this->initiator_id = $user->get_id(); $this->initiator_id = $user->get_id();
@@ -309,4 +332,55 @@ class ValidationSession
} }
} }
public function isFinished()
{
if (is_null($this->getExpires()))
{
return null;
}
$date_obj = new DateTime();
return $date_obj > $this->getExpires();
}
public function getValidationString(\User_Adapter $user)
{
if ($this->isInitiator($user))
{
if ($this->isFinished())
{
return sprintf(
_('Vous aviez envoye cette demande a %d utilisateurs')
, (count($this->getParticipants()) - 1)
);
}
else
{
return sprintf(
_('Vous avez envoye cette demande a %d utilisateurs')
, (count($this->getParticipants()) - 1)
);
}
}
else
{
if ($this->getParticipant($user)->getCanSeeOthers())
{
return sprintf(
_('Processus de validation recu de %s et concernant %d utilisateurs')
, $this->getInitiator()->get_display_name()
, (count($this->getParticipants()) - 1));
}
else
{
return sprintf(
_('Processus de validation recu de %s')
, $this->getInitiator()->get_display_name()
);
}
}
}
} }

View File

@@ -0,0 +1,73 @@
<?php
namespace Repositories;
use Doctrine\ORM\EntityRepository;
/**
* BasketElementRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class BasketElementRepository extends EntityRepository
{
public function findUserElement($element_id, \User_Adapter $user)
{
$dql = 'SELECT e FROM Entities\BasketElement e
JOIN e.basket b
WHERE b.usr_id = :usr_id AND e.id = :element_id';
$params = array(
'usr_id' => $user->get_id(),
'element_id' => $element_id
);
$query = $this->_em->createQuery($dql);
$query->setParameters($params);
return $query->getOneOrNullResult();
}
public function findElementsByRecord(\record_adapter $record)
{
$dql = 'SELECT e FROM Entities\BasketElement e
WHERE e.record_id = :record_id AND e.sbas_id = :sbas_id';
$params = array(
'sbas_id' => $record->get_sbas_id(),
'record_id' => $record_id->get_record_id()
);
$query = $this->_em->createQuery($dql);
$query->setParameters($params);
return $query->getResult();
}
/**
*
* @param type $element_id
* @param \User_Adapter $user
* @return \Entities\BasketELement
*/
public function findUserElement($element_id, \User_Adapter $user)
{
$element = $this->find($element_id);
/* @var $element \Entities\BasketElement */
if (null === $element)
{
throw new \Exception_NotFound(_('Element is not found'));
}
if ($element->getBasket()->getowner()->get_id() != $user->get_id())
{
throw new \Exception_Forbidden(_('You have not access to this basket element'));
}
return $element;
}
}

View File

@@ -39,7 +39,6 @@ class BasketRepository extends EntityRepository
return $query->getResult(); return $query->getResult();
} }
/** /**
* Returns all baskets that are in validation session not expired and * Returns all baskets that are in validation session not expired and
* where a specified user is participant (not owner) * where a specified user is participant (not owner)
@@ -61,11 +60,20 @@ class BasketRepository extends EntityRepository
return $query->getResult(); return $query->getResult();
} }
/**
* Find a basket specified by his basket_id and his owner
*
* @throws \Exception_NotFound
* @throws \Exception_Forbidden
* @param type $basket_id
* @param \User_Adapter $user
* @return \Entities\Basket
*/
public function findUserBasket($basket_id, \User_Adapter $user) public function findUserBasket($basket_id, \User_Adapter $user)
{ {
$basket = $this->find($basket_id); $basket = $this->find($basket_id);
/* @var $basket Entities\Basket */ /* @var $basket \Entities\Basket */
if (null === $basket) if (null === $basket)
{ {
throw new \Exception_NotFound(_('Basket is not found')); throw new \Exception_NotFound(_('Basket is not found'));
@@ -79,4 +87,22 @@ class BasketRepository extends EntityRepository
return $basket; return $basket;
} }
public function findContainingRecord(\record_adapter $record)
{
$dql = 'SELECT b FROM Entities\Basket b
JOIN b.elements e
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()
);
$query = $this->_em->createQuery($dql);
$query->setParameters($params);
return $query->getResult();
}
} }

View File

@@ -11,9 +11,10 @@
/** /**
* *
* @package * @return \Alchemy\Phrasea\Core
* @license http://opensource.org/licenses/gpl-3.0 GPLv3 * @license http://opensource.org/licenses/gpl-3.0 GPLv3
* @link www.phraseanet.com * @link www.phraseanet.com
*/ */
require_once dirname(__FILE__) . '/classes/bootstrap.class.php'; require_once dirname(__FILE__) . '/classes/bootstrap.class.php';
bootstrap::execute();
return bootstrap::execute();

View File

@@ -47,6 +47,7 @@ class ACL implements cache_cacheableInterface
* @var Array * @var Array
*/ */
protected $_rights_records_preview; protected $_rights_records_preview;
/** /**
* *
* @var Array * @var Array
@@ -242,47 +243,88 @@ class ACL implements cache_cacheableInterface
if (count($base_ids) == 0) if (count($base_ids) == 0)
return $this; return $this;
$params = array( $sbas_ids = array();
':usr_id' => $this->user->get_id()
, ':template_id' => $template_user->get_id() foreach ($base_ids as $base_id)
{
$sbas_ids[] = phrasea::sbasFromBas($base_id);
}
$sbas_ids = array_unique($sbas_ids);
$sbas_rights = array('bas_manage', 'bas_modify_struct', 'bas_modif_th', 'bas_chupub');
$sbas_to_acces = array();
$rights_to_give = array();
foreach ($template_user->ACL()->get_granted_sbas() as $databox)
{
$sbas_id = $databox->get_sbas_id();
if (!in_array($sbas_id, $sbas_ids))
continue;
if (!$this->has_access_to_sbas($sbas_id))
{
$sbas_to_acces[] = $sbas_id;
}
foreach ($sbas_rights as $right)
{
if ($template_user->ACL()->has_right_on_sbas($sbas_id, $right))
{
$rights_to_give[$sbas_id][$right] = '1';
}
}
}
$this->give_access_to_sbas($sbas_to_acces);
foreach ($rights_to_give as $sbas_id => $rights)
{
$this->update_rights_to_sbas($sbas_id, $rights);
}
$bas_rights = array('canputinalbum', 'candwnldhd'
, 'candwnldpreview', 'cancmd'
, 'canadmin', 'actif', 'canreport', 'canpush'
, 'canaddrecord', 'canmodifrecord', 'candeleterecord'
, 'chgstatus', 'imgtools'
, 'manage', 'modify_struct'
, 'nowatermark', 'order_master'
); );
$sql = 'INSERT INTO sbasusr $bas_to_acces = array();
(SELECT distinct null as sbasusr_id, sb.sbas_id, :usr_id as usr_id, bas_manage $rights_to_give = array();
, bas_modify_struct,bas_modif_th,bas_chupub
FROM sbasusr sb, bas b
WHERE b.base_id IN (' . implode(', ', $base_ids) . ')
AND b.sbas_id = sb.sbas_id
AND usr_id = :template_id)';
$stmt = $this->appbox->get_connection()->prepare($sql); foreach ($template_user->ACL()->get_granted_base() as $collection)
$stmt->execute($params); {
$stmt->closeCursor(); $base_id = $collection->get_base_id();
$this->delete_data_from_cache(self::CACHE_RIGHTS_SBAS); if (!in_array($base_id, $base_ids))
continue;
$sql = "INSERT INTO basusr if (!$this->has_access_to_base($base_id))
(SELECT null as id, base_id, :usr_id as usr_id, canputinalbum {
, candwnldhd, candwnldsubdef, candwnldpreview, cancmd $bas_to_acces[] = $base_id;
, canadmin, actif, canreport, canpush, now() as creationdate }
, basusr_infousr, mask_and, mask_xor, restrict_dwnld
, month_dwnld_max, remain_dwnld, time_limited, limited_from
, limited_to, canaddrecord, canmodifrecord, candeleterecord
, chgstatus, '0000-00-00 00:00:00' as lastconn, imgtools
, manage, modify_struct, bas_manage, bas_modify_struct
, nowatermark, order_master
FROM basusr
WHERE usr_id =
(SELECT usr_id
FROM usr WHERE usr_id = :template_id)
AND base_id IN (" . implode(', ', $base_ids) . "))";
$stmt = $this->appbox->get_connection()->prepare($sql); foreach ($bas_rights as $right)
$stmt->execute($params); {
$stmt->closeCursor(); if ($template_user->ACL()->has_right_on_base($base_id, $right))
{
$rights_to_give[$base_id][$right] = '1';
}
}
}
$this->inject_rights(); $this->give_access_to_base($bas_to_acces);
$this->delete_data_from_cache(self::CACHE_RIGHTS_BAS);
foreach ($rights_to_give as $sbas_id => $rights)
{
$this->update_rights_to_base($base_id, $rights);
}
$this->user->set_last_template($template_user); $this->user->set_last_template($template_user);

View File

@@ -9,7 +9,7 @@
* file that was distributed with this source code. * file that was distributed with this source code.
*/ */
require_once dirname(__FILE__) . '/../../../vendor/oauth2/lib/OAuth2.inc'; require_once __DIR__ . '/../../../vendor/oauth2/lib/OAuth2.inc';
/** /**
* *

View File

@@ -41,7 +41,7 @@ class API_OAuth2_Autoloader
*/ */
static public function autoload($class) static public function autoload($class)
{ {
if (file_exists($file = dirname(__FILE__) . '/../../../vendor/oauth2/lib/' . str_replace(array('_', "\0"), array('/', ''), $class) . '.inc')) if (file_exists($file = __DIR__ . '/../../../vendor/oauth2/lib/' . str_replace(array('_', "\0"), array('/', ''), $class) . '.inc'))
{ {
require $file; require $file;
} }

View File

@@ -34,6 +34,13 @@ class API_V1_adapter extends API_V1_Abstract
*/ */
protected $appbox; protected $appbox;
/**
* Phraseanet Core
*
* @var \Alchemy\Phrasea\Core
*/
protected $core;
/** /**
* API constructor * API constructor
* *
@@ -41,9 +48,10 @@ class API_V1_adapter extends API_V1_Abstract
* @param appbox $appbox Appbox object * @param appbox $appbox Appbox object
* @return API_V1_adapter * @return API_V1_adapter
*/ */
public function __construct($auth_token, appbox &$appbox) public function __construct($auth_token, appbox &$appbox, Alchemy\Phrasea\Core $core)
{ {
$this->appbox = $appbox; $this->appbox = $appbox;
$this->core = $core;
return $this; return $this;
} }
@@ -332,7 +340,7 @@ class API_V1_adapter extends API_V1_Abstract
$ret = array(); $ret = array();
foreach ($containers as $basket) foreach ($containers as $basket)
{ {
$ret[$basket->get_ssel_id()] = $this->list_basket($basket); $ret[$basket->getId()] = $this->list_basket($basket);
} }
$result->set_datas(array("baskets" => $ret)); $result->set_datas(array("baskets" => $ret));
@@ -607,10 +615,18 @@ class API_V1_adapter extends API_V1_Abstract
if (trim(strip_tags($name)) === '') if (trim(strip_tags($name)) === '')
throw new API_V1_exception_badrequest (); throw new API_V1_exception_badrequest ();
$user = User_Adapter::getInstance($this->appbox->get_session()->get_usr_id(), $this->appbox); $user = $this->core->getAuthenticatedUser();
$basket = basket_adapter::create($this->appbox, $name, $user);
$Basket = new \Entities\Basket();
$Basket->setOwner($user);
$Basket->setName($name);
$em = $this->core->getEntityManager();
$em->persist($Basket);
$em->flush();
$ret = array(); $ret = array();
$ret[$basket->get_ssel_id()] = $this->list_basket($basket); $ret[$Basket->getId()] = $this->list_basket($Basket);
$result->set_datas(array("basket" => $ret)); $result->set_datas(array("basket" => $ret));
return $result; return $result;
@@ -627,12 +643,15 @@ class API_V1_adapter extends API_V1_Abstract
{ {
$result = new API_V1_result($request, $this); $result = new API_V1_result($request, $this);
$basket = basket_adapter::getInstance( $em = $this->core->getEntityManager();
$this->appbox $repository = $em->getRepository('\Entities\Basket');
, $basket_id
, $this->appbox->get_session()->get_usr_id()
); /* @var $repository \Repositories\BasketRepository */
$basket->delete();
$Basket = $repository->findUserBasket($basket_id, $this->core->getAuthenticatedUser());
$em->remove($Basket);
$em->flush();
return $this->search_baskets($request); return $this->search_baskets($request);
} }
@@ -647,21 +666,21 @@ class API_V1_adapter extends API_V1_Abstract
public function get_basket(Request $request, $basket_id) public function get_basket(Request $request, $basket_id)
{ {
$result = new API_V1_result($request, $this); $result = new API_V1_result($request, $this);
try
{
$basket = basket_adapter::getInstance($this->appbox, $basket_id, $this->appbox->get_session()->get_usr_id());
$result->set_datas(
array("basket_elements" =>
array(
$basket->get_ssel_id() => $this->list_basket_content($basket)
)
)
);
}
catch (Exception $e)
{
} $em = $this->core->getEntityManager();
$repository = $em->getRepository('\Entities\Basket');
/* @var $repository \Repositories\BasketRepository */
$Basket = $repository->findUserBasket($basket_id, $this->core->getAuthenticatedUser());
$result->set_datas(
array("basket_elements" =>
array(
$Basket->getId() => $this->list_basket_content($Basket)
)
)
);
return $result; return $result;
} }
@@ -669,16 +688,18 @@ class API_V1_adapter extends API_V1_Abstract
/** /**
* Retrieve elements of one basket * Retrieve elements of one basket
* *
* @param basket_adapter $basket * @param \Entities\Basket $Basket
* @return type * @return type
*/ */
protected function list_basket_content(basket_adapter $basket) protected function list_basket_content(\Entities\Basket $Basket)
{ {
$ret = $this->list_basket($basket); $ret = $this->list_basket($Basket);
$ret['basket_elements'] = array(); $ret['basket_elements'] = array();
foreach ($basket->get_elements() as $basket_element)
foreach ($Basket->getElements() as $basket_element)
{ {
$ret['basket_elements'][$basket_element->get_sselcont_id()] = $this->list_basket_element($basket_element); $ret['basket_elements'][$basket_element->getId()] = $this->list_basket_element($basket_element);
} }
return $ret; return $ret;
@@ -687,23 +708,46 @@ class API_V1_adapter extends API_V1_Abstract
/** /**
* Retrieve detailled informations about a basket element * Retrieve detailled informations about a basket element
* *
* @param basket_element_adapter $basket_element * @param \Entities\BasketElement $basket_element
* @return type * @return type
*/ */
protected function list_basket_element(basket_element_adapter $basket_element) protected function list_basket_element(\Entities\BasketElement $basket_element)
{ {
$ret = array( $ret = array(
'basket_element_id' => $basket_element->get_sselcont_id() 'basket_element_id' => $basket_element->getId()
, 'order' => $basket_element->get_order() , 'order' => $basket_element->getOrd()
, 'record' => $this->list_record($basket_element->get_record()) , 'record' => $this->list_record($basket_element->getRecord())
, 'validation_item' => $basket_element->is_validation_item() , 'validation_item' => !!$basket_element->getValidationDatas()
); );
if ($basket_element->is_validation_item()) if ($basket_element->getValidationDatas())
{ {
$ret['choices'] = $basket_element->get_choices(); $choices = array();
$ret['agreement'] = $basket_element->get_my_agreement(); $agreement = $note = null;
$ret['note'] = $basket_element->get_my_note();
foreach ($basket_element->getValidationDatas() as $validation_datas)
{
$user = $validation_datas->getParticipant()->getUser();
/* @var $validation_datas Entities\ValidationData */
$choices[$user->get_id()] = array(
'usr_id' => $user->get_id(),
'usr_name' => $user->get_display_name(),
'is_mine' => $user->get_id() == $this->core->getAuthenticatedUser()->get_id(),
'agreement' => $validation_datas->getAgreement(),
'updated_on' => $validation_datas->getUpdated()->format(DATE_ATOM),
'note' => $validation_datas->getNote()
);
if($user->get_id() == $this->core->getAuthenticatedUser()->get_id())
{
$agreement = $validation_datas->getAgreement();
$note = $validation_datas->getNote();
}
}
$ret['choices'] = $choices();
$ret['agreement'] = $agreement();
$ret['note'] = $note();
} }
return $ret; return $ret;
@@ -721,12 +765,23 @@ class API_V1_adapter extends API_V1_Abstract
$result = new API_V1_result($request, $this); $result = new API_V1_result($request, $this);
$name = $request->get('name'); $name = $request->get('name');
$basket = basket_adapter::getInstance($this->appbox, $basket_id, $this->appbox->get_session()->get_usr_id());
$basket->set_name($name); $em = $this->core->getEntityManager();
$repository = $em->getRepository('\Entities\Basket');
/* @var $repository \Repositories\BasketRepository */
$Basket = $repository->findUserBasket($basket_id, $this->core->getAuthenticatedUser());
$Basket->setName($name);
$em->merge($Basket);
$em->flush();
$result->set_datas( $result->set_datas(
array( array(
"basket" => "basket" =>
array($basket->get_ssel_id() => $this->list_basket_content($basket) array($Basket->getId() => $this->list_basket_content($Basket)
) )
) )
); );
@@ -746,12 +801,23 @@ class API_V1_adapter extends API_V1_Abstract
$result = new API_V1_result($request, $this); $result = new API_V1_result($request, $this);
$desc = $request->get('description'); $desc = $request->get('description');
$basket = basket_adapter::getInstance($this->appbox, $basket_id, $this->appbox->get_session()->get_usr_id());
$basket->set_description($desc); $em = $this->core->getEntityManager();
$repository = $em->getRepository('\Entities\Basket');
/* @var $repository \Repositories\BasketRepository */
$Basket = $repository->findUserBasket($basket_id, $this->core->getAuthenticatedUser());
$Basket->setDescription($desc);
$em->merge($Basket);
$em->flush();
$result->set_datas( $result->set_datas(
array( array(
"basket" => "basket" =>
array($basket->get_ssel_id() => $this->list_basket_content($basket) array($Basket->getId() => $this->list_basket_content($Basket)
) )
) )
); );
@@ -1032,7 +1098,6 @@ class API_V1_adapter extends API_V1_Abstract
* @todo ajouter une option pour avoir les values serialisées * @todo ajouter une option pour avoir les values serialisées
* dans un cas multi * dans un cas multi
*/ */
return array( return array(
'meta_id' => $field->get_meta_id() 'meta_id' => $field->get_meta_id()
, 'meta_structure_id' => $field->get_meta_struct_id() , 'meta_structure_id' => $field->get_meta_struct_id()
@@ -1044,30 +1109,53 @@ class API_V1_adapter extends API_V1_Abstract
/** /**
* Retirve information about one basket * Retirve information about one basket
* *
* @param basket_adapter $basket * @param \Entities\Basket $basket
* @return array * @return array
*/ */
protected function list_basket(basket_adapter $basket) protected function list_basket(\Entities\Basket $basket)
{ {
$ret = array( $ret = array(
'created_on' => $basket->get_create_date()->format(DATE_ATOM) 'created_on' => $basket->getCreated()->format(DATE_ATOM)
, 'description' => $basket->get_description() , 'description' => $basket->getDescription()
, 'name' => $basket->get_name() , 'name' => $basket->getName()
, 'pusher_usr_id' => $basket->get_pusher() ? $basket->get_pusher()->get_id() : null , 'pusher_usr_id' => $basket->getPusherId()
, 'ssel_id' => $basket->get_ssel_id() , 'ssel_id' => $basket->getId()
, 'updated_on' => $basket->get_update_date()->format(DATE_ATOM) , 'updated_on' => $basket->getUpdated()->format(DATE_ATOM)
, 'unread' => $basket->is_unread() , 'unread' => !$basket->getIsRead()
); );
if ($basket->is_valid()) if ($basket->getValidation())
{ {
$users = array();
foreach ($basket->getValidation()->getParticipants() as $participant)
{
/* @var $participant \Entities\ValidationParticipant */
$user = $participant->getUser();
$users[$user->get_id()] = array(
'usr_id' => $user->get_id(),
'usr_name' => $user->get_display_name(),
'confirmed' => $participant->getIsConfirmed(),
'can_agree' => $participant->getCanAgree(),
'can_see_others' => $participant->getCanSeeOthers()
);
}
$expires_on_atom = $basket->getValidation()->getExpires();
if ($expires_on_atom instanceof DateTime)
$expires_on_atom = $expires_on_atom->format(DATE_ATOM);
$user = \User_Adapter::getInstance($this->appbox->get_session()->get_usr_id(), $this->appbox);
$ret = array_merge( $ret = array_merge(
array( array(
'validation_users' => $basket->get_validating_users() 'validation_users' => $users
, 'validation_end_date' => ($basket->get_validation_end_date() instanceof DateTime ? $basket->get_validation_end_date()->format(DATE_ATOM) : null) , 'validation_end_date' => $expires_on_atom
, 'validation_infos' => $basket->get_validation_infos() , 'validation_infos' => $basket->getValidation()->getValidationString($user)
, 'validation_confirmed' => $basket->is_confirmed() , 'validation_confirmed' => $basket->getValidation()->getParticipant($user)->getIsConfirmed()
, 'mine' => $basket->is_mine() , 'mine' => $basket->getValidation()->isInitiator($user)
) )
, $ret , $ret
); );

View File

@@ -1,6 +1,6 @@
<?php <?php
require_once dirname(__FILE__) . "/../../../../lib/vendor/oauth2/lib/OAuth2.inc"; require_once __DIR__ . "/../../../../lib/vendor/oauth2/lib/OAuth2.inc";
/* /*
* This file is part of Phraseanet * This file is part of Phraseanet
* *

View File

@@ -9,11 +9,11 @@
* file that was distributed with this source code. * file that was distributed with this source code.
*/ */
$new_include_path = dirname(__FILE__) . "/../../../../vendor/" . PATH_SEPARATOR . get_include_path(); $new_include_path = __DIR__ . "/../../../../vendor/" . PATH_SEPARATOR . get_include_path();
set_include_path($new_include_path); set_include_path($new_include_path);
require_once dirname(__FILE__) . "/../../../../vendor/Phlickr/Api.php"; require_once __DIR__ . "/../../../../vendor/Phlickr/Api.php";
require_once dirname(__FILE__) . "/../../../../vendor/Phlickr/Uploader.php"; require_once __DIR__ . "/../../../../vendor/Phlickr/Uploader.php";
/** /**
* *

View File

@@ -9,7 +9,7 @@
* file that was distributed with this source code. * file that was distributed with this source code.
*/ */
require_once dirname(__FILE__) . "/../../../classes/DailymotionWithoutOauth2.php"; require_once __DIR__ . "/../../../classes/DailymotionWithoutOauth2.php";
use \Symfony\Component\HttpFoundation\Request; use \Symfony\Component\HttpFoundation\Request;

View File

@@ -9,13 +9,13 @@
* file that was distributed with this source code. * file that was distributed with this source code.
*/ */
$new_include_path = dirname(__FILE__) . "/../../../vendor/" . PATH_SEPARATOR . get_include_path(); $new_include_path = __DIR__ . "/../../../vendor/" . PATH_SEPARATOR . get_include_path();
set_include_path($new_include_path); set_include_path($new_include_path);
use \Symfony\Component\HttpFoundation\Request; use \Symfony\Component\HttpFoundation\Request;
require_once dirname(__FILE__) . "/../../../vendor/Phlickr/Api.php"; require_once __DIR__ . "/../../../vendor/Phlickr/Api.php";
require_once dirname(__FILE__) . "/../../../vendor/Phlickr/Uploader.php"; require_once __DIR__ . "/../../../vendor/Phlickr/Uploader.php";
/** /**
* *

View File

@@ -9,7 +9,7 @@
* file that was distributed with this source code. * file that was distributed with this source code.
*/ */
$new_include_path = dirname(__FILE__) . '/../../../vendor/gdata/' . PATH_SEPARATOR . get_include_path(); $new_include_path = __DIR__ . '/../../../vendor/gdata/' . PATH_SEPARATOR . get_include_path();
set_include_path($new_include_path); set_include_path($new_include_path);
require_once('Zend/Loader.php'); require_once('Zend/Loader.php');

View File

@@ -15,7 +15,7 @@
* @license http://opensource.org/licenses/gpl-3.0 GPLv3 * @license http://opensource.org/licenses/gpl-3.0 GPLv3
* @link www.phraseanet.com * @link www.phraseanet.com
*/ */
class Bridge_Exception extends Exception class Bridge_Exception extends \Exception
{ {
} }

View File

@@ -15,7 +15,7 @@
* @license http://opensource.org/licenses/gpl-3.0 GPLv3 * @license http://opensource.org/licenses/gpl-3.0 GPLv3
* @link www.phraseanet.com * @link www.phraseanet.com
*/ */
class Bridge_Exception_ApiConnectorNotConfigured extends Bridge_Exception class Bridge_Exception_ApiConnectorNotConfigured extends \Bridge_Exception
{ {
} }

View File

@@ -15,7 +15,7 @@
* @license http://opensource.org/licenses/gpl-3.0 GPLv3 * @license http://opensource.org/licenses/gpl-3.0 GPLv3
* @link www.phraseanet.com * @link www.phraseanet.com
*/ */
class Bridge_Exception_ApiConnectorNotConnected extends Bridge_Exception class Bridge_Exception_ApiConnectorNotConnected extends \Bridge_Exception
{ {
} }

View File

@@ -1,21 +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 Exception
* @license http://opensource.org/licenses/gpl-3.0 GPLv3
* @link www.phraseanet.com
*/
class Exception_Basket_NotFound extends Exception_NotFound
{
}

View File

@@ -0,0 +1,3 @@
<?php
require_once __DIR__ . '/../vendor/PHPShortener/phpshortener.class.php';

View File

@@ -179,7 +179,7 @@ class Setup_Upgrade
*/ */
public static function get_lock_file() public static function get_lock_file()
{ {
return dirname(__FILE__) . '/../../../tmp/upgrade.lock'; return __DIR__ . '/../../../tmp/upgrade.lock';
} }
/** /**

View File

@@ -871,6 +871,11 @@ class User_Adapter implements User_Interface, cache_cacheableInterface
return $this->is_template; return $this->is_template;
} }
public function get_template_owner()
{
return $this->template_owner;
}
public static function get_usr_id_from_email($email) public static function get_usr_id_from_email($email)
{ {
if(is_null($email)) if(is_null($email))
@@ -1371,7 +1376,7 @@ class User_Adapter implements User_Interface, cache_cacheableInterface
{ {
$lngs = array(); $lngs = array();
$path = dirname(__FILE__) . "/../../../locale"; $path = __DIR__ . "/../../../locale";
if ($hdir = opendir($path)) if ($hdir = opendir($path))
{ {
while (false !== ($file = readdir($hdir))) while (false !== ($file = readdir($hdir)))
@@ -1393,95 +1398,6 @@ class User_Adapter implements User_Interface, cache_cacheableInterface
return $lngs; return $lngs;
} }
public static function detectLanguage(registryInterface $registry, $setLng = null)
{
$avLanguages = self::avLanguages();
$sel = $askLng = $askLocale = '';
if ($setLng !== null)
{
$askLng = substr($setLng, 0, 2);
$askLocale = $setLng;
}
elseif (Session_Handler::isset_cookie('locale'))
{
$askLng = substr(Session_Handler::get_cookie('locale'), 0, 2);
$askLocale = Session_Handler::get_cookie('locale');
}
elseif (strlen($registry->get('GV_default_lng')) > 2)
{
$askLng = substr($registry->get('GV_default_lng'), 0, 2);
$askLocale = $registry->get('GV_default_lng');
}
if ($askLng != '' && isset($avLanguages[$askLng]) && isset($avLanguages[$askLng][$askLocale]))
{
$avLanguages[$askLng][$askLocale]['selected'] = true;
$sel = $askLocale;
}
if ($sel === '' && isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
{
$languages = explode(';', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
$found = false;
foreach ($languages as $language)
{
$language = explode(',', strtolower($language));
if (count($language) != 2)
continue;
foreach ($language as $lang)
{
if (strpos($lang, '-') == 2 && strlen($lang) == 5)
{
$l = explode('-', $lang);
$l[0] = strtolower($l[0]);
$l[1] = strtoupper($l[1]);
if ($sel != '')
{
$found = true;
break;
}
$lang = implode('_', $l);
if (isset($avLanguages[$l[0]]))
{
if (!isset($avLanguages[$l[0]][$lang]))
{
$lang = end(array_keys($avLanguages[$l[0]]));
}
$avLanguages[$l[0]][$lang]['selected'] = true;
$sel = $lang;
$found = true;
break;
}
}
}
if ($found)
break;
}
if (!$found && array_key_exists(substr($registry->get('GV_default_lng'), 0, 2), $avLanguages))
{
$avLanguages[substr($registry->get('GV_default_lng'), 0, 2)][$registry->get('GV_default_lng')]['selected'] = true;
$sel = $registry->get('GV_default_lng');
}
}
if ($sel == '')
{
$key = end(array_keys($avLanguages));
$lang = end(array_keys($avLanguages[$key]));
$avLanguages[$key][$lang]['selected'] = true;
$sel = $lang;
}
Session_Handler::set_locale($sel);
$sel = explode('_', $sel);
return $avLanguages;
}
public static function get_wrong_email_users(appbox $appbox) public static function get_wrong_email_users(appbox $appbox)
{ {

View File

@@ -88,6 +88,11 @@ class User_Query implements User_QueryInterface
* @var boolean * @var boolean
*/ */
protected $include_templates = false; protected $include_templates = false;
/**
*
* @var boolean
*/
protected $only_templates = false;
/** /**
* *
* @var Array * @var Array
@@ -123,10 +128,10 @@ class User_Query implements User_QueryInterface
const SORT_FIRSTNAME= 'usr_prenom'; const SORT_FIRSTNAME= 'usr_prenom';
const SORT_LASTNAME= 'usr_nom'; const SORT_LASTNAME= 'usr_nom';
const SORT_COMPANY = 'societe'; const SORT_COMPANY = 'societe';
const SORT_LOGIN = 'login'; const SORT_LOGIN = 'usr_login';
const SORT_EMAIL = 'usr_mail'; const SORT_EMAIL = 'usr_mail';
const SORT_ID = 'usr_id'; const SORT_ID = 'usr_id';
const SORT_CREATIONDATE = 'creationdate'; const SORT_CREATIONDATE = 'usr_creationdate';
const SORT_COUNTRY = 'pays'; const SORT_COUNTRY = 'pays';
const SORT_LASTMODEL = 'lastModel'; const SORT_LASTMODEL = 'lastModel';
@@ -191,18 +196,22 @@ class User_Query implements User_QueryInterface
$sql .= ' AND usr_login NOT LIKE "(#deleted_%" '; $sql .= ' AND usr_login NOT LIKE "(#deleted_%" ';
if ($this->include_invite) if (!$this->include_invite)
{ {
$sql .= ' AND usr.invite=0 '; $sql .= ' AND usr.invite=0 ';
} }
if ($this->include_templates === false) if ($this->only_templates === true)
{
$sql .= ' AND model_of = ' . $session->get_usr_id();
}
elseif ($this->include_templates === false)
{ {
$sql .= ' AND model_of=0'; $sql .= ' AND model_of=0';
} }
else else
{ {
$sql .= ' AND (model_of=0 OR model_of= ' . $session->get_usr_id() . ' ) '; $sql .= ' AND (model_of=0 OR model_of = ' . $session->get_usr_id() . ' ) ';
} }
$baslist = array(); $baslist = array();
@@ -355,6 +364,17 @@ class User_Query implements User_QueryInterface
return $this; return $this;
} }
/**
*
* @param boolean $boolean
* @return User_Query
*/
public function only_templates($boolean)
{
$this->only_templates = !!$boolean;
return $this;
}
/** /**
* *
@@ -390,6 +410,8 @@ class User_Query implements User_QueryInterface
case self::SORT_COMPANY: case self::SORT_COMPANY:
case self::SORT_LOGIN: case self::SORT_LOGIN:
case self::SORT_EMAIL: case self::SORT_EMAIL:
$sorter[$k] = ' usr.`' . $sort . '` COLLATE utf8_unicode_ci ';
break;
case self::SORT_ID: case self::SORT_ID:
case self::SORT_CREATIONDATE: case self::SORT_CREATIONDATE:
case self::SORT_COUNTRY: case self::SORT_COUNTRY:
@@ -410,7 +432,7 @@ class User_Query implements User_QueryInterface
$sorter[$k] .= ' ASC '; $sorter[$k] .= ' ASC ';
break; break;
case self::ORD_DESC: case self::ORD_DESC:
$sorter[$k] .= ' ASC '; $sorter[$k] .= ' DESC ';
break; break;
} }
} }

View File

@@ -74,7 +74,7 @@ class appbox extends base
$this->registry = $registry; $this->registry = $registry;
$this->session = Session_Handler::getInstance($this); $this->session = Session_Handler::getInstance($this);
require dirname(__FILE__) . '/../../config/connexion.inc'; require __DIR__ . '/../../config/connexion.inc';
$this->host = $hostname; $this->host = $hostname;
$this->port = $port; $this->port = $port;
@@ -371,15 +371,17 @@ class appbox extends base
protected function post_upgrade(Setup_Upgrade &$upgrader) protected function post_upgrade(Setup_Upgrade &$upgrader)
{ {
$Core = bootstrap::getCore();
$upgrader->add_steps(1 + count($this->get_databoxes())); $upgrader->add_steps(1 + count($this->get_databoxes()));
$this->apply_patches($this->get_version(), GV_version, true, $upgrader); $this->apply_patches($this->get_version(), $Core->getVersion()->getNumber(), true, $upgrader);
$this->setVersion(GV_version); $this->setVersion($Core->getVersion()->getNumber());
$upgrader->add_steps_complete(1); $upgrader->add_steps_complete(1);
foreach ($this->get_databoxes() as $databox) foreach ($this->get_databoxes() as $databox)
{ {
$databox->apply_patches($databox->get_version(), GV_version, true, $upgrader); $databox->apply_patches($databox->get_version(), $Core->getVersion()->getNumber(), true, $upgrader);
$databox->setVersion(GV_version); $databox->setVersion($Core->getVersion()->getNumber());
$upgrader->add_steps_complete(1); $upgrader->add_steps_complete(1);
} }
@@ -407,7 +409,7 @@ class appbox extends base
{ {
$credentials['dbname'] = $dbname; $credentials['dbname'] = $dbname;
} }
$connexion = dirname(__FILE__) . "/../../config/connexion.inc"; $connexion = __DIR__ . "/../../config/connexion.inc";
if (is_file($connexion)) if (is_file($connexion))
unlink($connexion); unlink($connexion);
@@ -420,7 +422,7 @@ class appbox extends base
} }
if (!file_put_contents($connexion, $connexionINI, FILE_APPEND) !== false) if (!file_put_contents($connexion, $connexionINI, FILE_APPEND) !== false)
throw new Exception(sprintf(_('Impossible d\'ecrire dans le dossier %s'), dirname(dirname(__FILE__)) . "/config/")); throw new Exception(sprintf(_('Impossible d\'ecrire dans le dossier %s'), dirname(__DIR__) . "/config/"));
if (function_exists('chmod')) if (function_exists('chmod'))
chmod($connexion, 0700); chmod($connexion, 0700);
@@ -543,7 +545,7 @@ class appbox extends base
public static function list_databox_templates() public static function list_databox_templates()
{ {
$files = array(); $files = array();
$dir = new DirectoryIterator(dirname(__FILE__) . '/../conf.d/data_templates/'); $dir = new DirectoryIterator(__DIR__ . '/../conf.d/data_templates/');
foreach ($dir as $fileinfo) foreach ($dir as $fileinfo)
{ {
if ($fileinfo->isFile()) if ($fileinfo->isFile())

View File

@@ -257,9 +257,10 @@ abstract class base implements cache_cacheableInterface
public function upgradeavailable() public function upgradeavailable()
{ {
$Core = bootstrap::getCore();
if ($this->get_version()) if ($this->get_version())
return version_compare(GV_version, $this->get_version(), '>'); return version_compare($Core->getVersion()->getNumber(), $this->get_version(), '>');
else else
return true; return true;
@@ -267,7 +268,7 @@ abstract class base implements cache_cacheableInterface
protected function upgradeDb($apply_patches, Setup_Upgrade &$upgrader) protected function upgradeDb($apply_patches, Setup_Upgrade &$upgrader)
{ {
require_once dirname(__FILE__) . '/../version.inc'; require_once __DIR__ . '/../version.inc';
$recommends = array(); $recommends = array();
@@ -338,10 +339,12 @@ abstract class base implements cache_cacheableInterface
} }
$current_version = $this->get_version(); $current_version = $this->get_version();
$Core = bootstrap::getCore();
$upgrader->set_current_message(sprintf(_('Applying patches on %s'), $this->get_dbname())); $upgrader->set_current_message(sprintf(_('Applying patches on %s'), $this->get_dbname()));
if ($apply_patches) if ($apply_patches)
{ {
$this->apply_patches($current_version, GV_version, false, $upgrader); $this->apply_patches($current_version, $Core->getVersion()->getNumber(), false, $upgrader);
} }
$upgrader->add_steps_complete(1); $upgrader->add_steps_complete(1);
@@ -390,7 +393,7 @@ abstract class base implements cache_cacheableInterface
return $this; return $this;
$structure = simplexml_load_file(dirname(__FILE__) . "/../../lib/conf.d/bases_structure.xml"); $structure = simplexml_load_file(__DIR__ . "/../../lib/conf.d/bases_structure.xml");
if (!$structure) if (!$structure)
throw new Exception('Unable to load schema'); throw new Exception('Unable to load schema');
@@ -418,8 +421,8 @@ abstract class base implements cache_cacheableInterface
$this->createTable($table); $this->createTable($table);
} }
if (defined('GV_version')) $Core = bootstrap::getCore();
$this->setVersion(GV_version); $this->setVersion($Core->getVersion()->getNumber());
return $this; return $this;
} }

View File

@@ -518,7 +518,6 @@ class basket_element_adapter implements cache_cacheableInterface
$note = strip_tags($note); $note = strip_tags($note);
if (!$this->validate_id) if (!$this->validate_id)
return false; return false;
$appbox = appbox::get_instance(); $appbox = appbox::get_instance();
@@ -596,7 +595,9 @@ class basket_element_adapter implements cache_cacheableInterface
foreach ($this->choices as $key => $value) foreach ($this->choices as $key => $value)
{ {
if (trim($value['note']) != '') if (trim($value['note']) != '')
{
$n++; $n++;
}
} }
return $n; return $n;

View File

@@ -1,5 +1,5 @@
<?php <?php
require_once dirname(__FILE__) . '/../../../../vendor/moov/relocator.class.php'; require_once __DIR__ . '/../../../../vendor/moov/relocator.class.php';
/* /*
* This file is part of Phraseanet * This file is part of Phraseanet
* *

View File

@@ -134,9 +134,9 @@ class connection
} }
else else
{ {
if (!is_file(dirname(__FILE__) . '/../../config/connexion.inc')) if (!is_file(__DIR__ . '/../../config/connexion.inc'))
throw new Exception('Unable to load config file'); throw new Exception('Unable to load config file');
require (dirname(__FILE__) . '/../../config/connexion.inc'); require (__DIR__ . '/../../config/connexion.inc');
} }
if (isset($connection_params[$name])) if (isset($connection_params[$name]))
{ {

View File

@@ -88,7 +88,7 @@ class connection_pdo extends connection_abstract implements connection_interface
*/ */
protected function log($message) protected function log($message)
{ {
file_put_contents(dirname(__FILE__) . '/../../../logs/sql_log.log', $message . "\n", FILE_APPEND); file_put_contents(__DIR__ . '/../../../logs/sql_log.log', $message . "\n", FILE_APPEND);
return $this; return $this;
} }

View File

@@ -450,7 +450,6 @@ class databox extends base
$stmt->closeCursor(); $stmt->closeCursor();
if ($row) if ($row)
return self::get_instance((int) $row['sbas_id']); return self::get_instance((int) $row['sbas_id']);
try try
@@ -575,7 +574,6 @@ class databox extends base
public function get_meta_structure() public function get_meta_structure()
{ {
if ($this->meta_struct) if ($this->meta_struct)
return $this->meta_struct; return $this->meta_struct;
try try
@@ -698,7 +696,6 @@ class databox extends base
} }
} }
if ($n > $limit) if ($n > $limit)
return true; return true;
return false; return false;
@@ -725,7 +722,7 @@ class databox extends base
public static function get_available_metadatas() public static function get_available_metadatas()
{ {
$available_fields = array(); $available_fields = array();
$dir = dirname(__FILE__) . '/metadata/description/'; $dir = __DIR__ . '/metadata/description/';
$registry = registry::get_instance(); $registry = registry::get_instance();
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir), RecursiveIteratorIterator::LEAVES_ONLY) as $file) foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir), RecursiveIteratorIterator::LEAVES_ONLY) as $file)
{ {
@@ -960,7 +957,14 @@ class databox extends base
$this->saveStructure($dom_struct); $this->saveStructure($dom_struct);
$type = isset($field['type']) ? $field['type'] : 'string'; $type = isset($field['type']) ? $field['type'] : 'string';
$type = in_array($type, array(databox_field::TYPE_DATE, databox_field::TYPE_NUMBER, databox_field::TYPE_TEXT)) ? $type : databox_field::TYPE_TEXT; $type = in_array($type
, array(
databox_field::TYPE_DATE
, databox_field::TYPE_NUMBER
, databox_field::TYPE_STRING
, databox_field::TYPE_TEXT
)
) ? $type : databox_field::TYPE_STRING;
$meta_struct_field = databox_field::create($this, $fname); $meta_struct_field = databox_field::create($this, $fname);
$meta_struct_field $meta_struct_field
@@ -968,7 +972,7 @@ class databox extends base
->set_indexable(isset($field['index']) ? $field['index'] : '1') ->set_indexable(isset($field['index']) ? $field['index'] : '1')
->set_type($type) ->set_type($type)
->set_tbranch(isset($field['tbranch']) ? $field['tbranch'] : '') ->set_tbranch(isset($field['tbranch']) ? $field['tbranch'] : '')
->set_thumbtitle(isset($field['thumbtitle']) ? $field['thumbtitle'] : '0') ->set_thumbtitle(isset($field['thumbtitle']) ? $field['thumbtitle'] : (isset($field['thumbTitle']) ? $field['thumbTitle'] : '0'))
->set_multi(isset($field['multi']) ? $field['multi'] : 0) ->set_multi(isset($field['multi']) ? $field['multi'] : 0)
->set_report(isset($field['report']) ? $field['report'] : '1') ->set_report(isset($field['report']) ? $field['report'] : '1')
->save(); ->save();
@@ -1213,7 +1217,6 @@ class databox extends base
public function get_structure() public function get_structure()
{ {
if ($this->structure) if ($this->structure)
return $this->structure; return $this->structure;
$this->structure = $this->retrieve_structure(); $this->structure = $this->retrieve_structure();
@@ -1254,7 +1257,6 @@ class databox extends base
public function get_cterms() public function get_cterms()
{ {
if ($this->cterms) if ($this->cterms)
return $this->cterms; return $this->cterms;
$sql = "SELECT value FROM pref WHERE prop='cterms'"; $sql = "SELECT value FROM pref WHERE prop='cterms'";
@@ -1421,7 +1423,6 @@ class databox extends base
public function get_cgus() public function get_cgus()
{ {
if ($this->cgus) if ($this->cgus)
return $this->cgus; return $this->cgus;
$this->load_cgus(); $this->load_cgus();

View File

@@ -124,6 +124,7 @@ class databox_field implements cache_cacheableInterface
const TYPE_TEXT = "text"; const TYPE_TEXT = "text";
const TYPE_DATE = "date"; const TYPE_DATE = "date";
const TYPE_STRING = "string";
const TYPE_NUMBER = "number"; const TYPE_NUMBER = "number";
/** /**
@@ -176,7 +177,7 @@ class databox_field implements cache_cacheableInterface
$this->required = !!$row['required']; $this->required = !!$row['required'];
$this->multi = !!$row['multi']; $this->multi = !!$row['multi'];
$this->report = !!$row['report']; $this->report = !!$row['report'];
$this->type = $row['type']; $this->type = $row['type'] ?: self::TYPE_STRING;
$this->tbranch = $row['tbranch']; $this->tbranch = $row['tbranch'];
if ($row['dces_element']) if ($row['dces_element'])
{ {

View File

@@ -67,17 +67,17 @@ class eventsmanager_broker
{ {
$iterators_pool = array(); $iterators_pool = array();
$root = dirname(__FILE__) . '/../../'; $root = __DIR__ . '/../../';
if ($type == 'event') if ($type == 'event')
{ {
$iterators_pool['event'][] = new DirectoryIterator(dirname(__FILE__) . '/event/'); $iterators_pool['event'][] = new DirectoryIterator(__DIR__ . '/event/');
if (file_exists(dirname(__FILE__) . '/event/')) if (file_exists(__DIR__ . '/event/'))
$iterators_pool['event'][] = new DirectoryIterator(dirname(__FILE__) . '/event/'); $iterators_pool['event'][] = new DirectoryIterator(__DIR__ . '/event/');
} }
if ($type == 'notify') if ($type == 'notify')
{ {
$iterators_pool['notify'][] = new DirectoryIterator(dirname(__FILE__) . '/notify/'); $iterators_pool['notify'][] = new DirectoryIterator(__DIR__ . '/notify/');
} }
$ret = array(); $ret = array();

View File

@@ -37,7 +37,7 @@ class module_console_aboutAuthors extends Command
public function execute(InputInterface $input, OutputInterface $output) public function execute(InputInterface $input, OutputInterface $output)
{ {
$output->writeln(file_get_contents(dirname(__FILE__) . '/../../../../AUTHORS')); $output->writeln(file_get_contents(__DIR__ . '/../../../../AUTHORS'));
return; return;
} }

View File

@@ -37,7 +37,7 @@ class module_console_aboutLicense extends Command
public function execute(InputInterface $input, OutputInterface $output) public function execute(InputInterface $input, OutputInterface $output)
{ {
$output->writeln(file_get_contents(dirname(__FILE__) . '/../../../../LICENSE')); $output->writeln(file_get_contents(__DIR__ . '/../../../../LICENSE'));
return; return;
} }

View File

@@ -45,7 +45,7 @@ class module_console_schedulerStart extends Command
throw new RuntimeException('Phraseanet is not set up'); throw new RuntimeException('Phraseanet is not set up');
} }
require_once dirname(__FILE__) . '/../../../../lib/bootstrap.php'; require_once __DIR__ . '/../../../../lib/bootstrap.php';
$scheduler = new task_Scheduler(); $scheduler = new task_Scheduler();
$scheduler->run($output, true); $scheduler->run($output, true);

View File

@@ -40,7 +40,7 @@ class module_console_schedulerState extends Command
throw new RuntimeException('Phraseanet is not set up'); throw new RuntimeException('Phraseanet is not set up');
} }
require_once dirname(__FILE__) . '/../../../../lib/bootstrap.php'; require_once __DIR__ . '/../../../../lib/bootstrap.php';
$appbox = appbox::get_instance(); $appbox = appbox::get_instance();
$task_manager = new task_manager($appbox); $task_manager = new task_manager($appbox);

View File

@@ -40,7 +40,7 @@ class module_console_schedulerStop extends Command
throw new RuntimeException('Phraseanet is not set up'); throw new RuntimeException('Phraseanet is not set up');
} }
require_once dirname(__FILE__) . '/../../../../lib/bootstrap.php'; require_once __DIR__ . '/../../../../lib/bootstrap.php';
$appbox = appbox::get_instance(); $appbox = appbox::get_instance();
$task_manager = new task_manager($appbox); $task_manager = new task_manager($appbox);

View File

@@ -31,7 +31,7 @@ class module_console_systemBackupDB extends Command
$dir = sprintf( $dir = sprintf(
'%s/config/' '%s/config/'
, dirname(dirname(dirname(dirname(dirname(__FILE__))))) , dirname(dirname(dirname(dirname(__DIR__))))
); );
$this->setDescription('Backup Phraseanet Databases'); $this->setDescription('Backup Phraseanet Databases');
@@ -48,7 +48,7 @@ class module_console_systemBackupDB extends Command
throw new RuntimeException('Phraseanet is not set up'); throw new RuntimeException('Phraseanet is not set up');
} }
require_once dirname(__FILE__) . '/../../../../lib/bootstrap.php'; require_once __DIR__ . '/../../../../lib/bootstrap.php';
$output->write('Phraseanet is going to be backup...', true); $output->write('Phraseanet is going to be backup...', true);

View File

@@ -44,8 +44,8 @@ class module_console_systemClearCache extends Command
->exclude('.git') ->exclude('.git')
->exclude('.svn') ->exclude('.svn')
->in(array( ->in(array(
dirname(__FILE__) . '/../../../../tmp/cache_minify/' __DIR__ . '/../../../../tmp/cache_minify/'
, dirname(__FILE__) . '/../../../../tmp/cache_twig/' , __DIR__ . '/../../../../tmp/cache_twig/'
)) ))
; ;
$count = 1; $count = 1;
@@ -59,8 +59,8 @@ class module_console_systemClearCache extends Command
$finder $finder
->directories() ->directories()
->in(array( ->in(array(
dirname(__FILE__) . '/../../../../tmp/cache_minify' __DIR__ . '/../../../../tmp/cache_minify'
, dirname(__FILE__) . '/../../../../tmp/cache_twig' , __DIR__ . '/../../../../tmp/cache_twig'
)) ))
->exclude('.git') ->exclude('.git')
->exclude('.svn') ->exclude('.svn')

View File

@@ -36,16 +36,16 @@ class module_console_systemTemplateGenerator extends Command
public function execute(InputInterface $input, OutputInterface $output) public function execute(InputInterface $input, OutputInterface $output)
{ {
require_once dirname(__FILE__) . '/../../../../lib/vendor/Twig/lib/Twig/Autoloader.php'; require_once __DIR__ . '/../../../../lib/vendor/Twig/lib/Twig/Autoloader.php';
require_once dirname(__FILE__) . '/../../../../lib/vendor/Twig-extensions/lib/Twig/Extensions/Autoloader.php'; require_once __DIR__ . '/../../../../lib/vendor/Twig-extensions/lib/Twig/Extensions/Autoloader.php';
Twig_Autoloader::register(); Twig_Autoloader::register();
Twig_Extensions_Autoloader::register(); Twig_Extensions_Autoloader::register();
$tplDir = dirname(__FILE__) . '/../../../../templates/'; $tplDir = __DIR__ . '/../../../../templates/';
$tmpDir = dirname(__FILE__) . '/../../../../tmp/cache_twig/'; $tmpDir = __DIR__ . '/../../../../tmp/cache_twig/';
$loader = new Twig_Loader_Filesystem($tplDir); $loader = new Twig_Loader_Filesystem($tplDir);
$twig = new Twig_Environment($loader, array( $twig = new Twig_Environment($loader, array(

View File

@@ -39,9 +39,9 @@ class module_console_systemUpgrade extends Command
if (!setup::is_installed()) if (!setup::is_installed())
{ {
if (file_exists(dirname(__FILE__) . "/../../../../config/connexion.inc") if (file_exists(__DIR__ . "/../../../../config/connexion.inc")
&& !file_exists(dirname(__FILE__) . "/../../../../config/config.inc") && !file_exists(__DIR__ . "/../../../../config/config.inc")
&& file_exists(dirname(__FILE__) . "/../../../../config/_GV.php")) && file_exists(__DIR__ . "/../../../../config/_GV.php"))
{ {
$output->writeln('This version of Phraseanet requires a config/config.inc'); $output->writeln('This version of Phraseanet requires a config/config.inc');
@@ -76,7 +76,7 @@ class module_console_systemUpgrade extends Command
} }
require_once dirname(__FILE__) . '/../../../../lib/bootstrap.php'; require_once __DIR__ . '/../../../../lib/bootstrap.php';
$output->write('Phraseanet is going to be upgraded', true); $output->write('Phraseanet is going to be upgraded', true);
$dialog = $this->getHelperSet()->get('dialog'); $dialog = $this->getHelperSet()->get('dialog');

View File

@@ -42,7 +42,7 @@ class module_console_tasklist extends Command
throw new RuntimeException('Phraseanet is not set up'); throw new RuntimeException('Phraseanet is not set up');
} }
require_once dirname(__FILE__) . '/../../../../lib/bootstrap.php'; require_once __DIR__ . '/../../../../lib/bootstrap.php';
$appbox = appbox::get_instance(); $appbox = appbox::get_instance();
$task_manager = new task_manager($appbox); $task_manager = new task_manager($appbox);

View File

@@ -50,7 +50,7 @@ class module_console_taskrun extends Command
throw new RuntimeException('Phraseanet is not set up'); throw new RuntimeException('Phraseanet is not set up');
} }
require_once dirname(__FILE__) . '/../../../../lib/bootstrap.php'; require_once __DIR__ . '/../../../../lib/bootstrap.php';
$task_id = (int) $input->getArgument('task_id'); $task_id = (int) $input->getArgument('task_id');

View File

@@ -54,9 +54,9 @@ class patch_320aa implements patchInterface
function apply(base &$appbox) function apply(base &$appbox)
{ {
if(is_file(dirname(__FILE__) . '/../../../config/_GV.php')) if(is_file(__DIR__ . '/../../../config/_GV.php'))
require dirname(__FILE__) . '/../../../config/_GV.php'; require __DIR__ . '/../../../config/_GV.php';
require dirname(__FILE__) . '/../../../lib/conf.d/_GV_template.inc'; require __DIR__ . '/../../../lib/conf.d/_GV_template.inc';
define('GV_STATIC_URL', ''); define('GV_STATIC_URL', '');
define('GV_sphinx', false); define('GV_sphinx', false);

View File

@@ -105,7 +105,7 @@ class phrasea
public static function start() public static function start()
{ {
require (dirname(__FILE__) . '/../../config/connexion.inc'); require (__DIR__ . '/../../config/connexion.inc');
if (!extension_loaded('phrasea2')) if (!extension_loaded('phrasea2'))
printf("Missing Extension php-phrasea"); printf("Missing Extension php-phrasea");
@@ -283,7 +283,7 @@ class phrasea
putenv('LANGUAGE=' . $locale . '.' . $codeset); putenv('LANGUAGE=' . $locale . '.' . $codeset);
bind_textdomain_codeset($textdomain, 'UTF-8'); bind_textdomain_codeset($textdomain, 'UTF-8');
bindtextdomain($textdomain, dirname(__FILE__) . '/../../locale/'); bindtextdomain($textdomain, __DIR__ . '/../../locale/');
setlocale(LC_ALL setlocale(LC_ALL
, $locale . '.UTF-8' , $locale . '.UTF-8'
, $locale . '.UTF8' , $locale . '.UTF8'
@@ -497,7 +497,7 @@ class phrasea
else else
{ {
$request->set_code($code); $request->set_code($code);
include(dirname(__FILE__) . '/../../www/include/error.php'); include(__DIR__ . '/../../www/include/error.php');
} }
die(); die();
break; break;

View File

@@ -479,23 +479,6 @@ class record_adapter implements record_Interface, cache_cacheableInterface
*/ */
public function move_to_collection(collection &$collection, appbox &$appbox) public function move_to_collection(collection &$collection, appbox &$appbox)
{ {
$sql = 'UPDATE sselcont
SET base_id = :base_id
WHERE record_id = :record_id
AND base_id IN (SELECT base_id FROM bas WHERE sbas_id = :sbas_id)';
$params = array(
':base_id' => $collection->get_base_id(),
':record_id' => $this->get_record_id(),
':sbas_id' => $this->get_sbas_id()
);
$stmt = $appbox->get_connection()->prepare($sql);
$stmt->execute($params);
$stmt->closeCursor();
basket_adapter::revoke_baskets_record($this, $appbox);
$sql = "UPDATE record SET coll_id = :coll_id WHERE record_id =:record_id"; $sql = "UPDATE record SET coll_id = :coll_id WHERE record_id =:record_id";
$params = array( $params = array(
@@ -1047,7 +1030,6 @@ class record_adapter implements record_Interface, cache_cacheableInterface
$base_url = ''; $base_url = '';
$original_file = $subdef_def = false; $original_file = $subdef_def = false;
$subdefs = $this->get_databox()->get_subdef_structure(); $subdefs = $this->get_databox()->get_subdef_structure();
foreach ($subdefs as $type => $datas) foreach ($subdefs as $type => $datas)
@@ -1068,7 +1050,7 @@ class record_adapter implements record_Interface, cache_cacheableInterface
try try
{ {
$value = $this->get_subdef($name); $value = $this->get_subdef($name);
$original_file = p4string::addEndSlash($value['path']) . $value['file']; $original_file = p4string::addEndSlash($value->get_path()) . $value->get_file();
unlink($original_file); unlink($original_file);
} }
catch (Exception $e) catch (Exception $e)
@@ -1083,7 +1065,9 @@ class record_adapter implements record_Interface, cache_cacheableInterface
if (trim($subdef_def->get_baseurl()) !== '') if (trim($subdef_def->get_baseurl()) !== '')
{ {
$base_url = str_replace( $base_url = str_replace(
array((string) $subdef_def->get_path(), $newfilename), array((string) $subdef_def->get_baseurl(), ''), $path_file_dest array((string) $subdef_def->get_path(), $newfilename)
, array((string) $subdef_def->get_baseurl(), '')
, $path_file_dest
); );
} }
@@ -1093,7 +1077,12 @@ class record_adapter implements record_Interface, cache_cacheableInterface
$sql = 'DELETE FROM subdef WHERE record_id= :record_id AND name=:name'; $sql = 'DELETE FROM subdef WHERE record_id= :record_id AND name=:name';
$stmt = $connbas->prepare($sql); $stmt = $connbas->prepare($sql);
$stmt->execute(array(':record_id' => $this->record_id, ':name' => $name)); $stmt->execute(
array(
':record_id' => $this->record_id
, ':name' => $name
)
);
$registry = registry::get_instance(); $registry = registry::get_instance();
@@ -1128,7 +1117,7 @@ class record_adapter implements record_Interface, cache_cacheableInterface
$sql = 'UPDATE record SET moddate=NOW() WHERE record_id=:record_id'; $sql = 'UPDATE record SET moddate=NOW() WHERE record_id=:record_id';
$stmt = $connbas->prepare($sql); $stmt = $connbas->prepare($sql);
$stmt->bindParam(':record_id', $this->get_record_id()); $stmt->execute(array(':record_id' => $this->get_record_id()));
$stmt->execute(); $stmt->execute();
$this->delete_data_from_cache(self::CACHE_SUBDEFS); $this->delete_data_from_cache(self::CACHE_SUBDEFS);
@@ -1714,21 +1703,17 @@ class record_adapter implements record_Interface, cache_cacheableInterface
$stmt->execute(array(':record_id' => $this->get_record_id())); $stmt->execute(array(':record_id' => $this->get_record_id()));
$stmt->closeCursor(); $stmt->closeCursor();
$sql = 'SELECT s.ssel_id, c.sselcont_id, s.usr_id $em = bootstrap::getCore()->getEntityManager();
FROM sselcont c, ssel s
WHERE c.base_id = :base_id AND c.record_id = :record_id
AND s.ssel_id = c.ssel_id';
$stmt = $conn->prepare($sql);
$stmt->execute(array(':record_id' => $this->get_record_id(), ':base_id' => $this->get_base_id()));
$rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($rs as $row) $repository = $em->getRepository('\Entities\BasketElement');
/* @var $repository \Repositories\BasketElementRepository */
foreach($repository->findElementsByRecord($this) as $basket_element)
{ {
$basket = basket_adapter::getInstance($appbox, $row['ssel_id'], $row['usr_id']); $em->remove($basket_element);
$basket->remove_from_ssel($row['sselcont_id']);
} }
$stmt->closeCursor(); $em->flush();
foreach ($ftodel as $f) foreach ($ftodel as $f)
@unlink($f); @unlink($f);
@@ -1935,37 +1920,13 @@ class record_adapter implements record_Interface, cache_cacheableInterface
*/ */
public function get_container_baskets() public function get_container_baskets()
{ {
if ($this->container_basket) $Core = bootstrap::getCore();
return $this->container_basket; $em = $Core->getEntityManager();
$appbox = appbox::get_instance(); $repo = $em->getRepository('\Entities\Baskets');
$session = $appbox->get_session();
$baskets = array(); /* @var $$repo \Repositories\BasketRepository */
$sql = 'SELECT s.ssel_id FROM ssel s, sselcont c return $repo->findContainingRecord($this);
WHERE s.ssel_id = c.ssel_id
AND c.base_id = :base_id AND record_id = :record_id
AND usr_id = :usr_id AND temporaryType="0"';
$params = array(
':base_id' => $this->get_base_id()
, ':record_id' => $this->get_record_id()
, ':usr_id' => $session->get_usr_id()
);
$stmt = $appbox->get_connection()->prepare($sql);
$stmt->execute($params);
$rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt->closeCursor();
foreach ($rs as $row)
{
$baskets[$row['ssel_id']] = basket_adapter::getInstance($appbox, $row['ssel_id'], $session->get_usr_id());
}
$this->container_basket = $baskets;
return $this->container_basket;
} }
/** /**

View File

@@ -89,6 +89,7 @@ class record_preview extends record_adapter
public function __construct($env, $pos, $contId, $reload_train, searchEngine_adapter $search_engine =null, $query='') public function __construct($env, $pos, $contId, $reload_train, searchEngine_adapter $search_engine =null, $query='')
{ {
$appbox = appbox::get_instance(); $appbox = appbox::get_instance();
$Core = bootstrap::getCore();
$number = null; $number = null;
$this->env = $env; $this->env = $env;
@@ -139,37 +140,42 @@ class record_preview extends record_adapter
break; break;
case "BASK": case "BASK":
$basket = basket_adapter::getInstance($appbox, $contId, $appbox->get_session()->get_usr_id()); $em = $Core->getEntityManager();
$repository = $em->getRepository('\Entities\Basket');
$this->container = $basket; /* @var $repository \Repositories\BasketRepository */
$this->total = count($basket->get_elements()); $Basket = $repository->findUserBasket($contId, $Core->getAuthenticatedUser());
/* @var $Basket \Entities\Basket */
$this->container = $Basket;
$this->total = $Basket->getElements()->count();
$i = 0; $i = 0;
$first = true; $first = true;
foreach ($basket->get_elements() as $element) foreach ($Basket->getElements() as $element)
{ {
/* @var $element \Entities\BasketElement */
$i++; $i++;
if ($first) if ($first)
{ {
$sbas_id = $element->get_record()->get_sbas_id(); $sbas_id = $element->getRecord()->get_sbas_id();
$record_id = $element->get_record()->get_record_id(); $record_id = $element->getRecord()->get_record_id();
$this->name = $basket->get_name(); $this->name = $Basket->getName();
$number = $element->get_order(); $number = $element->getOrd();
} }
$first = false; $first = false;
if ($element->get_order() == $pos) if ($element->getOrd() == $pos)
{ {
$sbas_id = $element->get_record()->get_sbas_id(); $sbas_id = $element->getRecord()->get_sbas_id();
$record_id = $element->get_record()->get_record_id(); $record_id = $element->getRecord()->get_record_id();
$this->name = $basket->get_name(); $this->name = $Basket->getName();
$number = $element->get_order(); $number = $element->getOrd();
} }
} }
break; break;
case "FEED": case "FEED":
$entry = Feed_Entry_Adapter::load_from_id($appbox, $contId); $entry = Feed_Entry_Adapter::load_from_id($appbox, $contId);
// $basket = basket_adapter::getInstance($appbox, $contId, $appbox->get_session()->get_usr_id());
$this->container = $entry; $this->container = $entry;
$this->total = count($entry->get_content()); $this->total = count($entry->get_content());

View File

@@ -41,7 +41,7 @@ class registry implements registryInterface
*/ */
public static function get_instance() public static function get_instance()
{ {
$prefix = crc32(dirname(__FILE__)); $prefix = crc32(__DIR__);
if (!self::$_instance instanceof self) if (!self::$_instance instanceof self)
self::$_instance = new self(new cache_opcode_adapter($prefix)); self::$_instance = new self(new cache_opcode_adapter($prefix));
@@ -57,8 +57,8 @@ class registry implements registryInterface
{ {
$this->cache = $cache; $this->cache = $cache;
require dirname(__FILE__) . '/../../config/config.inc'; require __DIR__ . '/../../config/config.inc';
$this->cache->set('GV_RootPath', dirname(dirname(dirname(__FILE__))) . '/'); $this->cache->set('GV_RootPath', dirname(dirname(__DIR__)) . '/');
$this->cache->set('GV_ServerName', p4string::addEndSlash($servername)); $this->cache->set('GV_ServerName', p4string::addEndSlash($servername));
$this->cache->set('GV_debug', !!$debug); $this->cache->set('GV_debug', !!$debug);
$this->cache->set('GV_maintenance', !!$maintenance); $this->cache->set('GV_maintenance', !!$maintenance);

View File

@@ -1,6 +1,6 @@
<?php <?php
require_once dirname(__FILE__) . '/../../../../vendor/sphinx/sphinxapi.php'; require_once __DIR__ . '/../../../../vendor/sphinx/sphinxapi.php';
/* /*
* This file is part of Phraseanet * This file is part of Phraseanet
* *

View File

@@ -36,12 +36,13 @@ class set_export extends set_abstract
*/ */
public function __construct($lst, $sstid) public function __construct($lst, $sstid)
{ {
$Core = bootstrap::getCore();
$appbox = appbox::get_instance(); $appbox = appbox::get_instance();
$session = $appbox->get_session(); $session = $appbox->get_session();
$registry = $appbox->get_registry(); $registry = $appbox->get_registry();
$user = $Core->getAuthenticatedUser();
$user = User_Adapter::getInstance($session->get_usr_id(), $appbox);
$download_list = array(); $download_list = array();
@@ -49,12 +50,17 @@ class set_export extends set_abstract
if ($sstid != "") if ($sstid != "")
{ {
$basket = basket_adapter::getInstance($appbox, $sstid, $user->get_id()); $em = $Core->getEntityManager();
$repository = $em->getRepository('\Entities\Basket');
foreach ($basket->get_elements() as $basket_element) /* @var $repository \Repositories\BasketRepository */
$Basket = $repository->findUserBasket($sstid, $user);
foreach ($Basket->getElements() as $basket_element)
{ {
$base_id = $basket_element->get_record()->get_base_id(); /* @var $basket_element \Entities\BasketElement */
$record_id = $basket_element->get_record()->get_record_id(); $base_id = $basket_element->getRecord()->get_base_id();
$record_id = $basket_element->getRecord()->get_record_id();
if (!isset($remain_hd[$base_id])) if (!isset($remain_hd[$base_id]))
{ {
@@ -70,7 +76,7 @@ class set_export extends set_abstract
$current_element = $download_list[] = $current_element = $download_list[] =
new record_exportElement( new record_exportElement(
$basket_element->get_record()->get_sbas_id(), $basket_element->getRecord()->get_sbas_id(),
$record_id, $record_id,
$basket->get_name() . '/', $basket->get_name() . '/',
$remain_hd[$base_id] $remain_hd[$base_id]
@@ -950,7 +956,7 @@ class set_export extends set_abstract
public static function stream_file( public static function stream_file(
$file, $exportname, $mime, $disposition='attachment') $file, $exportname, $mime, $disposition='attachment')
{ {
require_once dirname(__FILE__) . "/../../../lib/vendor/Silex/autoload.php"; require_once __DIR__ . "/../../../lib/vendor/Silex/autoload.php";
$registry = registry::get_instance(); $registry = registry::get_instance();
$disposition = in_array($disposition, array('inline', 'attachment')) ? $disposition = in_array($disposition, array('inline', 'attachment')) ?

View File

@@ -219,19 +219,29 @@ class set_order extends set_abstract
} }
} }
try $core = \bootstrap::getCore();
{
$basket = basket_adapter::getInstance($appbox, $this->ssel_id, $session->get_usr_id());
}
catch (Exception $e)
{
$basket = basket_adapter::create($appbox, sprintf(_('Commande du %s'), $this->created_on->format('Y-m-d')), $this->user, '', $pusher);
$this->ssel_id = $basket->get_ssel_id(); $em = $core->getEntityManager();
$repository = $em->getRepository('\Entities\Basket');
/* @var $repository \Repositories\BasketRepository */
$Basket = $repository->findUserBasket($this->ssel_id, $core->getAuthenticatedUser());
if(!$Basket)
{
$Basket = new Basket();
$Basket->setName(sprintf(_('Commande du %s'), $this->created_on->format('Y-m-d')));
$Basket->setOwner($this->user);
$Basket->setPusher($core->getAuthenticatedUser());
$em->persist($Basket);
$em->flush();
$this->ssel_id = $Basket->getId();
$sql = 'UPDATE `order` SET ssel_id = :ssel_id WHERE id = :order_id'; $sql = 'UPDATE `order` SET ssel_id = :ssel_id WHERE id = :order_id';
$stmt = $conn->prepare($sql); $stmt = $conn->prepare($sql);
$stmt->execute(array(':ssel_id' => $basket->get_ssel_id(), ':order_id' => $this->id)); $stmt->execute(array(':ssel_id' => $Basket->getId(), ':order_id' => $this->id));
$stmt->closeCursor(); $stmt->closeCursor();
} }

View File

@@ -31,21 +31,14 @@ class set_selection extends set_abstract
/** /**
* *
* @param basket_adapter $basket * @param \Entities\Basket $basket
* @param boolean $flatten_if_grouping
* @return set_selection * @return set_selection
*/ */
public function load_basket(basket_adapter $basket, $flatten_if_grouping = true) public function load_basket(\Entities\Basket $Basket)
{ {
if ($basket->is_grouping() && !$flatten_if_grouping) foreach ($Basket->getElements() as $basket_element)
{ {
$record = new record_adapter($basket->get_sbas_id(), $basket->get_record_id(), count($this->elements)); $this->add_element($basket_element->getRecord());
$this->add_element($record);
}
else
{
foreach ($basket->get_elements() as $basket_element)
$this->add_element($basket_element->get_record());
} }
return $this; return $this;

View File

@@ -68,13 +68,13 @@ class setup
public static function is_installed() public static function is_installed()
{ {
return file_exists(dirname(__FILE__) . "/../../config/connexion.inc") return file_exists(__DIR__ . "/../../config/connexion.inc")
&& file_exists(dirname(__FILE__) . "/../../config/config.inc"); && file_exists(__DIR__ . "/../../config/config.inc");
} }
function create_global_values(registryInterface &$registry, $datas=array()) function create_global_values(registryInterface &$registry, $datas=array())
{ {
require(dirname(__FILE__) . "/../../lib/conf.d/_GV_template.inc"); require(__DIR__ . "/../../lib/conf.d/_GV_template.inc");
if ($registry->is_set('GV_timezone')) if ($registry->is_set('GV_timezone'))
@@ -257,12 +257,12 @@ class setup
{ {
if (system_server::get_platform() == 'WINDOWS') if (system_server::get_platform() == 'WINDOWS')
{ {
$exiftool = dirname(dirname(__FILE__)) . '/vendor/exiftool/exiftool.exe'; $exiftool = dirname(__DIR__) . '/vendor/exiftool/exiftool.exe';
$indexer = dirname(dirname(dirname(__FILE__))) . '/bin/phraseanet_indexer.exe'; $indexer = dirname(dirname(__DIR__)) . '/bin/phraseanet_indexer.exe';
} }
else else
{ {
$exiftool = dirname(dirname(__FILE__)) . '/vendor/exiftool/exiftool'; $exiftool = dirname(__DIR__) . '/vendor/exiftool/exiftool';
$indexer = null; $indexer = null;
} }
@@ -453,7 +453,7 @@ class setup
public static function check_writability(registryInterface $registry) public static function check_writability(registryInterface $registry)
{ {
$root = p4string::addEndSlash(realpath(dirname(__FILE__) . '/../../')); $root = p4string::addEndSlash(realpath(__DIR__ . '/../../'));
$pathes = array( $pathes = array(
$root . 'config', $root . 'config',
@@ -765,17 +765,17 @@ class setup
public static function get_config_filepath() public static function get_config_filepath()
{ {
return dirname(__FILE__) . '/../../config/config.inc'; return __DIR__ . '/../../config/config.inc';
} }
public static function get_connexion_filepath() public static function get_connexion_filepath()
{ {
return dirname(__FILE__) . '/../../config/connexion.inc'; return __DIR__ . '/../../config/connexion.inc';
} }
public static function rollback(connection_pdo $conn, connection_pdo $connbas =null) public static function rollback(connection_pdo $conn, connection_pdo $connbas =null)
{ {
$structure = simplexml_load_file(dirname(__FILE__) . "/../../lib/conf.d/bases_structure.xml"); $structure = simplexml_load_file(__DIR__ . "/../../lib/conf.d/bases_structure.xml");
if (!$structure) if (!$structure)
throw new Exception('Unable to load schema'); throw new Exception('Unable to load schema');
@@ -814,7 +814,7 @@ class setup
} }
} }
} }
$connexion = dirname(__FILE__) . "/../../config/connexion.inc"; $connexion = __DIR__ . "/../../config/connexion.inc";
if (file_exists($connexion)) if (file_exists($connexion))
unlink($connexion); unlink($connexion);

View File

@@ -37,7 +37,7 @@ class sphinx_configuration
public function get_available_charsets() public function get_available_charsets()
{ {
$available_charsets = array(); $available_charsets = array();
$dir = dirname(__FILE__) . '/charsetTable/'; $dir = __DIR__ . '/charsetTable/';
echo $dir; echo $dir;
$registry = registry::get_instance(); $registry = registry::get_instance();
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir), RecursiveIteratorIterator::LEAVES_ONLY) as $file) foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir), RecursiveIteratorIterator::LEAVES_ONLY) as $file)

View File

@@ -111,6 +111,7 @@ class supertwig
$this->addFilter(array('round' => 'round')); $this->addFilter(array('round' => 'round'));
$this->addFilter(array('nl2br' => 'nl2br')); $this->addFilter(array('nl2br' => 'nl2br'));
$this->addFilter(array('prettyString' => 'phraseadate::getPrettyString')); $this->addFilter(array('prettyString' => 'phraseadate::getPrettyString'));
$this->addFilter(array('get_collection_logo' => 'collection::getLogo'));
} }
catch (Exception $e) catch (Exception $e)
{ {

View File

@@ -45,14 +45,14 @@ class task_Scheduler
protected static function get_connection() protected static function get_connection()
{ {
require dirname(__FILE__) . '/../../../config/connexion.inc'; require __DIR__ . '/../../../config/connexion.inc';
return new connection_pdo('appbox', $hostname, $port, $user, $password, $dbname); return new connection_pdo('appbox', $hostname, $port, $user, $password, $dbname);
} }
public function run(OutputInterface $output = null, $log_tasks = true) public function run(OutputInterface $output = null, $log_tasks = true)
{ {
require_once dirname(__FILE__) . '/../../bootstrap.php'; require_once __DIR__ . '/../../bootstrap.php';
$this->output = $output; $this->output = $output;
$appbox = appbox::get_instance(); $appbox = appbox::get_instance();
$registry = $appbox->get_registry(); $registry = $appbox->get_registry();

View File

@@ -67,8 +67,8 @@ class task_period_upgradetov32 extends task_abstract
if (!$this->sbas_id) if (!$this->sbas_id)
{ {
printf("sbas_id '" . $this->sbas_id . "' invalide\n"); printf("sbas_id '" . $this->sbas_id . "' invalide\n");
$this->return_value = self::RETURNSTATUS_STOPPED;
return 'stopped'; return;
} }
try try
@@ -78,6 +78,8 @@ class task_period_upgradetov32 extends task_abstract
} }
catch (Exception $e) catch (Exception $e)
{ {
$this->return_value = self::RETURNSTATUS_STOPPED;
return; return;
} }
@@ -94,6 +96,7 @@ class task_period_upgradetov32 extends task_abstract
catch (Exception $e) catch (Exception $e)
{ {
printf("Please verify all your databox meta fields before migrating, It seems somes are wrong\n"); printf("Please verify all your databox meta fields before migrating, It seems somes are wrong\n");
$this->return_value = self::RETURNSTATUS_STOPPED;
return 'stopped'; return 'stopped';
} }
@@ -194,7 +197,7 @@ class task_period_upgradetov32 extends task_abstract
$sql = 'select record_id, coll_id, xml, BIN(status) as status $sql = 'select record_id, coll_id, xml, BIN(status) as status
FROM record FROM record
WHERE record_id NOT IN (select distinct record_id from technical_datas) WHERE migrated="0" AND record_id NOT IN (select distinct record_id from technical_datas)
LIMIT 0, 500'; LIMIT 0, 500';
$stmt = $connbas->prepare($sql); $stmt = $connbas->prepare($sql);
@@ -280,9 +283,6 @@ class task_period_upgradetov32 extends task_abstract
{ {
$record = new record_adapter($this->sbas_id, $row['record_id']); $record = new record_adapter($this->sbas_id, $row['record_id']);
// $sbas_id = $this->sbas_id;
$metas = $databox->get_meta_structure(); $metas = $databox->get_meta_structure();
$metadatas = array(); $metadatas = array();
@@ -367,12 +367,16 @@ class task_period_upgradetov32 extends task_abstract
$memory = memory_get_usage() >> 20; $memory = memory_get_usage() >> 20;
if ($n_done >= 5000) if ($n_done >= 5000)
{
return task_abstract::RETURNSTATUS_TORESTART; $this->return_value = task_abstract::RETURNSTATUS_TORESTART;
return;
}
if ($memory > 100) if ($memory > 100)
{
return task_abstract::RETURNSTATUS_TORESTART; $this->return_value = task_abstract::RETURNSTATUS_TORESTART;
} return;
}
}
catch (Exception $e) catch (Exception $e)
{ {
@@ -393,8 +397,6 @@ class task_period_upgradetov32 extends task_abstract
$conn = connection::getPDOConnection(); $conn = connection::getPDOConnection();
$ret = 'stopped';
printf("taskid %s ending." . PHP_EOL, $this->get_task_id()); printf("taskid %s ending." . PHP_EOL, $this->get_task_id());
sleep(1); sleep(1);
printf("good bye world I was task upgrade to version 3.2" . PHP_EOL); printf("good bye world I was task upgrade to version 3.2" . PHP_EOL);
@@ -406,11 +408,12 @@ class task_period_upgradetov32 extends task_abstract
$stmt->closeCursor(); $stmt->closeCursor();
$this->setProgress(0, 0); $this->setProgress(0, 0);
$ret = 'todelete';
$this->return_value = self::RETURNSTATUS_TODELETE;
flush(); flush();
return $ret; return;
} }
} }

View File

@@ -1,5 +1,6 @@
Entities\BasketElement: Entities\BasketElement:
type: entity type: entity
repositoryClass: Repositories\BasketElementRepository
table: BasketElements table: BasketElements
uniqueConstraints: uniqueConstraints:
unique_recordcle: unique_recordcle:

View File

@@ -19,7 +19,7 @@ Entities\ValidationData:
manyToOne: manyToOne:
participant: participant:
targetEntity: ValidationParticipant targetEntity: ValidationParticipant
inversedBy: datases inversedBy: datas
joinColumn: joinColumn:
name: participant_id name: participant_id
referencedColumnName: id referencedColumnName: id

View File

@@ -12,8 +12,17 @@ Entities\ValidationParticipant:
type: integer type: integer
is_aware: is_aware:
type: boolean type: boolean
is_confirmed:
type: boolean
can_agree:
type: boolean
can_see_others:
type: boolean
reminded:
type: datetime
nullable: true;
oneToMany: oneToMany:
datases: datas:
targetEntity: ValidationData targetEntity: ValidationData
mappedBy: participant mappedBy: participant
cascade: ["ALL"] cascade: ["ALL"]

View File

@@ -21,9 +21,6 @@ Entities\ValidationSession:
on: update on: update
expires: expires:
type: datetime type: datetime
reminded:
type: datetime
nullable: true;
oneToOne: oneToOne:
basket: basket:
targetEntity: Basket targetEntity: Basket

View File

@@ -1349,16 +1349,6 @@
<comment></comment> <comment></comment>
</field> </field>
<field>
<name>bas_manage</name>
<type>int(1) unsigned</type>
<null></null>
<extra></extra>
<default>0</default>
<comment></comment>
</field>
<field> <field>
<name>bas_modify_struct</name> <name>bas_modify_struct</name>
<type>int(1) unsigned</type> <type>int(1) unsigned</type>

View File

@@ -172,11 +172,18 @@ class Bridge_Application extends PhraseanetWebTestCaseAuthenticatedAbstract
public function testLogoutDeconnected() public function testLogoutDeconnected()
{ {
try
{
$url = sprintf('/bridge/adapter/%d/logout/', self::$account->get_id()); $url = sprintf('/bridge/adapter/%d/logout/', self::$account->get_id());
$crawler = $this->client->request('GET', $url); $crawler = $this->client->request('GET', $url);
$pageContent = $this->client->getResponse()->getContent(); $pageContent = $this->client->getResponse()->getContent();
$this->assertContains("/adapter/" . self::$account->get_id() . "/logout/", $pageContent); $this->assertContains("/adapter/" . self::$account->get_id() . "/logout/", $pageContent);
$this->deconnected($crawler, $pageContent); $this->deconnected($crawler, $pageContent);
}
catch(Exception $e)
{
exit($e);
}
} }
public function testLogout() public function testLogout()

View File

@@ -337,6 +337,11 @@ abstract class PhraseanetPHPUnitAbstract extends WebTestCase
protected static $collection; protected static $collection;
protected static $time_start; protected static $time_start;
protected static $generated_subdefs = array(); protected static $generated_subdefs = array();
/**
*
* @var \Alchemy\Phrasea\Core
*/
protected static $core; protected static $core;
public static function setUpBeforeClass() public static function setUpBeforeClass()

View File

@@ -22,7 +22,7 @@ class API_V1_adapterTest extends PhraseanetPHPUnitAuthenticatedAbstract
{ {
parent::setUp(); parent::setUp();
$appbox = appbox::get_instance(); $appbox = appbox::get_instance();
$this->object = new API_V1_adapter(FALSE, $appbox); $this->object = new API_V1_adapter(FALSE, $appbox, self::$core);
} }
public function testGet_error_code() public function testGet_error_code()
@@ -371,9 +371,15 @@ class API_V1_adapterTest extends PhraseanetPHPUnitAuthenticatedAbstract
$session = $appbox->get_session(); $session = $appbox->get_session();
$usr_id = $session->get_usr_id(); $usr_id = $session->get_usr_id();
$basket = basket_adapter::getInstance(appbox::get_instance(), $ssel_id, $usr_id); $em = self::$core->getEntityManager();
$this->assertTrue($basket instanceof basket_adapter); $repo = $em->getRepository('\Entities\Basket');
$basket->delete();
/* @var $repo \Repositories\BasketRepository */
$repo->findUserBasket($ssel_id, self::$core->getAuthenticatedUser());
$this->assertTrue($basket instanceof \Entities\Basket);
$em->remove($Basket);
$em->flush();
} }
public function testDelete_basket() public function testDelete_basket()
@@ -381,8 +387,17 @@ class API_V1_adapterTest extends PhraseanetPHPUnitAuthenticatedAbstract
$appbox = appbox::get_instance(); $appbox = appbox::get_instance();
$usr_id = $appbox->get_session()->get_usr_id(); $usr_id = $appbox->get_session()->get_usr_id();
$user = User_Adapter::getInstance($usr_id, $appbox); $user = User_Adapter::getInstance($usr_id, $appbox);
$basket = basket_adapter::create($appbox, 'test suppression', $user);
$ssel_id = $basket->get_ssel_id(); $em = self::$core->getEntityManager();
$Basket = new Entities\Basket();
$Basket->setName('Delete test');
$Basket->setOwner($user);
$em->persist($Basket);
$em->flush();
$ssel_id = $basket->getId();
$request = new Request(array(), array(), array(), array(), array(), array('HTTP_Accept' => 'application/json')); $request = new Request(array(), array(), array(), array(), array(), array('HTTP_Accept' => 'application/json'));
$result = $this->object->delete_basket($request, $ssel_id); $result = $this->object->delete_basket($request, $ssel_id);
@@ -390,12 +405,14 @@ class API_V1_adapterTest extends PhraseanetPHPUnitAuthenticatedAbstract
$this->assertEquals('application/json', $result->get_content_type()); $this->assertEquals('application/json', $result->get_content_type());
$this->assertTrue(is_object(json_decode($result->format()))); $this->assertTrue(is_object(json_decode($result->format())));
$repo = $em->getRepository('\Entities\Basket');
try try
{ {
basket_adapter::getInstance($appbox, $ssel_id, $usr_id); $repo->findUserBasket($ssel_id, $user);
$this->fail('An exception should have been raised'); $this->fail('An exception should have been raised');
} }
catch (Exception_Basket_NotFound $e) catch (Exception_NotFound $e)
{ {
} }

View File

@@ -246,7 +246,7 @@ class API_V1_test_adapter extends PhraseanetWebTestCaseAbstract
$this->assertTrue((strlen($metadatas->separator) > 0)); $this->assertTrue((strlen($metadatas->separator) > 0));
$this->assertTrue(is_string($metadatas->thesaurus_branch)); $this->assertTrue(is_string($metadatas->thesaurus_branch));
$this->assertTrue(in_array($metadatas->type, array(databox_field::TYPE_DATE, 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->indexable));
$this->assertTrue(is_bool($metadatas->multivalue)); $this->assertTrue(is_bool($metadatas->multivalue));
$this->assertTrue(is_bool($metadatas->readonly)); $this->assertTrue(is_bool($metadatas->readonly));

View File

@@ -254,7 +254,7 @@ class API_V1_test_adapterYaml extends PhraseanetWebTestCaseAbstract
$this->assertTrue((strlen($metadatas["separator"]) > 0)); $this->assertTrue((strlen($metadatas["separator"]) > 0));
$this->assertTrue(is_string($metadatas["thesaurus_branch"])); $this->assertTrue(is_string($metadatas["thesaurus_branch"]));
$this->assertTrue(in_array($metadatas["type"], array(databox_field::TYPE_DATE, 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["indexable"]));
$this->assertTrue(is_bool($metadatas["multivalue"])); $this->assertTrue(is_bool($metadatas["multivalue"]));
$this->assertTrue(is_bool($metadatas["readonly"])); $this->assertTrue(is_bool($metadatas["readonly"]));

View File

@@ -478,10 +478,9 @@ class record_adapterTest extends PhraseanetPHPUnitAuthenticatedAbstract
$baskets = $baskets['baskets']; $baskets = $baskets['baskets'];
$basket = array_shift($baskets); $basket = array_shift($baskets);
$this->assertInstanceOf('basket_adapter', $basket); $this->assertInstanceOf('\Entities\Basket', $basket);
$basket->push_element(self::$record_1, false, false); $basket->push_element(self::$record_1, false, false);
self::$record_1->get_container_baskets();
$found = $sselcont_id = false; $found = $sselcont_id = false;
@@ -490,13 +489,13 @@ class record_adapterTest extends PhraseanetPHPUnitAuthenticatedAbstract
foreach (self::$record_1->get_container_baskets() as $c_basket) foreach (self::$record_1->get_container_baskets() as $c_basket)
{ {
if ($c_basket->get_ssel_id() == $basket->get_ssel_id()) if ($c_basket->getId() == $basket->get_ssel_id())
{ {
$found = true; $found = true;
foreach ($c_basket->get_elements() as $b_el) foreach ($c_basket->getElements() as $b_el)
{ {
if ($b_el->get_record()->get_record_id() == $record_id && $b_el->get_record()->get_sbas_id() == $sbas_id) if ($b_el->getRecord()->get_record_id() == $record_id && $b_el->getRecord()->get_sbas_id() == $sbas_id)
$sselcont_id = $b_el->get_sselcont_id(); $sselcont_id = $b_el->getId();
} }
} }
} }

View File

@@ -37,12 +37,22 @@ class userTest extends PhraseanetPHPUnitAbstract
$this->assertFalse(User_Adapter::get_usr_id_from_email(null)); $this->assertFalse(User_Adapter::get_usr_id_from_email(null));
self::$user->set_email(''); self::$user->set_email('');
$this->assertFalse(User_Adapter::get_usr_id_from_email(null)); $this->assertFalse(User_Adapter::get_usr_id_from_email(null));
self::$user->set_email('noonealt1@example.com'); self::$user->set_email('noone@example.com');
$this->assertEquals(self::$user->get_id(), User_Adapter::get_usr_id_from_email('noonealt1@example.com')); $this->assertEquals(self::$user->get_id(), User_Adapter::get_usr_id_from_email('noone@example.com'));
} }
catch(Exception $e) catch(Exception $e)
{ {
$this->fail($e->getMessage()); $this->fail($e->getMessage());
}
try
{
self::$user->set_email('noonealt1@example.com');
$this->fail('A user already got this address');
}
catch(Exception $e)
{
} }
$this->assertFalse(User_Adapter::get_usr_id_from_email(null)); $this->assertFalse(User_Adapter::get_usr_id_from_email(null));
} }

View File

@@ -11,28 +11,30 @@
{% endblock %} {% endblock %}
{% block content %} {% block content %}
{% set record = basket_element.get_record() %} {% set record = basket_element.getRecord() %}
<div data-role="page"> <div data-role="page">
<div data-role="header"> <div data-role="header">
<a href="/lightbox/validate/{{basket_element.get_ssel_id()}}/" data-rel="back" data-icon="arrow-l">Back</a> <a href="/lightbox/validate/{{basket_element.getId()}}/" data-rel="back" data-icon="arrow-l">Back</a>
<h1>{{basket_element.get_order()}} - {{record.get_title()}}</h1> <h1>{{basket_element.getOrd()}} - {{record.get_title()}}</h1>
<a rel="external" href="/lightbox/" data-icon="home" data-iconpos="notext" data-direction="reverse" class="ui-btn-right jqm-home">Home</a> <a rel="external" href="/lightbox/" data-icon="home" data-iconpos="notext" data-direction="reverse" class="ui-btn-right jqm-home">Home</a>
</div> </div>
<div data-role="content"> <div data-role="content">
{{ thumbnail.format100percent(record.get_preview(),'',session, record.get_thumbnail()) }} {{ thumbnail.format100percent(record.get_preview(),'',session, record.get_thumbnail()) }}
{% if basket_element.is_validation_item() %} {% if basket_element.getBasket().getValidation() %}
<fieldset data-role="controlgroup" data-type="horizontal" style="text-align:center;"> <fieldset data-role="controlgroup" data-type="horizontal" style="text-align:center;">
<input {% if basket_element.get_my_agreement() == '1'%}checked="checked"{% endif %} type="radio" name="radio-view" id="radio-view-yes_{{basket_element.get_sselcont_id()}}" value="yes" /> <input {% if basket_element.getUserValidationDatas(user).getAgreement() == true%}checked="checked"{% endif %} type="radio" name="radio-view" id="radio-view-yes_{{basket_element.getId()}}" value="yes" />
<label class="agreement_radio" style="width:130px;text-align:center;" for="radio-view-yes_{{basket_element.get_sselcont_id()}}">{% trans 'validation:: OUI' %}</label> <label class="agreement_radio" style="width:130px;text-align:center;" for="radio-view-yes_{{basket_element.getId()}}">{% trans 'validation:: OUI' %}</label>
<input {% if basket_element.get_my_agreement() == '-1'%}checked="checked"{% endif %} type="radio" name="radio-view" id="radio-view-no_{{basket_element.get_sselcont_id()}}" value="no" /> <input {% if basket_element.getUserValidationDatas(user).getAgreement() == false%}checked="checked"{% endif %} type="radio" name="radio-view" id="radio-view-no_{{basket_element.getId()}}" value="no" />
<label class="agreement_radio" style="width:130px;text-align:center;" for="radio-view-no_{{basket_element.get_sselcont_id()}}">{% trans 'validation:: NON' %}</label> <label class="agreement_radio" style="width:130px;text-align:center;" for="radio-view-no_{{basket_element.getId()}}">{% trans 'validation:: NON' %}</label>
</fieldset> </fieldset>
<div style="text-align:center;margin:0 0 1em 0"> <div style="text-align:center;margin:0 0 1em 0">
<a href="/lightbox/ajax/NOTE_FORM/{{basket_element.get_sselcont_id()}}/" data-role="button" data-inline="true" data-rel="dialog" data-transition="slidedown">{% trans 'validation:: editer ma note' %}</a> <a href="/lightbox/ajax/NOTE_FORM/{{basket_element.getId()}}/" data-role="button" data-inline="true" data-rel="dialog" data-transition="slidedown">
{% trans 'validation:: editer ma note' %}
</a>
</div> </div>
<div> <div>
<ul data-role="listview" id="notes_{{basket_element.get_sselcont_id()}}"> <ul data-role="listview" id="notes_{{basket_element.getId()}}">
{% include 'lightbox/sc_note.twig' %} {% include 'lightbox/sc_note.twig' %}
</ul> </ul>
</div> </div>

View File

@@ -111,7 +111,7 @@
<li> <li>
<a href="#rights_tab">Droits</a> <a href="#rights_tab">Droits</a>
</li> </li>
{% if main_user is not empty %} {% if main_user is not empty and main_user.is_template is empty %}
<li> <li>
<a href="#user_infos_tab">Fiche</a> <a href="#user_infos_tab">Fiche</a>
</li> </li>
@@ -142,7 +142,7 @@
</th> </th>
<th colspan="26"> <th colspan="26">
<img src="/skins/lng/inclin-{{session.get_I18n()}}.gif" > <img src="/skins/lng/inclin-{{session.get_I18n()}}.png" style="width:698px"/>
</th> </th>
</tr> </tr>
</thead> </thead>
@@ -402,7 +402,7 @@
</form> </form>
</div> </div>
{% if main_user is not empty %} {% if main_user is not empty and main_user.is_template is empty %}
<div id="user_infos_tab" class="PNB" style="top:40px;"> <div id="user_infos_tab" class="PNB" style="top:40px;">
<form id="user_infos_form"> <form id="user_infos_form">
<table> <table>

View File

@@ -52,33 +52,91 @@
<button type="submit">{% trans 'boutton::chercher' %}</button> <button type="submit">{% trans 'boutton::chercher' %}</button>
</p> </p>
</form> </form>
<form id="users_apply_template" method="post" action="/admin/users/apply_template/" target="_self">
<p class="admin_head_opts">
{% trans 'Apply a template' %}
<select name="template_chooser">
<option value="">{% trans 'boutton::choisir' %}</option>
{% for template in templates %}
<option value="{{ template.get_id() }}">{{ template.get_display_name() }}</option>
{% endfor %}
</select>
<button type="submit">{% trans 'boutton::appliquer' %}</button>
</p>
</form>
<table id="users" cellspacing="0" cellpadding="0" border="0" class="admintable"> <table id="users" cellspacing="0" cellpadding="0" border="0" class="admintable">
<thead> <thead>
<tr> <tr>
<th style="text-align: center;"> <th style="text-align: center;" class="sortable {{ parm.srt == 'usr_id' ? 'sorted' : '' }} {{ parm.ord == 'asc' ? 'sort_asc' : 'sort_desc' }}">
{% trans 'admin::compte-utilisateur id utilisateur' %} {% trans 'admin::compte-utilisateur id utilisateur' %}
<span class="ord_notifier">
{{ parm.ord == 'asc' ? '&#x25bc;' : '&#x25B2;' }}
</span>
<input type="hidden" name="srt" value="usr_id" />
</th> </th>
<th> <th class="sortable {{ parm.srt == 'usr_login' ? 'sorted' : '' }} ">
<span>
{% trans 'admin::compte-utilisateur identifiant' %} {% trans 'admin::compte-utilisateur identifiant' %}
</span>
<span class="ord_notifier">
{{ parm.ord == 'asc' ? '&#x25bc;' : '&#x25B2;' }}
</span>
<input type="hidden" name="srt" value="usr_login" />
</th> </th>
<th> <th class="sortable {{ parm.srt == 'usr_nom' ? 'sorted' : '' }} {{ parm.ord == 'asc' ? 'sort_asc' : 'sort_desc' }}">
<span>
{% trans 'admin::compte-utilisateur nom/prenom' %} {% trans 'admin::compte-utilisateur nom/prenom' %}
</span>
<span class="ord_notifier">
{{ parm.ord == 'asc' ? '&#x25bc;' : '&#x25B2;' }}
</span>
<input type="hidden" name="srt" value="usr_nom" />
</th> </th>
<th> <th class="sortable {{ parm.srt == 'societe' ? 'sorted' : '' }} {{ parm.ord == 'asc' ? 'sort_asc' : 'sort_desc' }}">
<span>
{% trans 'admin::compte-utilisateur societe' %} {% trans 'admin::compte-utilisateur societe' %}
</span>
<span class="ord_notifier">
{{ parm.ord == 'asc' ? '&#x25bc;' : '&#x25B2;' }}
</span>
<input type="hidden" name="srt" value="societe" />
</th> </th>
<th> <th class="sortable {{ parm.srt == 'usr_mail' ? 'sorted' : '' }} {{ parm.ord == 'asc' ? 'sort_asc' : 'sort_desc' }}">
<span>
{% trans 'admin::compte-utilisateur email' %} {% trans 'admin::compte-utilisateur email' %}
</span>
<span class="ord_notifier">
{{ parm.ord == 'asc' ? '&#x25bc;' : '&#x25B2;' }}
</span>
<input type="hidden" name="srt" value="usr_mail" />
</th> </th>
<th> <th class="sortable {{ parm.srt == 'pays' ? 'sorted' : '' }} {{ parm.ord == 'asc' ? 'sort_asc' : 'sort_desc' }}">
<span>
{% trans 'admin::compte-utilisateur pays' %} {% trans 'admin::compte-utilisateur pays' %}
</span>
<span class="ord_notifier">
{{ parm.ord == 'asc' ? '&#x25bc;' : '&#x25B2;' }}
</span>
<input type="hidden" name="srt" value="pays" />
</th> </th>
<th> <th class="sortable {{ parm.srt == 'lastModel' ? 'sorted' : '' }} {{ parm.ord == 'asc' ? 'sort_asc' : 'sort_desc' }}">
<span>
{% trans 'admin::compte-utilisateur dernier modele applique' %} {% trans 'admin::compte-utilisateur dernier modele applique' %}
</span>
<span class="ord_notifier">
{{ parm.ord == 'asc' ? '&#x25bc;' : '&#x25B2;' }}
</span>
<input type="hidden" name="srt" value="lastModel" />
</th> </th>
<th> <th class="sortable {{ parm.srt == 'usr_creationdate' ? 'sorted' : '' }} {{ parm.ord == 'asc' ? 'sort_asc' : 'sort_desc' }}">
<span>
{% trans 'admin::compte-utilisateur date de creation' %} {% trans 'admin::compte-utilisateur date de creation' %}
</span>
<span class="ord_notifier">
{{ parm.ord == 'asc' ? '&#x25bc;' : '&#x25B2;' }}
</span>
<input type="hidden" name="srt" value="usr_creationdate" />
</th> </th>
</tr> </tr>
</thead> </thead>
@@ -120,8 +178,8 @@
<form id="users_page_form" method="post" target="_self" action="/admin/users/search/"> <form id="users_page_form" method="post" target="_self" action="/admin/users/search/">
{{users.get_total}} resultats {{users.get_total}} resultats
{% set pages = users.get_total() / 20 %} {% set pages = users.get_total() / parm['per_page'] %}
{% set modulo = users.get_total() % 20 %} {% set modulo = users.get_total() % parm['per_page'] %}
{% if modulo > 0 %}{% set pages = pages + 1 %}{% endif %} {% if modulo > 0 %}{% set pages = pages + 1 %}{% endif %}
{{pages|floor}} pages {{pages|floor}} pages
@@ -188,6 +246,9 @@
el.addClass('selected'); el.addClass('selected');
} }
}); });
$('#users_page_form select[name="per_page"]').bind('change', function(){
$(this).closest('form').submit();
});
}); });
</script> </script>
</div> </div>

View File

@@ -1,41 +1,49 @@
{% if basket_element and basket_element.is_validation_item() %} {% if basket_element and basket_element.getBasket().getValidation() %}
<div class="left choices"> <div class="left choices">
<table style="margin-left:10px;width:220px;height:30px;" cellspacing="0" cellpadding="0"> <table style="margin-left:10px;width:220px;height:30px;" cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr> <tr>
<td class="title">{% trans 'VALIDATION' %}</td> <td class="title">{% trans 'VALIDATION' %}</td>
<td class="report_wrapper;"><a class="report" href="#">{% trans 'lightbox::recaptitulatif' %}</a></td> <td class="report_wrapper">
<a class="report" href="#">
{% trans 'lightbox::recaptitulatif' %}
</a>
</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
{% if basket.is_valid() %} {% if basket.getValidation() %}
<div style="margin-left:10px;width:220px;">{{basket.get_validation_infos}}</div> <div style="margin-left:10px;width:220px;">
{{ basket.getValidation().getValidationString(user) }}
</div>
<ul style="margin:10px 0 0 20px;width:200px;"> <ul style="margin:10px 0 0 20px;width:200px;">
{% for choice in basket_element.get_choices() %} {% for validation_data in basket_element.getValidationData() %}
{% if choice.agreement == 1 %} {% if validation_data.getAgreement() == true %}
{% set classuser = 'agree' %} {% set classuser = 'agree' %}
{% elseif choice.agreement == -1 %} {% elseif validation_data.getAgreement() == false %}
{% set classuser = 'disagree' %}
{% else %}
{% set classuser = '' %} {% set classuser = '' %}
{% else %}
{% set classuser = 'disagree' %}
{% endif %} {% endif %}
<li class="{% if choice.usr_id == session.get_usr_id() %}me{% endif %} {{classuser}} userchoice">{{choice.usr_name}}</li> <li class="{% if validation_data.getParticipant().getUser().get_id() == user.get_id() %}me{% endif %} {{classuser}} userchoice">
{{ validation_data.getParticipant().getUser().get_display_name }}
</li>
{% endfor %} {% endfor %}
</ul> </ul>
{% endif %} {% endif %}
{% if basket_element and basket_element.is_validation_item() %} {% if basket_element and basket_element.getBasket().getValidation() %}
<div class="left choices"> <div class="left choices">
<div style="height:60px;margin-top:15px;"> <div style="height:60px;margin-top:15px;">
<table cellspacing="0" cellpadding="0" style="width:230px;"> <table cellspacing="0" cellpadding="0" style="width:230px;">
<tr> <tr>
<td> <td>
<div style="width:70px;margin:0px auto 0;" class="ui-corner-all big_box agree_{{basket_element.get_sselcont_id()}} agree {% if basket_element.get_my_agreement() != 1%}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.getValidationData().getParticipant(user).getAgreement() != true %}not_decided{% endif %}">
<img src="/skins/lightbox/agree-bigie6.gif" style="vertical-align:middle;"/><span>{% trans 'validation:: OUI' %}</span> <img src="/skins/lightbox/agree-bigie6.gif" style="vertical-align:middle;"/><span>{% trans 'validation:: OUI' %}</span>
</div> </div>
</td> </td>
<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.get_my_agreement() != -1%}not_decided{% endif %}"> <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 %}">
<img src="/skins/lightbox/disagree-bigie6.gif" style="vertical-align:middle;"/><span>{% trans 'validation:: NON' %}</span> <img src="/skins/lightbox/disagree-bigie6.gif" style="vertical-align:middle;"/><span>{% trans 'validation:: NON' %}</span>
</div> </div>
</td> </td>

Some files were not shown because too many files have changed in this diff Show More