mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-18 15:33:15 +00:00
@@ -27,7 +27,6 @@ use Alchemy\Phrasea\Controller\Admin\SearchEngine;
|
|||||||
use Alchemy\Phrasea\Controller\Admin\Subdefs;
|
use Alchemy\Phrasea\Controller\Admin\Subdefs;
|
||||||
use Alchemy\Phrasea\Controller\Admin\TaskManager;
|
use Alchemy\Phrasea\Controller\Admin\TaskManager;
|
||||||
use Alchemy\Phrasea\Controller\Admin\Users;
|
use Alchemy\Phrasea\Controller\Admin\Users;
|
||||||
use Alchemy\Phrasea\Controller\Client\Baskets as ClientBasket;
|
|
||||||
use Alchemy\Phrasea\Controller\Client\Root as ClientRoot;
|
use Alchemy\Phrasea\Controller\Client\Root as ClientRoot;
|
||||||
use Alchemy\Phrasea\Controller\Minifier;
|
use Alchemy\Phrasea\Controller\Minifier;
|
||||||
use Alchemy\Phrasea\Controller\Prod\BasketController;
|
use Alchemy\Phrasea\Controller\Prod\BasketController;
|
||||||
@@ -635,7 +634,6 @@ class Application extends SilexApplication
|
|||||||
$this->mount('/admin/subdefs', new Subdefs());
|
$this->mount('/admin/subdefs', new Subdefs());
|
||||||
|
|
||||||
$this->mount('/client/', new ClientRoot());
|
$this->mount('/client/', new ClientRoot());
|
||||||
$this->mount('/client/baskets', new ClientBasket());
|
|
||||||
|
|
||||||
$this->mount('/prod/query/', new Query());
|
$this->mount('/prod/query/', new Query());
|
||||||
$this->mount('/prod/order/', new Order());
|
$this->mount('/prod/order/', new Order());
|
||||||
|
@@ -108,6 +108,7 @@ class RegenerateSqliteDb extends Command
|
|||||||
$this->insertWebhookEventDelivery($em, $DI);
|
$this->insertWebhookEventDelivery($em, $DI);
|
||||||
|
|
||||||
$em->flush();
|
$em->flush();
|
||||||
|
$this->container['elasticsearch.indexer']->flushQueue();
|
||||||
|
|
||||||
$fixtures['basket']['basket_1'] = $DI['basket_1']->getId();
|
$fixtures['basket']['basket_1'] = $DI['basket_1']->getId();
|
||||||
$fixtures['basket']['basket_2'] = $DI['basket_2']->getId();
|
$fixtures['basket']['basket_2'] = $DI['basket_2']->getId();
|
||||||
|
@@ -688,8 +688,13 @@ class V1 implements ControllerProviderInterface
|
|||||||
|
|
||||||
$ret['results'] = ['records' => [], 'stories' => []];
|
$ret['results'] = ['records' => [], 'stories' => []];
|
||||||
|
|
||||||
foreach ($search_result->getResults() as $record) {
|
foreach ($search_result->getResults() as $es_record) {
|
||||||
$record = new \record_adapter($app, $record->getDataboxId(), $record->getBaseId());
|
try {
|
||||||
|
$record = new \record_adapter($app, $es_record->getDataboxId(), $es_record->getRecordId());
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if ($record->is_grouping()) {
|
if ($record->is_grouping()) {
|
||||||
$ret['results']['stories'][] = $this->list_story($app, $request, $record);
|
$ret['results']['stories'][] = $this->list_story($app, $request, $record);
|
||||||
@@ -714,7 +719,13 @@ class V1 implements ControllerProviderInterface
|
|||||||
{
|
{
|
||||||
list($ret, $search_result) = $this->prepare_search_request($app, $request);
|
list($ret, $search_result) = $this->prepare_search_request($app, $request);
|
||||||
|
|
||||||
foreach ($search_result->getResults() as $record) {
|
foreach ($search_result->getResults() as $es_record) {
|
||||||
|
try {
|
||||||
|
$record = new \record_adapter($app, $es_record->getDataboxId(), $es_record->getRecordId());
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
$ret['results'][] = $this->list_record($app, $record);
|
$ret['results'][] = $this->list_record($app, $record);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,222 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file is part of Phraseanet
|
|
||||||
*
|
|
||||||
* (c) 2005-2015 Alchemy
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view the LICENSE
|
|
||||||
* file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Alchemy\Phrasea\Controller\Client;
|
|
||||||
|
|
||||||
use Alchemy\Phrasea\Model\Entities\Basket;
|
|
||||||
use Alchemy\Phrasea\Model\Entities\BasketElement;
|
|
||||||
use Doctrine\Common\Collections\ArrayCollection;
|
|
||||||
use Silex\Application;
|
|
||||||
use Silex\ControllerProviderInterface;
|
|
||||||
use Symfony\Component\HttpFoundation\Response;
|
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
|
||||||
|
|
||||||
class Baskets implements ControllerProviderInterface
|
|
||||||
{
|
|
||||||
public function connect(Application $app)
|
|
||||||
{
|
|
||||||
$app['controller.client.baskets'] = $this;
|
|
||||||
|
|
||||||
$controllers = $app['controllers_factory'];
|
|
||||||
|
|
||||||
$app['firewall']->addMandatoryAuthentication($controllers);
|
|
||||||
|
|
||||||
$controllers->match('/', 'controller.client.baskets:getBaskets')
|
|
||||||
->method('POST|GET')
|
|
||||||
->bind('get_client_baskets');
|
|
||||||
|
|
||||||
$controllers->post('/new/', 'controller.client.baskets:createBasket')
|
|
||||||
->bind('client_new_basket');
|
|
||||||
|
|
||||||
$controllers->post('/delete/', 'controller.client.baskets:deleteBasket')
|
|
||||||
->bind('client_delete_basket');
|
|
||||||
|
|
||||||
$controllers->post('/check/', 'controller.client.baskets:checkBaskets')
|
|
||||||
->bind('client_basket_check');
|
|
||||||
|
|
||||||
$controllers->post('/add-element/', 'controller.client.baskets:addElementToBasket')
|
|
||||||
->bind('client_basket_add_element');
|
|
||||||
|
|
||||||
$controllers->post('/delete-element/', 'controller.client.baskets:deleteBasketElement')
|
|
||||||
->bind('client_basket_delete_element');
|
|
||||||
|
|
||||||
return $controllers;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Deletes a basket element
|
|
||||||
*
|
|
||||||
* @param Application $app
|
|
||||||
* @param Request $request
|
|
||||||
* @return RedirectResponse
|
|
||||||
*/
|
|
||||||
public function deleteBasketElement(Application $app, Request $request)
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
$repository = $app['repo.basket-elements'];
|
|
||||||
$basketElement = $repository->findUserElement($request->request->get('p0'), $app['authentication']->getUser());
|
|
||||||
$app['orm.em']->remove($basketElement);
|
|
||||||
$app['orm.em']->flush();
|
|
||||||
} catch (\Exception $e) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return $app->redirectPath('get_client_baskets', [
|
|
||||||
'courChuId' => $request->request->get('courChuId', '')
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Deletes a basket
|
|
||||||
*
|
|
||||||
* @param Application $app
|
|
||||||
* @param Request $request
|
|
||||||
* @return RedirectResponse
|
|
||||||
*/
|
|
||||||
public function deleteBasket(Application $app, Request $request)
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
$basket = $app['converter.basket']->convert($request->request->get('courChuId'));
|
|
||||||
$app['acl.basket']->isOwner($basket, $app['authentication']->getUser());
|
|
||||||
|
|
||||||
$app['orm.em']->remove($basket);
|
|
||||||
$app['orm.em']->flush();
|
|
||||||
unset($basket);
|
|
||||||
} catch (\Exception $e) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return $app->redirectPath('get_client_baskets');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new basket
|
|
||||||
*
|
|
||||||
* @param Application $app
|
|
||||||
* @param Request $request
|
|
||||||
* @return RedirectResponse
|
|
||||||
*/
|
|
||||||
public function createBasket(Application $app, Request $request)
|
|
||||||
{
|
|
||||||
$basket = null;
|
|
||||||
|
|
||||||
try {
|
|
||||||
$basket = new Basket();
|
|
||||||
$basket->setName($request->request->get('p0'));
|
|
||||||
$basket->setUser($app['authentication']->getUser());
|
|
||||||
|
|
||||||
$app['orm.em']->persist($basket);
|
|
||||||
$app['orm.em']->flush();
|
|
||||||
|
|
||||||
} catch (\Exception $e) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return $app->redirectPath('get_client_baskets', [
|
|
||||||
'courChuId' => null !== $basket ? $basket->getId() : ''
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds an element to a basket
|
|
||||||
*
|
|
||||||
* @param Application $app
|
|
||||||
* @param Request $request
|
|
||||||
* @return RedirectResponse
|
|
||||||
*/
|
|
||||||
public function addElementToBasket(Application $app, Request $request)
|
|
||||||
{
|
|
||||||
$basket = $app['converter.basket']->convert($request->request->get('courChuId'));
|
|
||||||
$app['acl.basket']->isOwner($basket, $app['authentication']->getUser());
|
|
||||||
|
|
||||||
try {
|
|
||||||
$record = new \record_adapter($app, $request->request->get('sbas'), $request->request->get('p0'));
|
|
||||||
|
|
||||||
$basketElement = new BasketElement();
|
|
||||||
$basketElement->setRecord($record);
|
|
||||||
$basketElement->setBasket($basket);
|
|
||||||
$basket->addElement($basketElement);
|
|
||||||
|
|
||||||
$app['orm.em']->persist($basket);
|
|
||||||
|
|
||||||
$app['orm.em']->flush();
|
|
||||||
} catch (\Exception $e) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return $app->redirectPath('get_client_baskets', [
|
|
||||||
'courChuId' => $basket ? $basket->getId() : ''
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fetchs current user baskets
|
|
||||||
*
|
|
||||||
* @param Application $app
|
|
||||||
* @param Request $request
|
|
||||||
* @return Response
|
|
||||||
*/
|
|
||||||
public function getBaskets(Application $app, Request $request)
|
|
||||||
{
|
|
||||||
$selectedBasketId = trim($request->get('courChuId', ''));
|
|
||||||
$baskets = new ArrayCollection($app['repo.baskets']->findActiveByUser($app['authentication']->getUser()));
|
|
||||||
$selectedBasket = null;
|
|
||||||
|
|
||||||
if ('' === $selectedBasketId && $baskets->count() > 0) {
|
|
||||||
$selectedBasketId = $baskets->first()->getId();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ('' !== $selectedBasketId) {
|
|
||||||
$selectedBasket = $app['converter.basket']->convert($selectedBasketId);
|
|
||||||
$app['acl.basket']->isOwner($selectedBasket, $app['authentication']->getUser());
|
|
||||||
}
|
|
||||||
|
|
||||||
$basketCollections = $baskets->partition(function ($key, $basket) {
|
|
||||||
return null !== $basket->getPusher();
|
|
||||||
});
|
|
||||||
|
|
||||||
return $app['twig']->render('client/baskets.html.twig', [
|
|
||||||
'total_baskets' => $baskets->count(),
|
|
||||||
'user_baskets' => $basketCollections[1],
|
|
||||||
'recept_user_basket' => $basketCollections[0],
|
|
||||||
'selected_basket' => $selectedBasket,
|
|
||||||
'selected_basket_elements' => $selectedBasket ? $selectedBasket->getElements() : new ArrayCollection()
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks Update basket client
|
|
||||||
*
|
|
||||||
* @param Application $app
|
|
||||||
* @param Request $request
|
|
||||||
* @return JsonResponse
|
|
||||||
*/
|
|
||||||
public function checkBaskets(Application $app, Request $request)
|
|
||||||
{
|
|
||||||
$noview = 0;
|
|
||||||
$repository = $app['repo.baskets'];
|
|
||||||
|
|
||||||
/* @var $repository Alchemy\Phrasea\Model\Repositories\BasketRepository */
|
|
||||||
$baskets = $repository->findActiveByUser($app['authentication']->getUser());
|
|
||||||
|
|
||||||
foreach ($baskets as $basket) {
|
|
||||||
if (!$basket->getIsRead()) {
|
|
||||||
$noview++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $app->json([
|
|
||||||
'success' => true,
|
|
||||||
'message' => '',
|
|
||||||
'no_view' => $noview
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -42,189 +42,9 @@ class Root implements ControllerProviderInterface
|
|||||||
$controllers->get('/', 'controller.client:getClient')
|
$controllers->get('/', 'controller.client:getClient')
|
||||||
->bind('get_client');
|
->bind('get_client');
|
||||||
|
|
||||||
$controllers->get('/language/', 'controller.client:getClientLanguage')
|
|
||||||
->bind('get_client_language');
|
|
||||||
|
|
||||||
$controllers->get('/publications/', 'controller.client:getClientPublications')
|
|
||||||
->bind('client_publications_start_page');
|
|
||||||
|
|
||||||
$controllers->get('/help/', 'controller.client:getClientHelp')
|
|
||||||
->bind('client_help_start_page');
|
|
||||||
|
|
||||||
$controllers->post('/query/', 'controller.client:query')
|
|
||||||
->bind('client_query');
|
|
||||||
|
|
||||||
return $controllers;
|
return $controllers;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Queries database to fetch documents
|
|
||||||
*
|
|
||||||
* @param Application $app
|
|
||||||
* @param Request $request
|
|
||||||
* @return Response
|
|
||||||
*/
|
|
||||||
public function query(Application $app, Request $request)
|
|
||||||
{
|
|
||||||
$query = $this->buildQueryFromRequest($request);
|
|
||||||
$displayMode = explode('X', $request->request->get('mod', '3X6'));
|
|
||||||
|
|
||||||
if (count($displayMode) === 1) {
|
|
||||||
$modRow = (int) ($displayMode[0]);
|
|
||||||
$modCol = 1;
|
|
||||||
} else {
|
|
||||||
$modRow = (int) ($displayMode[0]);
|
|
||||||
$modCol = (int) ($displayMode[1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
$perPage = $modCol * $modRow;
|
|
||||||
|
|
||||||
$options = SearchEngineOptions::fromRequest($app, $request);
|
|
||||||
|
|
||||||
$currentPage = (int) $request->request->get('pag', 0);
|
|
||||||
|
|
||||||
if ($currentPage < 1) {
|
|
||||||
$app['phraseanet.SE']->resetCache();
|
|
||||||
$currentPage = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
$result = $app['phraseanet.SE']->query($query, ($currentPage - 1) * $perPage, $perPage, $options);
|
|
||||||
|
|
||||||
$app['manipulator.user']->logQuery($app['authentication']->getUser(), $result->getQuery());
|
|
||||||
|
|
||||||
if ($app['settings']->getUserSetting($app['authentication']->getUser(), 'start_page') === 'LAST_QUERY') {
|
|
||||||
$app['manipulator.user']->setUserSetting($app['authentication']->getUser(), 'start_page_query', $query);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($options->getDataboxes() as $databox) {
|
|
||||||
$colls = array_map(function (\collection $collection) {
|
|
||||||
return $collection->get_coll_id();
|
|
||||||
}, array_filter($options->getCollections(), function (\collection $collection) use ($databox) {
|
|
||||||
return $collection->get_databox()->get_sbas_id() == $databox->get_sbas_id();
|
|
||||||
}));
|
|
||||||
|
|
||||||
$app['phraseanet.SE.logger']->log($databox, $result->getQuery(), $result->getTotal(), $colls);
|
|
||||||
}
|
|
||||||
|
|
||||||
$searchData = $result->getResults();
|
|
||||||
|
|
||||||
if (count($searchData) === 0 ) {
|
|
||||||
return new Response($app['twig']->render("client/help.html.twig"));
|
|
||||||
}
|
|
||||||
|
|
||||||
$resultData = [];
|
|
||||||
|
|
||||||
foreach ($searchData as $record) {
|
|
||||||
try {
|
|
||||||
$record->get_subdef('document');
|
|
||||||
$lightInfo = $app['twig']->render('common/technical_datas.html.twig', ['record' => $record]);
|
|
||||||
} catch (\Exception $e) {
|
|
||||||
$lightInfo = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
$caption = $app['twig']->render('common/caption.html.twig', ['view' => 'answer', 'record' => $record]);
|
|
||||||
|
|
||||||
$docType = $record->get_type();
|
|
||||||
$isVideo = ($docType == 'video');
|
|
||||||
$isAudio = ($docType == 'audio');
|
|
||||||
$isImage = ($docType == 'image');
|
|
||||||
$isDocument = ($docType == 'document');
|
|
||||||
|
|
||||||
if (!$isVideo && !$isAudio) {
|
|
||||||
$isImage = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
$canDownload = $app['acl']->get($app['authentication']->getUser())->has_right_on_base($record->get_base_id(), 'candwnldpreview') ||
|
|
||||||
$app['acl']->get($app['authentication']->getUser())->has_right_on_base($record->get_base_id(), 'candwnldhd') ||
|
|
||||||
$app['acl']->get($app['authentication']->getUser())->has_right_on_base($record->get_base_id(), 'cancmd');
|
|
||||||
|
|
||||||
try {
|
|
||||||
$previewExists = $record->get_preview()->is_physically_present();
|
|
||||||
} catch (\Exception $e) {
|
|
||||||
$previewExists = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$resultData[] = [
|
|
||||||
'record' => $record,
|
|
||||||
'mini_logo' => \collection::getLogo($record->get_base_id(), $app),
|
|
||||||
'preview_exists' => $previewExists,
|
|
||||||
'light_info' => $lightInfo,
|
|
||||||
'caption' => $caption,
|
|
||||||
'is_video' => $isVideo,
|
|
||||||
'is_audio' => $isAudio,
|
|
||||||
'is_image' => $isImage,
|
|
||||||
'is_document' => $isDocument,
|
|
||||||
'can_download' => $canDownload,
|
|
||||||
'can_add_to_basket' => $app['acl']->get($app['authentication']->getUser())->has_right_on_base($record->get_base_id(), 'canputinalbum')
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
return new Response($app['twig']->render("client/answers.html.twig", [
|
|
||||||
'mod_col' => $modCol,
|
|
||||||
'mod_row' => $modRow,
|
|
||||||
'result_data' => $resultData,
|
|
||||||
'per_page' => $perPage,
|
|
||||||
'search_engine' => $app['phraseanet.SE'],
|
|
||||||
'search_engine_option' => $options->serialize(),
|
|
||||||
'history' => \queries::history($app, $app['authentication']->getUser()->getId()),
|
|
||||||
'result' => $result,
|
|
||||||
'proposals' => $currentPage === 1 ? $result->getProposals() : null,
|
|
||||||
'help' => count($resultData) === 0 ? $this->getHelpStartPage($app) : '',
|
|
||||||
]));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets help start page
|
|
||||||
*
|
|
||||||
* @param Application $app
|
|
||||||
* @param Request $request
|
|
||||||
* @return Response
|
|
||||||
*/
|
|
||||||
public function getClientHelp(Application $app, Request $request)
|
|
||||||
{
|
|
||||||
return new Response($this->getHelpStartPage($app));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets client publication start page
|
|
||||||
*
|
|
||||||
* @param Application $app
|
|
||||||
* @param Request $request
|
|
||||||
* @return Response
|
|
||||||
*/
|
|
||||||
public function getClientPublications(Application $app, Request $request)
|
|
||||||
{
|
|
||||||
return new Response($this->getPublicationStartPage($app));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets client language
|
|
||||||
*
|
|
||||||
* @param Application $app
|
|
||||||
* @param Request $request
|
|
||||||
* @return JsonResponse
|
|
||||||
*/
|
|
||||||
public function getClientLanguage(Application $app, Request $request)
|
|
||||||
{
|
|
||||||
$out = [];
|
|
||||||
$out['createWinInvite'] = $app->trans('paniers:: Quel nom souhaitez vous donner a votre panier ?');
|
|
||||||
$out['chuNameEmpty'] = $app->trans('paniers:: Quel nom souhaitez vous donner a votre panier ?');
|
|
||||||
$out['noDLok'] = $app->trans('export:: aucun document n\'est disponible au telechargement');
|
|
||||||
$out['confirmRedirectAuth'] = $app->trans('invite:: Redirection vers la zone d\'authentification, cliquez sur OK pour continuer ou annulez');
|
|
||||||
$out['serverName'] = $app['conf']->get('servername');
|
|
||||||
$out['serverError'] = $app->trans('phraseanet::erreur: Une erreur est survenue, si ce probleme persiste, contactez le support technique');
|
|
||||||
$out['serverTimeout'] = $app->trans('phraseanet::erreur: La connection au serveur Phraseanet semble etre indisponible');
|
|
||||||
$out['serverDisconnected'] = $app->trans('phraseanet::erreur: Votre session est fermee, veuillez vous re-authentifier');
|
|
||||||
$out['confirmDelBasket'] = $app->trans('paniers::Vous etes sur le point de supprimer ce panier. Cette action est irreversible. Souhaitez-vous continuer ?');
|
|
||||||
$out['annuler'] = $app->trans('boutton::annuler');
|
|
||||||
$out['fermer'] = $app->trans('boutton::fermer');
|
|
||||||
$out['renewRss'] = $app->trans('boutton::renouveller');
|
|
||||||
$out['print'] = $app->trans('Print');
|
|
||||||
$out['no_basket'] = $app->trans('Please create a basket before adding an element');
|
|
||||||
|
|
||||||
return $app->json($out);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets client main page
|
* Gets client main page
|
||||||
*
|
*
|
||||||
@@ -234,260 +54,6 @@ class Root implements ControllerProviderInterface
|
|||||||
*/
|
*/
|
||||||
public function getClient(Application $app, Request $request)
|
public function getClient(Application $app, Request $request)
|
||||||
{
|
{
|
||||||
$app['session']->getFlashBag()->add('step_by_step', '');
|
return $app->redirect($app->path('prod', array('client')));
|
||||||
|
|
||||||
try {
|
|
||||||
\Session_Logger::updateClientInfos($app, 2);
|
|
||||||
} catch (SessionNotFound $e) {
|
|
||||||
return $app->redirectPath('logout');
|
|
||||||
}
|
|
||||||
$renderTopics = '';
|
|
||||||
|
|
||||||
if ($app['conf']->get(['registry', 'classic', 'render-topics']) == 'popups') {
|
|
||||||
$renderTopics = \queries::dropdown_topics($app['translator'], $app['locale']);
|
|
||||||
} elseif ($app['conf']->get(['registry', 'classic', 'render-topics']) == 'tree') {
|
|
||||||
$renderTopics = \queries::tree_topics($app['locale']);
|
|
||||||
}
|
|
||||||
|
|
||||||
return new Response($app['twig']->render('client/index.html.twig', [
|
|
||||||
'last_action' => !$app['authentication']->getUser()->isGuest() && false !== $request->cookies->has('last_act') ? $request->cookies->has('last_act') : null,
|
|
||||||
'phrasea_home' => $this->getDefaultClientStartPage($app),
|
|
||||||
'render_topics' => $renderTopics,
|
|
||||||
'grid_properties' => $this->getGridProperty(),
|
|
||||||
'search_order' => SearchEngineOptions::SORT_MODE_DESC,
|
|
||||||
'storage_access' => $this->getDocumentStorageAccess($app),
|
|
||||||
'tabs_setup' => $this->getTabSetup($app),
|
|
||||||
'module' => 'client',
|
|
||||||
'menubar' => $app['twig']->render('common/menubar.html.twig', ['module' => 'client']),
|
|
||||||
'css_file' => $this->getCssFile($app),
|
|
||||||
'basket_status' => $app['settings']->getUserSetting($app['authentication']->getUser(), 'client_basket_status', '1'),
|
|
||||||
'mod_pres' => $app['settings']->getUserSetting($app['authentication']->getUser(), 'client_view', '' ),
|
|
||||||
'start_page' => $app['settings']->getUserSetting($app['authentication']->getUser(), 'start_page'),
|
|
||||||
'start_page_query' => $app['settings']->getUserSetting($app['authentication']->getUser(), 'start_page_query', '')
|
|
||||||
]));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets display grid property
|
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
private function getGridProperty()
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
['w' => '3', 'h' => '2', 'name' => '3*2', 'selected' => '0'],
|
|
||||||
['w' => '5', 'h' => '4', 'name' => '5*4', 'selected' => '0'],
|
|
||||||
['w' => '4', 'h' => '10', 'name' => '4*10', 'selected' => '0'],
|
|
||||||
['w' => '6', 'h' => '3', 'name' => '6*3', 'selected' => '1'],
|
|
||||||
['w' => '8', 'h' => '4', 'name' => '8*4', 'selected' => '0'],
|
|
||||||
['w' => '1', 'h' => '10', 'name' => 'list*10', 'selected' => '0'],
|
|
||||||
['w' => '1', 'h' => '100', 'name' => 'list*100', 'selected' => '0']
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets databoxes and collections the current user can access
|
|
||||||
*
|
|
||||||
* @param Application $app
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
private function getDocumentStorageAccess(Application $app)
|
|
||||||
{
|
|
||||||
$allDataboxes = $allCollections = [];
|
|
||||||
|
|
||||||
foreach ($app['acl']->get($app['authentication']->getUser())->get_granted_sbas() as $databox) {
|
|
||||||
if (count($app['phraseanet.appbox']->get_databoxes()) > 0) {
|
|
||||||
$allDataboxes[$databox->get_sbas_id()] = ['databox' => $databox, 'collections' => []];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (count($databox->get_collections()) > 0) {
|
|
||||||
foreach ($app['acl']->get($app['authentication']->getUser())->get_granted_base([], [$databox->get_sbas_id()]) as $coll) {
|
|
||||||
$allDataboxes[$databox->get_sbas_id()]['collections'][$coll->get_base_id()] = $coll;
|
|
||||||
$allCollections[$coll->get_base_id()] = $coll;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return ['databoxes' => $allDataboxes, 'collections' => $allCollections];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets Client Tab Setup
|
|
||||||
*
|
|
||||||
* @param Application $app
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
private function getTabSetup(Application $app)
|
|
||||||
{
|
|
||||||
$tong = [
|
|
||||||
$app['conf']->get(['registry', 'classic', 'search-tab']) => 1,
|
|
||||||
$app['conf']->get(['registry', 'classic', 'adv-search-tab']) => 2,
|
|
||||||
$app['conf']->get(['registry', 'classic', 'topics-tab']) => 3
|
|
||||||
];
|
|
||||||
|
|
||||||
unset($tong[0]);
|
|
||||||
|
|
||||||
if (count($tong) == 0) {
|
|
||||||
$tong = [1 => 1];
|
|
||||||
}
|
|
||||||
|
|
||||||
ksort($tong);
|
|
||||||
|
|
||||||
return $tong;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the CSS file used by end user
|
|
||||||
*
|
|
||||||
* @param Application $app
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
private function getCssFile(Application $app)
|
|
||||||
{
|
|
||||||
$cssPath = __DIR__ . '/../../../../../www/skins/client/';
|
|
||||||
|
|
||||||
$css = [];
|
|
||||||
$cssFile = $app['settings']->getUserSetting($app['authentication']->getUser(), 'client_css');
|
|
||||||
|
|
||||||
$finder = new Finder();
|
|
||||||
|
|
||||||
$iterator = $finder
|
|
||||||
->directories()
|
|
||||||
->depth(0)
|
|
||||||
->filter(function (\SplFileInfo $fileinfo) {
|
|
||||||
return ctype_xdigit($fileinfo->getBasename());
|
|
||||||
})
|
|
||||||
->in($cssPath);
|
|
||||||
|
|
||||||
foreach ($iterator as $dir) {
|
|
||||||
$baseName = $dir->getBaseName();
|
|
||||||
$css[$baseName] = $baseName;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((!$cssFile || !isset($css[$cssFile])) && isset($css['000000'])) {
|
|
||||||
$cssFile = '000000';
|
|
||||||
}
|
|
||||||
|
|
||||||
return sprintf('skins/client/%s/clientcolor.css', $cssFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Forges query from request parameters
|
|
||||||
*
|
|
||||||
* @param Request $request
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
private function buildQueryFromRequest(Request $request)
|
|
||||||
{
|
|
||||||
$query = '';
|
|
||||||
|
|
||||||
if ('' !== $clientQuery = trim($request->request->get('qry', ''))) {
|
|
||||||
$query .= $clientQuery;
|
|
||||||
}
|
|
||||||
|
|
||||||
$opAdv = $request->request->get('opAdv', []);
|
|
||||||
$queryAdv = $request->request->get('qryAdv', []);
|
|
||||||
|
|
||||||
if (count($opAdv) > 0 && count($opAdv) == count($queryAdv)) {
|
|
||||||
foreach ($opAdv as $opId => $op) {
|
|
||||||
if (isset($queryAdv[$opId]) && ($advancedQuery = trim($queryAdv[$opId]) !== '')) {
|
|
||||||
if ($query === $clientQuery) {
|
|
||||||
$query = '(' . $clientQuery . ')';
|
|
||||||
}
|
|
||||||
|
|
||||||
$query .= ' ' . $op . ' (' . $advancedQuery . ')';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (empty($query)) {
|
|
||||||
$query = 'all';
|
|
||||||
}
|
|
||||||
|
|
||||||
return $query;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets default start home page for client
|
|
||||||
*
|
|
||||||
* @param Application $app
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
private function getDefaultClientStartPage(Application $app)
|
|
||||||
{
|
|
||||||
$startPage = strtoupper($app['settings']->getUserSetting($app['authentication']->getUser(), 'start_page'));
|
|
||||||
|
|
||||||
if ($startPage === 'PUBLI') {
|
|
||||||
return $this->getPublicationStartPage($app);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (in_array($startPage, ['QUERY', 'LAST_QUERY'])) {
|
|
||||||
return $this->getQueryStartPage($app);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->getHelpStartPage($app);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets query start home page for client
|
|
||||||
*
|
|
||||||
* @param Application $app
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
private function getQueryStartPage(Application $app)
|
|
||||||
{
|
|
||||||
$collections = $queryParameters = [];
|
|
||||||
|
|
||||||
$searchSet = json_decode($app['settings']->getUserSetting($app['authentication']->getUser(), 'search'));
|
|
||||||
|
|
||||||
if ($searchSet && isset($searchSet->bases)) {
|
|
||||||
foreach ($searchSet->bases as $bases) {
|
|
||||||
$collections = array_merge($collections, $bases);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$collections = array_keys($app['acl']->get($app['authentication']->getUser())->get_granted_base());
|
|
||||||
}
|
|
||||||
|
|
||||||
$queryParameters["mod"] = $app['settings']->getUserSetting($app['authentication']->getUser(), 'client_view', '3X6');
|
|
||||||
$queryParameters["bas"] = $collections;
|
|
||||||
$queryParameters["qry"] = $app['settings']->getUserSetting($app['authentication']->getUser(), 'start_page_query', 'all');
|
|
||||||
$queryParameters["pag"] = 0;
|
|
||||||
$queryParameters["search_type"] = SearchEngineOptions::RECORD_RECORD;
|
|
||||||
$queryParameters["qryAdv"] = '';
|
|
||||||
$queryParameters["opAdv"] = [];
|
|
||||||
$queryParameters["status"] = [];
|
|
||||||
$queryParameters["recordtype"] = SearchEngineOptions::TYPE_ALL;
|
|
||||||
$queryParameters["sort"] = '';
|
|
||||||
$queryParameters["infield"] = [];
|
|
||||||
$queryParameters["ord"] = SearchEngineOptions::SORT_MODE_DESC;
|
|
||||||
|
|
||||||
$subRequest = Request::create('/client/query/', 'POST', $queryParameters);
|
|
||||||
|
|
||||||
return $this->query($app, $subRequest)->getContent();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets publications start home page for client
|
|
||||||
*
|
|
||||||
* @param Application $app
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
private function getPublicationStartPage(Application $app)
|
|
||||||
{
|
|
||||||
return $app['twig']->render('client/home_inter_pub_basket.html.twig', [
|
|
||||||
'feeds' => Aggregate::createFromUser($app, $app['authentication']->getUser()),
|
|
||||||
'image_size' => (int) $app['settings']->getUserSetting($app['authentication']->getUser(), 'images_size')
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get help start home page for client
|
|
||||||
*
|
|
||||||
* @param Application $app
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
private function getHelpStartPage(Application $app)
|
|
||||||
{
|
|
||||||
return $app['twig']->render('client/help.html.twig');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -221,26 +221,9 @@ class Query implements ControllerProviderInterface
|
|||||||
|
|
||||||
return $app->json([
|
return $app->json([
|
||||||
'current' => $app['twig']->render('prod/preview/result_train.html.twig', [
|
'current' => $app['twig']->render('prod/preview/result_train.html.twig', [
|
||||||
'records' => $record->get_train($pos, $query, $app['phraseanet.SE'], $options),
|
'records' => $record->get_train(),
|
||||||
'selected' => $pos
|
'selected' => $pos
|
||||||
])
|
])
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get a preview reg train
|
|
||||||
*
|
|
||||||
* @param Application $app
|
|
||||||
* @param Request $request
|
|
||||||
* @return Response
|
|
||||||
*/
|
|
||||||
public function queryRegTrain(Application $app, Request $request)
|
|
||||||
{
|
|
||||||
$record = new \record_preview($app, 'REG', $request->request->get('pos'), $request->request->get('cont'));
|
|
||||||
|
|
||||||
return new Response($app['twig']->render('prod/preview/reg_train.html.twig', [
|
|
||||||
'container_records' => $record->get_container()->get_children(),
|
|
||||||
'record' => $record
|
|
||||||
]));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -80,22 +80,20 @@ class record_preview extends record_adapter
|
|||||||
|
|
||||||
protected $original_item;
|
protected $original_item;
|
||||||
|
|
||||||
/**
|
protected $pos;
|
||||||
*
|
protected$search_engine;
|
||||||
* @param Application $app
|
protected $query;
|
||||||
* @param string $env
|
protected $options;
|
||||||
* @param integer $pos
|
|
||||||
* @param mixed $contId
|
|
||||||
* @param SearchEngineInterface $search_engine
|
|
||||||
* @param string $query
|
|
||||||
*
|
|
||||||
* @return record_preview
|
|
||||||
*/
|
|
||||||
public function __construct(Application $app, $env, $pos, $contId, SearchEngineInterface $search_engine = null, $query = '', SearchEngineOptions $options = null)
|
public function __construct(Application $app, $env, $pos, $contId, SearchEngineInterface $search_engine = null, $query = '', SearchEngineOptions $options = null)
|
||||||
{
|
{
|
||||||
$number = null;
|
$number = null;
|
||||||
$this->env = $env;
|
$this->env = $env;
|
||||||
$this->app = $app;
|
$this->app = $app;
|
||||||
|
$this->pos = $pos;
|
||||||
|
$this->searchEngine = $search_engine;
|
||||||
|
$this->query = $query;
|
||||||
|
$this->options = $options;
|
||||||
|
|
||||||
switch ($env) {
|
switch ($env) {
|
||||||
case "RESULT":
|
case "RESULT":
|
||||||
@@ -204,7 +202,7 @@ class record_preview extends record_adapter
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function get_train($pos = 0, $query = '', SearchEngineInterface $search_engine = null, SearchEngineOptions $options)
|
public function get_train()
|
||||||
{
|
{
|
||||||
if ($this->train) {
|
if ($this->train) {
|
||||||
return $this->train;
|
return $this->train;
|
||||||
@@ -213,8 +211,8 @@ class record_preview extends record_adapter
|
|||||||
switch ($this->env) {
|
switch ($this->env) {
|
||||||
case 'RESULT':
|
case 'RESULT':
|
||||||
$perPage = 56;
|
$perPage = 56;
|
||||||
$index = ($pos - 3) < 0 ? 0 : ($pos - 3);
|
$index = ($this->pos - 3) < 0 ? 0 : ($this->pos - 3);
|
||||||
$results = $search_engine->query($query, $index, $perPage, $options);
|
$results = $this->searchEngine->query($this->query, $index, $perPage, $this->option);
|
||||||
|
|
||||||
$this->train = $results->getResults()->toArray();
|
$this->train = $results->getResults()->toArray();
|
||||||
break;
|
break;
|
||||||
|
@@ -10,6 +10,7 @@ use Alchemy\Phrasea\Authentication\Context;
|
|||||||
use Alchemy\Phrasea\Model\Entities\LazaretSession;
|
use Alchemy\Phrasea\Model\Entities\LazaretSession;
|
||||||
use Alchemy\Phrasea\Model\Entities\Task;
|
use Alchemy\Phrasea\Model\Entities\Task;
|
||||||
use Alchemy\Phrasea\Model\Entities\User;
|
use Alchemy\Phrasea\Model\Entities\User;
|
||||||
|
use Alchemy\Phrasea\SearchEngine\SearchEngineOptions;
|
||||||
use Doctrine\Common\Collections\ArrayCollection;
|
use Doctrine\Common\Collections\ArrayCollection;
|
||||||
use Guzzle\Common\Exception\GuzzleException;
|
use Guzzle\Common\Exception\GuzzleException;
|
||||||
use Rhumsaa\Uuid\Uuid;
|
use Rhumsaa\Uuid\Uuid;
|
||||||
@@ -729,7 +730,7 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
|
|||||||
|
|
||||||
self::$DI['record_story_1'];
|
self::$DI['record_story_1'];
|
||||||
|
|
||||||
self::$DI['client']->request('POST', '/api/v1/search/', $this->getParameters(['search_type' => 1]), [], ['HTTP_Accept' => $this->getAcceptMimeType()]);
|
self::$DI['client']->request('POST', '/api/v1/search/', $this->getParameters(['search_type' => SearchEngineOptions::RECORD_GROUPING]), [], ['HTTP_Accept' => $this->getAcceptMimeType()]);
|
||||||
$content = $this->unserialize(self::$DI['client']->getResponse()->getContent());
|
$content = $this->unserialize(self::$DI['client']->getResponse()->getContent());
|
||||||
|
|
||||||
$this->evaluateResponse200(self::$DI['client']->getResponse());
|
$this->evaluateResponse200(self::$DI['client']->getResponse());
|
||||||
@@ -1484,8 +1485,8 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
|
|||||||
$route = '/api/v1/records/add/';
|
$route = '/api/v1/records/add/';
|
||||||
|
|
||||||
$file = [
|
$file = [
|
||||||
new \Symfony\Component\HttpFoundation\File\UploadedFile(self::$DI['app']['root.path'].'/tests/files/' , 'recta_logo.gif'),
|
new \Symfony\Component\HttpFoundation\File\UploadedFile(self::$DI['app']['root.path'].'/tests/files/recta_logo.gif' , 'recta_logo.gif'),
|
||||||
new \Symfony\Component\HttpFoundation\File\UploadedFile(self::$DI['app']['root.path'].'/tests/files/', 'rectb_logo.gif'),
|
new \Symfony\Component\HttpFoundation\File\UploadedFile(self::$DI['app']['root.path'].'/tests/files/rectb_logo.gif', 'rectb_logo.gif'),
|
||||||
];
|
];
|
||||||
|
|
||||||
self::$DI['client']->request('POST', $route, $this->getParameters($this->getAddRecordParameters()), ['file' => $file], ['HTTP_Accept' => $this->getAcceptMimeType()]);
|
self::$DI['client']->request('POST', $route, $this->getParameters($this->getAddRecordParameters()), ['file' => $file], ['HTTP_Accept' => $this->getAcceptMimeType()]);
|
||||||
|
@@ -1,88 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace Alchemy\Tests\Phrasea\Controller\Client;
|
|
||||||
|
|
||||||
class BasketsTest extends \PhraseanetAuthenticatedWebTestCase
|
|
||||||
{
|
|
||||||
protected $client;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers Alchemy\Phrasea\Controller\Client\Baskets::connect
|
|
||||||
* @covers Alchemy\Phrasea\Controller\Client\Baskets::call
|
|
||||||
* @covers Alchemy\Phrasea\Controller\Client\Baskets::getBaskets
|
|
||||||
*/
|
|
||||||
public function testGetClientBaskets()
|
|
||||||
{
|
|
||||||
self::$DI['client']->request("GET", "/client/baskets/");
|
|
||||||
$this->assertTrue(self::$DI['client']->getResponse()->isOk());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers Alchemy\Phrasea\Controller\Client\Baskets::getBaskets
|
|
||||||
*/
|
|
||||||
public function testPostClientBaskets()
|
|
||||||
{
|
|
||||||
self::$DI['client']->request("POST", "/client/baskets/");
|
|
||||||
$this->assertTrue(self::$DI['client']->getResponse()->isOk());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers Alchemy\Phrasea\Controller\Client\Baskets::createBasket
|
|
||||||
*/
|
|
||||||
public function testCreateBasket()
|
|
||||||
{
|
|
||||||
$nbBasketsBefore = self::$DI['app']['orm.em']->createQuery('SELECT COUNT(b.id) FROM Phraseanet:Basket b')->getSingleScalarResult();
|
|
||||||
self::$DI['client']->request("POST", "/client/baskets/new/", ['p0' => 'hello']);
|
|
||||||
$this->assertTrue(self::$DI['client']->getResponse()->isRedirect());
|
|
||||||
$nbBasketsAfter = self::$DI['app']['orm.em']->createQuery('SELECT COUNT(b.id) FROM Phraseanet:Basket b')->getSingleScalarResult();
|
|
||||||
$this->assertGreaterThan($nbBasketsBefore,$nbBasketsAfter);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers Alchemy\Phrasea\Controller\Client\Baskets::addElementToBasket
|
|
||||||
*/
|
|
||||||
public function testAddElementToBasket()
|
|
||||||
{
|
|
||||||
$basket = self::$DI['app']['orm.em']->find('Phraseanet:Basket', 1);
|
|
||||||
self::$DI['client']->request("POST", "/client/baskets/add-element/", [
|
|
||||||
'courChuId' => $basket->getId(),
|
|
||||||
'sbas' => self::$DI['record_1']->get_sbas_id(),
|
|
||||||
'p0' => self::$DI['record_1']->get_record_id()
|
|
||||||
]);
|
|
||||||
$this->assertTrue(self::$DI['client']->getResponse()->isRedirect());
|
|
||||||
$basket = self::$DI['app']['orm.em']->getRepository('Phraseanet:Basket')->find($basket->getId());
|
|
||||||
$this->assertGreaterThan(0, $basket->getElements()->count());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers Alchemy\Phrasea\Controller\Client\Baskets::deleteBasket
|
|
||||||
*/
|
|
||||||
public function testDeleteBasket()
|
|
||||||
{
|
|
||||||
self::$DI['client']->request("POST", "/client/baskets/delete/", [
|
|
||||||
'courChuId' => 1
|
|
||||||
]);
|
|
||||||
$this->assertTrue(self::$DI['client']->getResponse()->isRedirect());
|
|
||||||
try {
|
|
||||||
$basket = self::$DI['app']['orm.em']->getRepository('Phraseanet:Basket')->find(1);
|
|
||||||
$this->fail('Basket is not deleted');
|
|
||||||
} catch (\Exception $e) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers Alchemy\Phrasea\Controller\Client\Baskets::deleteBasketElement
|
|
||||||
*/
|
|
||||||
public function testDeleteBasketElement()
|
|
||||||
{
|
|
||||||
$basket = self::$DI['app']['orm.em']->find('Phraseanet:Basket', 1);
|
|
||||||
$basketElement = self::$DI['app']['orm.em']->find('Phraseanet:BasketElement', 1);
|
|
||||||
|
|
||||||
self::$DI['client']->request("POST", "/client/baskets/delete-element/", [
|
|
||||||
'p0' => $basketElement->getId()
|
|
||||||
]);
|
|
||||||
$this->assertTrue(self::$DI['client']->getResponse()->isRedirect());
|
|
||||||
$this->assertEquals(0, $basket->getElements()->count());
|
|
||||||
}
|
|
||||||
}
|
|
@@ -10,6 +10,6 @@ class RootTest extends \PhraseanetAuthenticatedWebTestCase
|
|||||||
{
|
{
|
||||||
$this->authenticate(self::$DI['app']);
|
$this->authenticate(self::$DI['app']);
|
||||||
self::$DI['client']->request("GET", "/client/");
|
self::$DI['client']->request("GET", "/client/");
|
||||||
$this->assertTrue(self::$DI['client']->getResponse()->isOk());
|
$this->assertTrue(self::$DI['client']->getResponse()->isRedirect());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -54,18 +54,4 @@ class QueryTest extends \PhraseanetAuthenticatedWebTestCase
|
|||||||
$this->assertArrayHasKey('current', $datas);
|
$this->assertArrayHasKey('current', $datas);
|
||||||
unset($response, $datas);
|
unset($response, $datas);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers Alchemy\Phrasea\Controller\Prod\Query::queryRegTrain
|
|
||||||
*/
|
|
||||||
public function testQueryRegTrain()
|
|
||||||
{
|
|
||||||
self::$DI['client']->request('POST', '/prod/query/reg-train/', [
|
|
||||||
'pos' => 1,
|
|
||||||
'cont' => self::$DI['record_story_1']->get_serialize_key()
|
|
||||||
]);
|
|
||||||
$response = self::$DI['client']->getResponse();
|
|
||||||
$this->assertTrue($response->isOk());
|
|
||||||
unset($response);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -96,7 +96,7 @@ class UploadTest extends \PhraseanetAuthenticatedWebTestCase
|
|||||||
$this->assertTrue($record->get_thumbnail()->is_physically_present());
|
$this->assertTrue($record->get_thumbnail()->is_physically_present());
|
||||||
$fields = $record->get_caption()->get_fields(['FileName']);
|
$fields = $record->get_caption()->get_fields(['FileName']);
|
||||||
$field = array_pop($fields);
|
$field = array_pop($fields);
|
||||||
$this->assertEquals($field->get_serialized_values(), 'KIKOO.JPG');
|
$this->assertEquals($field->get_serialized_values(), 'KIKOO');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user