Extract repository and factory classes for collections

This commit is contained in:
Thibaud Fabre
2015-07-08 19:54:06 +02:00
parent dd73d6dae2
commit ea6a4fdbf0
43 changed files with 971 additions and 428 deletions

View File

@@ -0,0 +1,87 @@
<?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\Collection;
use Doctrine\Common\Cache\Cache;
final class CachedCollectionRepository implements CollectionRepository
{
/** @var CollectionRepository */
private $repository;
/** @var Cache */
private $cache;
/** @var string */
private $cacheKey;
public function __construct(CollectionRepository $repository, Cache $cache, $cacheKey)
{
$this->repository = $repository;
$this->cache = $cache;
$this->cacheKey = $cacheKey;
}
/**
* @param int $databoxId
* @return \collection[]
*/
public function findAllByDatabox($databoxId)
{
$cacheKey = hash('sha256', $this->cacheKey . '.findAll.' . $databoxId);
$collections = $this->cache->fetch($cacheKey);
if ($collections === false) {
$collections = $this->repository->findAllByDatabox($databoxId);
$this->save($cacheKey, $collections);
}
return $collections;
}
/**
* @param int $baseId
* @return \collection|null
*/
public function find($baseId)
{
$cacheKey = hash('sha256', $this->cacheKey . '.find.' . $baseId);
$collection = $this->cache->fetch($cacheKey);
if ($collection === false) {
$collection = $this->repository->find($baseId);
$this->save($cacheKey, $collection);
}
return $collection;
}
/**
* @param int $databoxId
* @param int $collectionId
* @return \collection|null
*/
public function findByCollectionId($databoxId, $collectionId)
{
$cacheKey = hash('sha256', $this->cacheKey . '.findByCollection.' . $databoxId . $collectionId);
$collection = $this->cache->fetch($cacheKey);
if ($collection === false) {
$collection = $this->repository->findByCollectionId($databoxId, $collectionId);
$this->save($cacheKey, $collection);
}
return $collection;
}
private function save($key, $value)
{
$this->cache->save($key, $value);
}
}

View File

@@ -0,0 +1,55 @@
<?php
namespace Alchemy\Phrasea\Collection;
use Alchemy\Phrasea\Application;
use Assert\Assertion;
class CollectionFactory
{
/**
* @var Application
*/
private $app;
/**
* @param Application $application
*/
public function __construct(Application $application)
{
$this->app = $application;
}
/**
* @param CollectionReference $reference
* @param array $row
* @return \collection
*/
public function create(CollectionReference $reference, array $row)
{
return new \collection($this->app, $reference->getBaseId(), $reference, $row);
}
/**
* @param CollectionReference[] $collectionReferences
* @param array $rows
* @return array
*/
public function createMany($collectionReferences, array $rows)
{
Assertion::allIsInstanceOf($collectionReferences, CollectionReference::class);
$collections = [];
$indexedReferences = [];
foreach ($collectionReferences as $reference) {
$indexedReferences[$reference->getCollectionId()] = $reference;
}
foreach ($rows as $row) {
$collections[$row['coll_id']] = $this->create($indexedReferences[$row['coll_id']], $row);
}
return $collections;
}
}

View File

@@ -0,0 +1,144 @@
<?php
namespace Alchemy\Phrasea\Collection;
class CollectionReference
{
/**
* @var int
*/
private $baseId;
/**
* @var int
*/
private $databoxId;
/**
* @var int
*/
private $collectionId;
/**
* @var int
*/
private $displayIndex;
/**
* @var bool
*/
private $isActive;
/**
* @var string
*/
private $alias;
/**
* @param int $baseId
* @param int $databoxId
* @param int $collectionId
* @param int $displayIndex
* @param bool $isActive
* @param string $alias
*/
public function __construct($baseId, $databoxId, $collectionId, $displayIndex, $isActive, $alias)
{
$this->baseId = (int) $baseId;
$this->databoxId = (int) $databoxId;
$this->collectionId = (int) $collectionId;
$this->displayIndex = (int) $displayIndex;
$this->isActive = (bool) $isActive;
$this->alias = (string) $alias;
}
/**
* @return int
*/
public function getDataboxId()
{
return $this->databoxId;
}
/**
* @return int
*/
public function getBaseId()
{
return $this->baseId;
}
/**
* @return int
*/
public function getCollectionId()
{
return $this->collectionId;
}
/**
* @return int
*/
public function getDisplayIndex()
{
return $this->displayIndex;
}
/**
* @param int $index
* @return $this
*/
public function setDisplayIndex($index)
{
$this->displayIndex = (int) $index;
return $this;
}
/**
* @return boolean
*/
public function isActive()
{
return $this->isActive;
}
/**
* @return $this
*/
public function disable()
{
$this->isActive = false;
return $this;
}
/**
* @return $this
*/
public function enable()
{
$this->isActive = true;
return $this;
}
/**
* @return string
*/
public function getAlias()
{
return $this->alias;
}
/**
* @param string $alias
* @return $this
*/
public function setAlias($alias)
{
$this->alias = (string) $alias;
return $this;
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace Alchemy\Phrasea\Collection;
interface CollectionReferenceRepository
{
/**
* @return CollectionReference[]
*/
public function findAll();
/**
* @param int $databoxId
* @return CollectionReference[]
*/
public function findAllByDatabox($databoxId);
/**
* @param int $baseId
* @return CollectionReference|null
*/
public function find($baseId);
/**
* @param int $databoxId
* @param int $collectionId
* @return CollectionReference|null
*/
public function findByCollectionId($databoxId, $collectionId);
}

View File

@@ -0,0 +1,26 @@
<?php
namespace Alchemy\Phrasea\Collection;
interface CollectionRepository
{
/**
* @param int $databoxId
* @return \collection[]
*/
public function findAllByDatabox($databoxId);
/**
* @param int $baseId
* @return \collection|null
*/
public function find($baseId);
/**
* @param int $databoxId
* @param int $collectionId
* @return \collection|null
*/
public function findByCollectionId($databoxId, $collectionId);
}

View File

@@ -0,0 +1,110 @@
<?php
namespace Alchemy\Phrasea\Collection;
use Doctrine\DBAL\Connection;
class DbalCollectionReferenceRepository implements CollectionReferenceRepository
{
private static $query = 'SELECT base_id AS baseId, sbas_id AS databoxId, server_coll_id AS collectionId,
ord AS displayIndex, active AS isActive, aliases AS alias
FROM bas';
/**
* @var Connection
*/
private $connection;
/**
* @param Connection $connection
*/
public function __construct(Connection $connection)
{
$this->connection = $connection;
}
/**
* @return CollectionReference[]
*/
public function findAll()
{
return $this->createManyReferences($this->connection->fetchAll(self::$query));
}
/**
* @param int $databoxId
* @return CollectionReference[]
*/
public function findAllByDatabox($databoxId)
{
$query = self::$query . ' WHERE sbas_id = :databoxId';
$rows = $this->connection->fetchAll($query, [ ':databoxId' => $databoxId ]);
return $this->createManyReferences($rows);
}
/**
* @param int $baseId
* @return CollectionReference|null
*/
public function find($baseId)
{
$query = self::$query . ' WHERE base_id = :baseId';
$row = $this->connection->fetchAssoc($query, [ ':baseId' => $baseId ]);
if ($row !== false) {
return $this->createReference($row);
}
return null;
}
/**
* @param int $databoxId
* @param int $collectionId
* @return CollectionReference|null
*/
public function findByCollectionId($databoxId, $collectionId)
{
$query = self::$query . ' WHERE sbas_id = :databoxId AND server_coll_id = :collectionId';
$row = $this->connection->fetchAssoc($query, [ ':databoxId' => $databoxId, ':collectionId' => $collectionId ]);
if ($row !== false) {
return $this->createReference($row);
}
return null;
}
/**
* @param array $row
* @return CollectionReference
*/
private function createReference(array $row)
{
return new CollectionReference(
$row['baseId'],
$row['databoxId'],
$row['collectionId'],
$row['displayIndex'],
$row['isActive'],
$row['alias']
);
}
/**
* @param $rows
* @return array
*/
private function createManyReferences($rows)
{
$references = [];
foreach ($rows as $row) {
$references[$row['baseId']] = $this->createReference($row);
}
return $references;
}
}

View File

@@ -0,0 +1,107 @@
<?php
namespace Alchemy\Phrasea\Collection;
use Alchemy\Phrasea\Databox\DataboxConnectionProvider;
class DbalCollectionRepository implements CollectionRepository
{
private static $query = 'SELECT coll_id, asciiname, label_en, label_fr, label_de, label_nl, prefs, logo, majLogo, pub_wm
FROM coll';
/**
* @var CollectionReferenceRepository
*/
private $referenceRepository;
/**
* @var DataboxConnectionProvider
*/
private $connectionProvider;
/**
* @var CollectionFactory
*/
private $collectionFactory;
public function __construct(
DataboxConnectionProvider $connectionProvider,
CollectionReferenceRepository $referenceRepository,
CollectionFactory $collectionFactory
) {
$this->connectionProvider = $connectionProvider;
$this->referenceRepository = $referenceRepository;
$this->collectionFactory = $collectionFactory;
}
/**
* @param int $databoxId
* @return \collection[]
*/
public function findAllByDatabox($databoxId)
{
$references = $this->referenceRepository->findAllByDatabox($databoxId);
$connection = $this->connectionProvider->getConnection($databoxId);
$params = [];
foreach ($references as $reference) {
$params[':id_' . $reference->getCollectionId()] = $reference->getCollectionId();
}
$query = self::$query . sprintf(' WHERE coll_id IN (%s)', implode(', ', array_keys($params)));
$rows = $connection->fetchAll($query, $params);
return $this->collectionFactory->createMany($references, $rows);
}
/**
* @param int $baseId
* @return \collection|null
*/
public function find($baseId)
{
$reference = $this->referenceRepository->find($baseId);
if ($reference === null) {
return null;
}
$connection = $this->connectionProvider->getConnection($reference->getDataboxId());
$query = self::$query . ' WHERE coll_id = :collectionId';
$row = $connection->fetchAssoc($query, [ ':collectionId' => $reference->getCollectionId() ]);
if ($row !== false) {
return $this->collectionFactory->create($reference, $row);
}
return null;
}
/**
* @param int $databoxId
* @param int $collectionId
* @return \collection|null
*/
public function findByCollectionId($databoxId, $collectionId)
{
$reference = $this->referenceRepository->findByCollectionId($databoxId, $collectionId);
if ($reference === null) {
return null;
}
$connection = $this->connectionProvider->getConnection($databoxId);
$query = self::$query . ' WHERE coll_id = :collectionId';
$row = $connection->fetchAssoc($query, [ ':collectionId' => $reference->getCollectionId() ]);
if ($row !== false) {
return $this->collectionFactory->create($row['baseId'], $reference, $row);
}
return null;
}
}

View File

@@ -43,7 +43,7 @@ class RecordAdd extends Command
protected function doExecute(InputInterface $input, OutputInterface $output) protected function doExecute(InputInterface $input, OutputInterface $output)
{ {
try { try {
$collection = \collection::get_from_base_id($this->container, $input->getArgument('base_id')); $collection = \collection::getByBaseId($this->container, $input->getArgument('base_id'));
} catch (\Exception $e) { } catch (\Exception $e) {
throw new \InvalidArgumentException(sprintf('Collection %s is invalid', $input->getArgument('base_id'))); throw new \InvalidArgumentException(sprintf('Collection %s is invalid', $input->getArgument('base_id')));
} }

View File

@@ -125,7 +125,7 @@ class Step31 implements DatasUpgraderInterface
$uuid = Uuid::uuid4(); $uuid = Uuid::uuid4();
try { try {
$media = $this->app->getMediaFromUri($pathfile); $media = $this->app->getMediaFromUri($pathfile);
$collection = \collection::get_from_coll_id($this->$app, $databox, (int) $record['coll_id']); $collection = \collection::getByCollectionId($this->$app, $databox, (int) $record['coll_id']);
$file = new File($this->app, $media, $collection); $file = new File($this->app, $media, $collection);
$uuid = $file->getUUID(true, true); $uuid = $file->getUUID(true, true);

View File

@@ -33,7 +33,7 @@ class CollectionController extends Controller
*/ */
public function getCollection(Request $request, $bas_id) public function getCollection(Request $request, $bas_id)
{ {
$collection = \collection::get_from_base_id($this->app, $bas_id); $collection = \collection::getByBaseId($this->app, $bas_id);
$admins = []; $admins = [];
@@ -144,7 +144,7 @@ class CollectionController extends Controller
$success = false; $success = false;
$msg = $this->app->trans('An error occurred'); $msg = $this->app->trans('An error occurred');
$collection = \collection::get_from_base_id($this->app, $bas_id); $collection = \collection::getByBaseId($this->app, $bas_id);
try { try {
if ($collection->get_record_amount() <= 500) { if ($collection->get_record_amount() <= 500) {
$collection->empty_collection(500); $collection->empty_collection(500);
@@ -184,7 +184,7 @@ class CollectionController extends Controller
{ {
$success = false; $success = false;
$collection = \collection::get_from_base_id($this->app, $bas_id); $collection = \collection::getByBaseId($this->app, $bas_id);
try { try {
$this->app->getApplicationBox()->write_collection_pic( $this->app->getApplicationBox()->write_collection_pic(
@@ -224,7 +224,7 @@ class CollectionController extends Controller
{ {
$success = false; $success = false;
$collection = \collection::get_from_base_id($this->app, $bas_id); $collection = \collection::getByBaseId($this->app, $bas_id);
try { try {
$this->app->getApplicationBox()->write_collection_pic( $this->app->getApplicationBox()->write_collection_pic(
@@ -264,7 +264,7 @@ class CollectionController extends Controller
{ {
$success = false; $success = false;
$collection = \collection::get_from_base_id($this->app, $bas_id); $collection = \collection::getByBaseId($this->app, $bas_id);
try { try {
$collection->update_logo(null); $collection->update_logo(null);
@@ -323,7 +323,7 @@ class CollectionController extends Controller
]); ]);
} }
$collection = \collection::get_from_base_id($this->app, $bas_id); $collection = \collection::getByBaseId($this->app, $bas_id);
try { try {
$this->app->getApplicationBox()->write_collection_pic( $this->app->getApplicationBox()->write_collection_pic(
@@ -378,7 +378,7 @@ class CollectionController extends Controller
]); ]);
} }
$collection = \collection::get_from_base_id($this->app, $bas_id); $collection = \collection::getByBaseId($this->app, $bas_id);
try { try {
$this->app->getApplicationBox()->write_collection_pic( $this->app->getApplicationBox()->write_collection_pic(
@@ -432,7 +432,7 @@ class CollectionController extends Controller
]); ]);
} }
$collection = \collection::get_from_base_id($this->app, $bas_id); $collection = \collection::getByBaseId($this->app, $bas_id);
try { try {
$this->app->getApplicationBox()->write_collection_pic( $this->app->getApplicationBox()->write_collection_pic(
@@ -468,7 +468,7 @@ class CollectionController extends Controller
$success = false; $success = false;
$msg = $this->app->trans('An error occured'); $msg = $this->app->trans('An error occured');
$collection = \collection::get_from_base_id($this->app, $bas_id); $collection = \collection::getByBaseId($this->app, $bas_id);
try { try {
if ($collection->get_record_amount() > 0) { if ($collection->get_record_amount() > 0) {
@@ -522,7 +522,7 @@ class CollectionController extends Controller
{ {
$success = false; $success = false;
$collection = \collection::get_from_base_id($this->app, $bas_id); $collection = \collection::getByBaseId($this->app, $bas_id);
try { try {
$collection->unmount_collection($this->app); $collection->unmount_collection($this->app);
@@ -562,7 +562,7 @@ class CollectionController extends Controller
$success = false; $success = false;
$collection = \collection::get_from_base_id($this->app, $bas_id); $collection = \collection::getByBaseId($this->app, $bas_id);
try { try {
$collection->set_name($name); $collection->set_name($name);
@@ -594,7 +594,7 @@ class CollectionController extends Controller
$this->app->abort(400, $this->app->trans('Invalid labels parameter')); $this->app->abort(400, $this->app->trans('Invalid labels parameter'));
} }
$collection = \collection::get_from_base_id($this->app, $bas_id); $collection = \collection::getByBaseId($this->app, $bas_id);
$success = true; $success = true;
try { try {
@@ -638,7 +638,7 @@ class CollectionController extends Controller
$success = false; $success = false;
$collection = \collection::get_from_base_id($this->app, $bas_id); $collection = \collection::getByBaseId($this->app, $bas_id);
try { try {
$collection->set_public_presentation($watermark); $collection->set_public_presentation($watermark);
@@ -671,7 +671,7 @@ class CollectionController extends Controller
{ {
$success = false; $success = false;
$collection = \collection::get_from_base_id($this->app, $bas_id); $collection = \collection::getByBaseId($this->app, $bas_id);
try { try {
$collection->enable($this->app->getApplicationBox()); $collection->enable($this->app->getApplicationBox());
@@ -704,7 +704,7 @@ class CollectionController extends Controller
{ {
$success = false; $success = false;
$collection = \collection::get_from_base_id($this->app, $bas_id); $collection = \collection::getByBaseId($this->app, $bas_id);
try { try {
$collection->disable($this->app->getApplicationBox()); $collection->disable($this->app->getApplicationBox());
@@ -736,7 +736,7 @@ class CollectionController extends Controller
{ {
/** @var \databox $databox */ /** @var \databox $databox */
$databox = $this->app->findDataboxById(\phrasea::sbasFromBas($this->app, $bas_id)); $databox = $this->app->findDataboxById(\phrasea::sbasFromBas($this->app, $bas_id));
$collection = \collection::get_from_base_id($this->app, $bas_id); $collection = \collection::getByBaseId($this->app, $bas_id);
$structFields = $suggestedValues = $basePrefs = []; $structFields = $suggestedValues = $basePrefs = [];
/** @var \databox_field $meta */ /** @var \databox_field $meta */
@@ -806,7 +806,7 @@ class CollectionController extends Controller
{ {
$success = false; $success = false;
$collection = \collection::get_from_base_id($this->app, $bas_id); $collection = \collection::getByBaseId($this->app, $bas_id);
$prefs = $request->request->get('str'); $prefs = $request->request->get('str');
try { try {
@@ -843,7 +843,7 @@ class CollectionController extends Controller
*/ */
public function getDetails($bas_id) public function getDetails($bas_id)
{ {
$collection = \collection::get_from_base_id($this->app, $bas_id); $collection = \collection::getByBaseId($this->app, $bas_id);
$out = ['total' => ['totobj' => 0, 'totsiz' => 0, 'mega' => '0', 'giga' => '0'], 'result' => []]; $out = ['total' => ['totobj' => 0, 'totsiz' => 0, 'mega' => '0', 'giga' => '0'], 'result' => []];

View File

@@ -639,7 +639,7 @@ class DataboxController extends Controller
{ {
try { try {
foreach ($request->request->get('order', []) as $data) { foreach ($request->request->get('order', []) as $data) {
$collection = \collection::get_from_base_id($this->app, $data['id']); $collection = \collection::getByBaseId($this->app, $data['id']);
$collection->set_ord($data['offset']); $collection->set_ord($data['offset']);
} }
$success = true; $success = true;

View File

@@ -56,7 +56,7 @@ class FeedController extends Controller
if ($request->request->get('public') == '1') { if ($request->request->get('public') == '1') {
$feed->setIsPublic(true); $feed->setIsPublic(true);
} elseif ($request->request->get('base_id')) { } elseif ($request->request->get('base_id')) {
$feed->setCollection(\collection::get_from_base_id($this->app, $request->request->get('base_id'))); $feed->setCollection(\collection::getByBaseId($this->app, $request->request->get('base_id')));
} }
$publisher->setFeed($feed); $publisher->setFeed($feed);
@@ -106,7 +106,7 @@ class FeedController extends Controller
} }
try { try {
$collection = \collection::get_from_base_id($this->app, $request->request->get('base_id')); $collection = \collection::getByBaseId($this->app, $request->request->get('base_id'));
} catch (\Exception $e) { } catch (\Exception $e) {
$collection = null; $collection = null;
} }

View File

@@ -454,7 +454,7 @@ class UserController extends Controller
$registrationRepository->getUserRegistrations( $registrationRepository->getUserRegistrations(
$user, $user,
array_map(function ($baseId) { array_map(function ($baseId) {
return \collection::get_from_base_id($this->app, $baseId); return \collection::getByBaseId($this->app, $baseId);
}, $bases) }, $bases)
) as $registration) { ) as $registration) {
$registrationManipulator->rejectRegistration($registration); $registrationManipulator->rejectRegistration($registration);
@@ -472,7 +472,7 @@ class UserController extends Controller
foreach ($registrationRepository->getUserRegistrations( foreach ($registrationRepository->getUserRegistrations(
$user, $user,
array_map(function ($baseId) { array_map(function ($baseId) {
return \collection::get_from_base_id($this->app, $baseId); return \collection::getByBaseId($this->app, $baseId);
}, $bases) }, $bases)
) as $registration) { ) as $registration) {
$done[$usr][$registration->getBaseId()] = true; $done[$usr][$registration->getBaseId()] = true;
@@ -494,7 +494,7 @@ class UserController extends Controller
$acceptColl = $denyColl = []; $acceptColl = $denyColl = [];
foreach ($bases as $bas => $isok) { foreach ($bases as $bas => $isok) {
$collection = \collection::get_from_base_id($this->app, $bas); $collection = \collection::getByBaseId($this->app, $bas);
if ($isok) { if ($isok) {
$acceptColl[] = $collection->get_label($this->app['locale']); $acceptColl[] = $collection->get_label($this->app['locale']);

View File

@@ -798,7 +798,7 @@ class V1Controller extends Controller
return $this->getBadRequestAction($request, 'Missing base_id parameter'); return $this->getBadRequestAction($request, 'Missing base_id parameter');
} }
$collection = \collection::get_from_base_id($this->app, $request->get('base_id')); $collection = \collection::getByBaseId($this->app, $request->get('base_id'));
if (!$this->getAclForUser()->has_right_on_base($request->get('base_id'), 'canaddrecord')) { if (!$this->getAclForUser()->has_right_on_base($request->get('base_id'), 'canaddrecord')) {
return Result::createError($request, 403, sprintf( return Result::createError($request, 403, sprintf(
@@ -896,7 +896,7 @@ class V1Controller extends Controller
$media = $this->app->getMediaFromUri($file->getPathname()); $media = $this->app->getMediaFromUri($file->getPathname());
$record = $this->findDataboxById($request->get('databox_id'))->get_record($request->get('record_id')); $record = $this->findDataboxById($request->get('databox_id'))->get_record($request->get('record_id'));
$base_id = $record->get_base_id(); $base_id = $record->get_base_id();
$collection = \collection::get_from_base_id($this->app, $base_id); $collection = \collection::getByBaseId($this->app, $base_id);
if (!$this->getAclForUser()->has_right_on_base($base_id, 'canaddrecord')) { if (!$this->getAclForUser()->has_right_on_base($base_id, 'canaddrecord')) {
return Result::create($request, 403, sprintf( return Result::create($request, 403, sprintf(
'You do not have access to collection %s', $collection->get_label($this->app['locale.I18n']) 'You do not have access to collection %s', $collection->get_label($this->app['locale.I18n'])
@@ -1572,7 +1572,7 @@ class V1Controller extends Controller
$record = $databox->get_record($record_id); $record = $databox->get_record($record_id);
try { try {
$collection = \collection::get_from_base_id($this->app, $request->get('base_id')); $collection = \collection::getByBaseId($this->app, $request->get('base_id'));
$record->move_to_collection($collection, $this->getApplicationBox()); $record->move_to_collection($collection, $this->getApplicationBox());
return Result::create($request, ["record" => $this->listRecord($request, $record)])->createResponse(); return Result::create($request, ["record" => $this->listRecord($request, $record)])->createResponse();
@@ -2064,7 +2064,7 @@ class V1Controller extends Controller
$this->app->abort(400, 'Request body does not contains a valid "story" object'); $this->app->abort(400, 'Request body does not contains a valid "story" object');
} }
$collection = \collection::get_from_base_id($this->app, $data->{'base_id'}); $collection = \collection::getByBaseId($this->app, $data->{'base_id'});
if (!$this->getAclForUser()->has_right_on_base($collection->get_base_id(), 'canaddrecord')) { if (!$this->getAclForUser()->has_right_on_base($collection->get_base_id(), 'canaddrecord')) {
$this->app->abort(403, sprintf('You can not create a story on this collection %s', $collection->get_base_id())); $this->app->abort(403, sprintf('You can not create a story on this collection %s', $collection->get_base_id()));

View File

@@ -157,7 +157,7 @@ class PermalinkController extends AbstractDelivery
return $this->deliverContentWithCaptionLink($request, $record, $subdef, $watermark, $stamp, $token); return $this->deliverContentWithCaptionLink($request, $record, $subdef, $watermark, $stamp, $token);
} }
$collection = \collection::get_from_base_id($this->app, $record->get_base_id()); $collection = \collection::getByBaseId($this->app, $record->get_base_id());
switch ($collection->get_pub_wm()) { switch ($collection->get_pub_wm()) {
default: default:
case 'none': case 'none':

View File

@@ -58,7 +58,7 @@ class MoveCollectionController extends Controller
} }
try { try {
$collection = \collection::get_from_base_id($this->app, $request->request->get('base_id')); $collection = \collection::getByBaseId($this->app, $request->request->get('base_id'));
} catch (\Exception_Databox_CollectionNotFound $e) { } catch (\Exception_Databox_CollectionNotFound $e) {
$datas['message'] = $this->app->trans('Invalid target collection'); $datas['message'] = $this->app->trans('Invalid target collection');

View File

@@ -33,7 +33,7 @@ class StoryController extends Controller
public function postCreateFormAction(Request $request) public function postCreateFormAction(Request $request)
{ {
$collection = \collection::get_from_base_id($this->app, $request->request->get('base_id')); $collection = \collection::getByBaseId($this->app, $request->request->get('base_id'));
if (!$this->getAclForUser()->has_right_on_base($collection->get_base_id(), 'canaddrecord')) { if (!$this->getAclForUser()->has_right_on_base($collection->get_base_id(), 'canaddrecord')) {
throw new AccessDeniedHttpException('You can not create a story on this collection'); throw new AccessDeniedHttpException('You can not create a story on this collection');

View File

@@ -133,7 +133,7 @@ class UploadController extends Controller
$this->getFilesystem()->rename($uploadedFilename, $renamedFilename); $this->getFilesystem()->rename($uploadedFilename, $renamedFilename);
$media = $this->app->getMediaFromUri($renamedFilename); $media = $this->app->getMediaFromUri($renamedFilename);
$collection = \collection::get_from_base_id($this->app, $base_id); $collection = \collection::getByBaseId($this->app, $base_id);
$lazaretSession = new LazaretSession(); $lazaretSession = new LazaretSession();
$lazaretSession->setUser($this->getAuthenticatedUser()); $lazaretSession->setUser($this->getAuthenticatedUser());

View File

@@ -312,7 +312,7 @@ class AccountController extends Controller
if (0 !== count($registrations)) { if (0 !== count($registrations)) {
foreach ($registrations as $baseId) { foreach ($registrations as $baseId) {
$this->getRegistrationManipulator() $this->getRegistrationManipulator()
->createRegistration($user, \collection::get_from_base_id($this->app, $baseId)); ->createRegistration($user, \collection::getByBaseId($this->app, $baseId));
} }
$this->app->addFlash('success', $this->app->trans('Your registration requests have been taken into account.')); $this->app->addFlash('success', $this->app->trans('Your registration requests have been taken into account.'));
} }

View File

@@ -302,7 +302,7 @@ class LoginController extends Controller
return; return;
} }
$collection = \collection::get_from_base_id($this->app, $baseId); $collection = \collection::getByBaseId($this->app, $baseId);
$registrationManipulator->createRegistration($user, $collection); $registrationManipulator->createRegistration($user, $collection);
$registrationsOK[$baseId] = $collection; $registrationsOK[$baseId] = $collection;
}); });

View File

@@ -70,7 +70,7 @@ class BorderManagerServiceProvider implements ServiceProviderInterface
$collections = []; $collections = [];
foreach ($checker['collections'] as $base_id) { foreach ($checker['collections'] as $base_id) {
try { try {
$collections[] = \collection::get_from_base_id($app, $base_id); $collections[] = \collection::getByBaseId($app, $base_id);
} catch (\Exception $e) { } catch (\Exception $e) {
throw new \InvalidArgumentException('Invalid collection option'); throw new \InvalidArgumentException('Invalid collection option');
} }

View File

@@ -12,7 +12,12 @@
namespace Alchemy\Phrasea\Core\Provider; namespace Alchemy\Phrasea\Core\Provider;
use Alchemy\Phrasea\Application as PhraseaApplication; use Alchemy\Phrasea\Application as PhraseaApplication;
use Alchemy\Phrasea\Collection\CollectionFactory;
use Alchemy\Phrasea\Collection\DbalCollectionReferenceRepository;
use Alchemy\Phrasea\Collection\DbalCollectionRepository;
use Alchemy\Phrasea\Collection\CachedCollectionRepository;
use Alchemy\Phrasea\Databox\CachingDataboxRepositoryDecorator; use Alchemy\Phrasea\Databox\CachingDataboxRepositoryDecorator;
use Alchemy\Phrasea\Databox\DataboxConnectionProvider;
use Alchemy\Phrasea\Databox\DataboxFactory; use Alchemy\Phrasea\Databox\DataboxFactory;
use Alchemy\Phrasea\Databox\DbalDataboxRepository; use Alchemy\Phrasea\Databox\DbalDataboxRepository;
use Alchemy\Phrasea\Databox\Field\DataboxFieldFactory; use Alchemy\Phrasea\Databox\Field\DataboxFieldFactory;
@@ -138,6 +143,23 @@ class RepositoriesServiceProvider implements ServiceProviderInterface
$app['repo.fields.factory'] = $app->protect(function (\databox $databox) use ($app) { $app['repo.fields.factory'] = $app->protect(function (\databox $databox) use ($app) {
return new DbalDataboxFieldRepository($databox->get_connection(), new DataboxFieldFactory($app, $databox)); return new DbalDataboxFieldRepository($databox->get_connection(), new DataboxFieldFactory($app, $databox));
}); });
$app['repo.collection-references'] = $app->share(function (PhraseaApplication $app) {
return new DbalCollectionReferenceRepository($app->getApplicationBox()->get_connection());
});
$app['repo.collections'] = $app->share(function (PhraseaApplication $app) {
$appbox = $app->getApplicationBox();
$factory = new CollectionFactory($app);
$connectionProvider = new DataboxConnectionProvider($appbox);
$repository = new DbalCollectionRepository(
$connectionProvider,
$app['repo.collection-references'],
$factory
);
return new CachedCollectionRepository($repository, $app['cache'], 'collection_');
});
} }
public function boot(Application $app) public function boot(Application $app)

View File

@@ -0,0 +1,23 @@
<?php
namespace Alchemy\Phrasea\Databox;
class DataboxConnectionProvider
{
private $applicationBox;
public function __construct(\appbox $applicationBox)
{
$this->applicationBox = $applicationBox;
}
/**
* @param $databoxId
* @return \Doctrine\DBAL\Connection
*/
public function getConnection($databoxId)
{
return $this->applicationBox->get_databox($databoxId)->get_connection();
}
}

View File

@@ -227,7 +227,7 @@ class Edit extends \Alchemy\Phrasea\Helper\Helper
'users' => $this->users, 'users' => $this->users,
'users_serial' => implode(';', $this->users), 'users_serial' => implode(';', $this->users),
'base_id' => $this->base_id, 'base_id' => $this->base_id,
'collection' => \collection::get_from_base_id($this->app, $this->base_id), 'collection' => \collection::getByBaseId($this->app, $this->base_id),
]; ];
} }
@@ -331,7 +331,7 @@ class Edit extends \Alchemy\Phrasea\Helper\Helper
'users' => $this->users, 'users' => $this->users,
'users_serial' => implode(';', $this->users), 'users_serial' => implode(';', $this->users),
'base_id' => $this->base_id, 'base_id' => $this->base_id,
'collection' => \collection::get_from_base_id($this->app, $this->base_id), 'collection' => \collection::getByBaseId($this->app, $this->base_id),
]; ];
} }
@@ -391,7 +391,7 @@ class Edit extends \Alchemy\Phrasea\Helper\Helper
'users' => $this->users, 'users' => $this->users,
'users_serial' => implode(';', $this->users), 'users_serial' => implode(';', $this->users),
'base_id' => $this->base_id, 'base_id' => $this->base_id,
'collection' => \collection::get_from_base_id($this->app, $this->base_id), 'collection' => \collection::getByBaseId($this->app, $this->base_id),
]; ];
} }

View File

@@ -302,7 +302,7 @@ class Feed implements FeedInterface
public function getCollection(Application $app) public function getCollection(Application $app)
{ {
if ($this->getBaseId() !== null) { if ($this->getBaseId() !== null) {
return \collection::get_from_base_id($app, $this->getBaseId()); return \collection::getByBaseId($app, $this->getBaseId());
} }
} }

View File

@@ -211,7 +211,7 @@ class LazaretFile
*/ */
public function getCollection(Application $app) public function getCollection(Application $app)
{ {
return \collection::get_from_base_id($app, $this->getBaseId()); return \collection::getByBaseId($app, $this->getBaseId());
} }
/** /**

View File

@@ -141,7 +141,7 @@ class Registration
*/ */
public function getCollection(Application $app) public function getCollection(Application $app)
{ {
return \collection::get_from_base_id($app, $this->baseId); return \collection::getByBaseId($app, $this->baseId);
} }
/** /**

View File

@@ -350,7 +350,7 @@ class PDF
} }
} }
$collection = \collection::get_from_base_id($this->app, $rec->get_base_id()); $collection = \collection::getByBaseId($this->app, $rec->get_base_id());
$vn = ""; $vn = "";
if (false !== $str = simplexml_load_string($collection->get_prefs())) { if (false !== $str = simplexml_load_string($collection->get_prefs())) {

View File

@@ -480,7 +480,7 @@ class SearchEngineOptions
break; break;
case in_array($key, ['collections', 'business_fields']): case in_array($key, ['collections', 'business_fields']):
$value = array_map(function ($base_id) use ($app) { $value = array_map(function ($base_id) use ($app) {
return \collection::get_from_base_id($app, $base_id); return \collection::getByBaseId($app, $base_id);
}, $value); }, $value);
break; break;
} }
@@ -571,7 +571,7 @@ class SearchEngineOptions
$bas = []; $bas = [];
foreach ($selected_bases as $bas_id) { foreach ($selected_bases as $bas_id) {
try { try {
$bas[$bas_id] = \collection::get_from_base_id($app, $bas_id); $bas[$bas_id] = \collection::getByBaseId($app, $bas_id);
} catch (\Exception_Databox_CollectionNotFound $e) { } catch (\Exception_Databox_CollectionNotFound $e) {
// Ignore // Ignore
} }

View File

@@ -867,7 +867,7 @@ class ArchiveJob extends AbstractJob
} }
try { try {
$collection = \collection::get_from_coll_id($app, $databox, (int) $cid); $collection = \collection::getByCollectionId($app, $databox, (int) $cid);
if ($captionFileName === null) { if ($captionFileName === null) {
$story = $this->createStory($app, $collection, $path . '/' . $representationFileName, null, $stat0, $stat1); $story = $this->createStory($app, $collection, $path . '/' . $representationFileName, null, $stat0, $stat1);
} else { } else {
@@ -1200,7 +1200,7 @@ class ArchiveJob extends AbstractJob
} }
try { try {
$collection = \collection::get_from_coll_id($app, $databox, (int) $cid); $collection = \collection::getByCollectionId($app, $databox, (int) $cid);
if ($captionFileName === null) { if ($captionFileName === null) {
$this->createRecord($app, $collection, $path . '/' . $file, null, $grp_rid, null, $stat0, $stat1); $this->createRecord($app, $collection, $path . '/' . $file, null, $grp_rid, null, $stat0, $stat1);

View File

@@ -61,7 +61,7 @@ class EmptyCollectionJob extends AbstractJob
$baseId = (string) $settings->bas_id; $baseId = (string) $settings->bas_id;
$collection = \collection::get_from_base_id($app, $baseId); $collection = \collection::getByBaseId($app, $baseId);
$collection->empty_collection(200); $collection->empty_collection(200);
if (0 === $collection->get_record_amount()) { if (0 === $collection->get_record_amount()) {

View File

@@ -82,7 +82,7 @@ class RecordMoverJob extends AbstractJob
case 'UPDATE': case 'UPDATE':
// change collection ? // change collection ?
if (array_key_exists('coll', $row)) { if (array_key_exists('coll', $row)) {
$coll = \collection::get_from_coll_id($app, $databox, $row['coll']); $coll = \collection::getByCollectionId($app, $databox, $row['coll']);
$rec->move_to_collection($coll, $app['phraseanet.appbox']); $rec->move_to_collection($coll, $app['phraseanet.appbox']);
if ($logsql) { if ($logsql) {
$this->log('debug', sprintf("on sbas %s move rid %s to coll %s \n", $row['sbas_id'], $row['record_id'], $coll->get_coll_id())); $this->log('debug', sprintf("on sbas %s move rid %s to coll %s \n", $row['sbas_id'], $row['record_id'], $coll->get_coll_id()));

View File

@@ -717,7 +717,7 @@ class ACL implements cache_cacheableInterface
} }
try { try {
$ret[$base_id] = collection::get_from_base_id($this->app, $base_id); $ret[$base_id] = collection::getByBaseId($this->app, $base_id);
} catch (\Exception $e) { } catch (\Exception $e) {
} }
@@ -1655,7 +1655,7 @@ class ACL implements cache_cacheableInterface
$collections = []; $collections = [];
foreach ($rs as $row) { foreach ($rs as $row) {
$collections[] = \collection::get_from_base_id($this->app, $row['base_id']); $collections[] = \collection::getByBaseId($this->app, $row['base_id']);
} }
return $collections; return $collections;

View File

@@ -16,7 +16,6 @@ use Alchemy\Phrasea\Core\Version\AppboxVersionRepository;
use Alchemy\Phrasea\Databox\DataboxRepository; use Alchemy\Phrasea\Databox\DataboxRepository;
use Doctrine\ORM\Tools\SchemaTool; use Doctrine\ORM\Tools\SchemaTool;
use MediaAlchemyst\Alchemyst; use MediaAlchemyst\Alchemyst;
use MediaAlchemyst\Specification\Image as ImageSpecification;
use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpFoundation\File\File as SymfoFile; use Symfony\Component\HttpFoundation\File\File as SymfoFile;
use Symfony\Component\Finder\Finder; use Symfony\Component\Finder\Finder;
@@ -257,9 +256,13 @@ class appbox extends base
return $this->databoxes; return $this->databoxes;
} }
/**
* @param int $sbas_id
* @return databox
*/
public function get_databox($sbas_id) public function get_databox($sbas_id)
{ {
$databoxes = $this->get_databoxes(); $databoxes = $this->getDataboxRepository()->findAll();
if (!isset($databoxes[$sbas_id]) && !array_key_exists($sbas_id, $databoxes)) { if (!isset($databoxes[$sbas_id]) && !array_key_exists($sbas_id, $databoxes)) {
throw new NotFoundHttpException('Databox `' . $sbas_id . '` not found'); throw new NotFoundHttpException('Databox `' . $sbas_id . '` not found');

View File

@@ -10,6 +10,8 @@
*/ */
use Alchemy\Phrasea\Application; use Alchemy\Phrasea\Application;
use Alchemy\Phrasea\Collection\CollectionReference;
use Alchemy\Phrasea\Collection\CollectionRepository;
use Alchemy\Phrasea\Core\Event\Collection\CollectionEvent; use Alchemy\Phrasea\Core\Event\Collection\CollectionEvent;
use Alchemy\Phrasea\Core\Event\Collection\CollectionEvents; use Alchemy\Phrasea\Core\Event\Collection\CollectionEvents;
use Alchemy\Phrasea\Core\Event\Collection\CreatedEvent; use Alchemy\Phrasea\Core\Event\Collection\CreatedEvent;
@@ -23,125 +25,279 @@ use Symfony\Component\HttpFoundation\File\File;
class collection implements cache_cacheableInterface, ThumbnailedElement class collection implements cache_cacheableInterface, ThumbnailedElement
{ {
protected $base_id;
protected $sbas_id;
protected $coll_id;
protected $available = false;
protected $name;
protected $prefs;
protected $pub_wm;
protected $labels = [];
private static $_logos = [];
private static $_stamps = [];
private static $_watermarks = [];
private static $_presentations = [];
private static $_collections = [];
protected $databox;
protected $is_active;
protected $binary_logo;
protected $ord;
protected $app;
const PIC_LOGO = 'minilogos'; const PIC_LOGO = 'minilogos';
const PIC_WM = 'wm'; const PIC_WM = 'wm';
const PIC_STAMP = 'stamp'; const PIC_STAMP = 'stamp';
const PIC_PRESENTATION = 'presentation'; const PIC_PRESENTATION = 'presentation';
protected function __construct(Application $app, $coll_id, databox $databox) private static $_logos = [];
private static $_stamps = [];
private static $_watermarks = [];
private static $_presentations = [];
private static $_collections = [];
private static function getNewOrder(Connection $conn, $sbas_id)
{ {
$this->app = $app; $sql = "SELECT GREATEST(0, MAX(ord)) + 1 AS ord FROM bas WHERE sbas_id = :sbas_id";
$this->databox = $databox; $stmt = $conn->prepare($sql);
$this->sbas_id = (int) $databox->get_sbas_id(); $stmt->execute([':sbas_id' => $sbas_id]);
$this->coll_id = (int) $coll_id; $ord = $stmt->fetch(\PDO::FETCH_ASSOC);
$this->load();
return $this;
}
private function dispatch($eventName, CollectionEvent $event)
{
$this->app['dispatcher']->dispatch($eventName, $event);
}
protected function load()
{
try {
$datas = $this->get_data_from_cache();
if (!is_array($datas)) {
throw new \Exception('Collection could not be retrieved from cache');
}
$this->is_active = $datas['is_active'];
$this->base_id = $datas['base_id'];
$this->available = $datas['available'];
$this->pub_wm = $datas['pub_wm'];
$this->name = $datas['name'];
$this->ord = $datas['ord'];
$this->prefs = $datas['prefs'];
$this->labels = $datas['labels'];
return $this;
} catch (\Exception $e) {
}
$connbas = $this->databox->get_connection();
$sql = 'SELECT
asciiname, prefs, pub_wm, coll_id,
label_en, label_fr, label_de, label_nl
FROM coll WHERE coll_id = :coll_id';
$stmt = $connbas->prepare($sql);
$stmt->execute([':coll_id' => $this->coll_id]);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt->closeCursor(); $stmt->closeCursor();
if ( ! $row) return $ord['ord'] ?: 1;
throw new Exception('Unknown collection ' . $this->coll_id . ' on ' . $this->databox->get_dbname()); }
public static function create(Application $app, databox $databox, appbox $appbox, $name, User $user = null)
{
$sbas_id = $databox->get_sbas_id();
$connbas = $databox->get_connection();
$conn = $appbox->get_connection();
$new_bas = false;
$prefs = <<<EOT
<?xml version="1.0" encoding="UTF-8"?>
<baseprefs>
<status>0</status>
<sugestedValues></sugestedValues>
</baseprefs>
EOT;
$sql = "INSERT INTO coll (coll_id, asciiname, prefs, logo)
VALUES (null, :name, :prefs, '')";
$params = [
':name' => $name,
'prefs' => $prefs,
];
$stmt = $connbas->prepare($sql);
$stmt->execute($params);
$stmt->closeCursor();
$new_id = (int) $connbas->lastInsertId();
$sql = "INSERT INTO bas (base_id, active, ord, server_coll_id, sbas_id, aliases)
VALUES
(null, 1, :ord, :server_coll_id, :sbas_id, '')";
$stmt = $conn->prepare($sql);
$stmt->execute([
':server_coll_id' => $new_id,
':sbas_id' => $sbas_id,
':ord' => self::getNewOrder($conn, $sbas_id),
]);
$stmt->closeCursor();
$new_bas = $conn->lastInsertId();
$databox->delete_data_from_cache(databox::CACHE_COLLECTIONS);
$appbox->delete_data_from_cache(appbox::CACHE_LIST_BASES);
phrasea::reset_baseDatas($appbox);
$collection = self::getByCollectionId($app, $databox, $new_id);
if (null !== $user) {
$collection->set_admin($new_bas, $user);
}
$app['dispatcher']->dispatch(CollectionEvents::CREATED, new CreatedEvent($collection));
return $collection;
}
public static function mount_collection(Application $app, databox $databox, $coll_id, User $user)
{
$sql = "INSERT INTO bas (base_id, active, server_coll_id, sbas_id, aliases, ord)
VALUES
(null, 1, :server_coll_id, :sbas_id, '', :ord)";
$stmt = $databox->get_appbox()->get_connection()->prepare($sql);
$stmt->execute([
':server_coll_id' => $coll_id,
':sbas_id' => $databox->get_sbas_id(),
':ord' => self::getNewOrder($databox->get_appbox()->get_connection(), $databox->get_sbas_id()),
]);
$stmt->closeCursor();
$new_bas = $databox->get_appbox()->get_connection()->lastInsertId();
$databox->get_appbox()->delete_data_from_cache(appbox::CACHE_LIST_BASES);
$databox->delete_data_from_cache(databox::CACHE_COLLECTIONS);
cache_databox::update($app, $databox->get_sbas_id(), 'structure');
phrasea::reset_baseDatas($databox->get_appbox());
$coll = self::getByBaseId($app, $new_bas);
$coll->set_admin($new_bas, $user);
return $new_bas;
}
public static function getLogo($base_id, Application $app, $printname = false)
{
$base_id_key = $base_id . '_' . ($printname ? '1' : '0');
if ( ! isset(self::$_logos[$base_id_key])) {
if (is_file($app['root.path'] . '/config/minilogos/' . $base_id)) {
$name = phrasea::bas_labels($base_id, $app);
self::$_logos[$base_id_key] = '<img title="' . $name
. '" src="/custom/minilogos/' . $base_id . '" />';
} elseif ($printname) {
self::$_logos[$base_id_key] = phrasea::bas_labels($base_id, $app);
}
}
return isset(self::$_logos[$base_id_key]) ? self::$_logos[$base_id_key] : '';
}
public static function getWatermark($base_id)
{
if ( ! isset(self::$_watermarks['base_id'])) {
if (is_file(__DIR__ . '/../../config/wm/' . $base_id))
self::$_watermarks['base_id'] = '<img src="/custom/wm/' . $base_id . '" />';
}
return isset(self::$_watermarks['base_id']) ? self::$_watermarks['base_id'] : '';
}
public static function getPresentation($base_id)
{
if ( ! isset(self::$_presentations['base_id'])) {
if (is_file(__DIR__ . '/../../config/presentation/' . $base_id))
self::$_presentations['base_id'] = '<img src="/custom/presentation/' . $base_id . '" />';
}
return isset(self::$_presentations['base_id']) ? self::$_presentations['base_id'] : '';
}
public static function getStamp($base_id)
{
if ( ! isset(self::$_stamps['base_id'])) {
if (is_file(__DIR__ . '/../../config/stamp/' . $base_id))
self::$_stamps['base_id'] = '<img src="/custom/stamp/' . $base_id . '" />';
}
return isset(self::$_stamps['base_id']) ? self::$_stamps['base_id'] : '';
}
public static function purge()
{
self::$_collections = [];
}
/**
* @param Application $app
* @param int $base_id
* @return collection
*/
public static function getByBaseId(Application $app, $base_id)
{
/** @var CollectionRepository $repository */
$repository = $app['repo.collections'];
$collection = $repository->find($base_id);
if (! $collection) {
throw new Exception_Databox_CollectionNotFound(sprintf("Collection with base_id %s could not be found", $base_id));
}
if (!$app['conf.restrictions']->isCollectionAvailable($collection)) {
throw new Exception_Databox_CollectionNotFound('Collection `' . $collection->get_base_id() . '` is not available here.');
}
return $collection;
}
/**
* @param Application $app
* @param databox $databox
* @param int $coll_id
* @return collection
*/
public static function getByCollectionId(Application $app, databox $databox, $coll_id)
{
assert(is_int($coll_id));
/** @var CollectionRepository $repository */
$repository = $app['repo.collections'];
$collection = $repository->findByCollectionId($databox->get_sbas_id(), $coll_id);
if (! $collection) {
throw new Exception_Databox_CollectionNotFound(sprintf("Collection with base_id %s could not be found", $base_id));
}
if (!$app['conf.restrictions']->isCollectionAvailable($collection)) {
throw new Exception_Databox_CollectionNotFound('Collection `' . $collection->get_base_id() . '` is not available here.');
}
return $collection;
}
/**
* @var CollectionReference
*/
protected $reference;
/**
* @var string
*/
protected $name;
/**
* @var string
*/
protected $preferences;
/**
* @var string
*/
protected $pub_wm;
/**
* @var string[]
*/
protected $labels = [];
/**
* @var databox
*/
protected $databox;
/**
* @var int[]|string
*/
protected $binary_logo;
/**
* @var Application
*/
protected $app;
public function __construct(Application $app, $baseId, CollectionReference $reference, array $row)
{
$this->app = $app;
$this->databox = $app->getApplicationBox()->get_databox($reference->getDataboxId());
$this->reference = $reference;
$this->name = $row['asciiname'];
$this->available = true; $this->available = true;
$this->pub_wm = $row['pub_wm']; $this->pub_wm = $row['pub_wm'];
$this->name = $row['asciiname']; $this->preferences = $row['prefs'];
$this->prefs = $row['prefs'];
$this->labels = [ $this->labels = [
'fr' => $row['label_fr'], 'fr' => $row['label_fr'],
'en' => $row['label_en'], 'en' => $row['label_en'],
'de' => $row['label_de'], 'de' => $row['label_de'],
'nl' => $row['label_nl'], 'nl' => $row['label_nl'],
]; ];
$conn = $this->app->getApplicationBox()->get_connection();
$sql = 'SELECT server_coll_id, sbas_id, base_id, active, ord FROM bas
WHERE server_coll_id = :coll_id AND sbas_id = :sbas_id';
$stmt = $conn->prepare($sql);
$stmt->execute([':coll_id' => $this->coll_id, ':sbas_id' => $this->databox->get_sbas_id()]);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt->closeCursor();
$this->is_active = false;
if ($row) {
$this->is_active = ! ! $row['active'];
$this->base_id = (int) $row['base_id'];
$this->ord = (int) $row['ord'];
} }
$stmt->closeCursor(); private function dispatch($eventName, CollectionEvent $event)
{
$datas = [ $this->app['dispatcher']->dispatch($eventName, $event);
'is_active' => $this->is_active
, 'base_id' => $this->base_id
, 'available' => $this->available
, 'pub_wm' => $this->pub_wm
, 'name' => $this->name
, 'ord' => $this->ord
, 'prefs' => $this->prefs
, 'labels' => $this->labels
];
$this->set_data_to_cache($datas);
return $this;
} }
public function enable(appbox $appbox) public function enable(appbox $appbox)
@@ -162,7 +318,7 @@ class collection implements cache_cacheableInterface, ThumbnailedElement
public function get_ord() public function get_ord()
{ {
return $this->ord; return $this->reference->getDisplayIndex();
} }
public function set_ord($ord) public function set_ord($ord)
@@ -171,6 +327,8 @@ class collection implements cache_cacheableInterface, ThumbnailedElement
$this->delete_data_from_cache(); $this->delete_data_from_cache();
$this->app->getApplicationBox()->delete_data_from_cache(appbox::CACHE_LIST_BASES); $this->app->getApplicationBox()->delete_data_from_cache(appbox::CACHE_LIST_BASES);
$this->reference->setDisplayIndex($ord);
return $this; return $this;
} }
@@ -186,6 +344,8 @@ class collection implements cache_cacheableInterface, ThumbnailedElement
$this->databox->delete_data_from_cache(databox::CACHE_COLLECTIONS); $this->databox->delete_data_from_cache(databox::CACHE_COLLECTIONS);
cache_databox::update($this->app, $this->databox->get_sbas_id(), 'structure'); cache_databox::update($this->app, $this->databox->get_sbas_id(), 'structure');
$this->reference->disable();
return $this; return $this;
} }
@@ -211,9 +371,12 @@ class collection implements cache_cacheableInterface, ThumbnailedElement
return $this; return $this;
} }
/**
* @return bool
*/
public function is_active() public function is_active()
{ {
return $this->is_active; return $this->reference->isActive();
} }
/** /**
@@ -225,16 +388,26 @@ class collection implements cache_cacheableInterface, ThumbnailedElement
return $this->databox; return $this->databox;
} }
/**
* @return \Doctrine\DBAL\Connection
*/
public function get_connection() public function get_connection()
{ {
return $this->databox->get_connection(); return $this->databox->get_connection();
} }
/**
* @return int
*/
public function getRootIdentifier() public function getRootIdentifier()
{ {
return $this->base_id; return $this->reference->getBaseId();
} }
/**
* @param string $thumbnailType
* @param File $file
*/
public function updateThumbnail($thumbnailType, File $file = null) public function updateThumbnail($thumbnailType, File $file = null)
{ {
switch ($thumbnailType) { switch ($thumbnailType) {
@@ -254,7 +427,6 @@ class collection implements cache_cacheableInterface, ThumbnailedElement
} }
} }
public function set_public_presentation($publi) public function set_public_presentation($publi)
{ {
if (in_array($publi, ['none', 'wm', 'stamp'])) { if (in_array($publi, ['none', 'wm', 'stamp'])) {
@@ -344,7 +516,6 @@ class collection implements cache_cacheableInterface, ThumbnailedElement
public function get_record_details() public function get_record_details()
{ {
$sql = "SELECT record.coll_id,name,COALESCE(asciiname, CONCAT('_',record.coll_id)) AS asciiname, $sql = "SELECT record.coll_id,name,COALESCE(asciiname, CONCAT('_',record.coll_id)) AS asciiname,
SUM(1) AS n, SUM(size) AS size SUM(1) AS n, SUM(size) AS size
FROM record NATURAL JOIN subdef FROM record NATURAL JOIN subdef
@@ -386,7 +557,6 @@ class collection implements cache_cacheableInterface, ThumbnailedElement
public function reset_watermark() public function reset_watermark()
{ {
$sql = 'SELECT path, file FROM record r INNER JOIN subdef s USING(record_id) $sql = 'SELECT path, file FROM record r INNER JOIN subdef s USING(record_id)
WHERE r.coll_id = :coll_id AND r.type="image" AND s.name="preview"'; WHERE r.coll_id = :coll_id AND r.type="image" AND s.name="preview"';
@@ -403,7 +573,6 @@ class collection implements cache_cacheableInterface, ThumbnailedElement
public function reset_stamp($record_id = null) public function reset_stamp($record_id = null)
{ {
$sql = 'SELECT path, file FROM record r INNER JOIN subdef s USING(record_id) $sql = 'SELECT path, file FROM record r INNER JOIN subdef s USING(record_id)
WHERE r.coll_id = :coll_id WHERE r.coll_id = :coll_id
AND r.type="image" AND s.name IN ("preview", "document")'; AND r.type="image" AND s.name IN ("preview", "document")';
@@ -463,81 +632,38 @@ class collection implements cache_cacheableInterface, ThumbnailedElement
return $this->binary_logo; return $this->binary_logo;
} }
/**
*
* @param Application $app
* @param int $base_id
* @return collection
*/
public static function get_from_base_id(Application $app, $base_id)
{
$coll_id = phrasea::collFromBas($app, $base_id);
$sbas_id = phrasea::sbasFromBas($app, $base_id);
if (! $sbas_id || ! $coll_id) {
throw new Exception_Databox_CollectionNotFound(sprintf("Collection with base_id %s could not be found", $base_id));
}
$databox = $app->findDataboxById($sbas_id);
return self::get_from_coll_id($app, $databox, $coll_id);
}
/**
*
* @param Application $app
* @param databox $databox
* @param int $coll_id
* @return collection
*/
public static function get_from_coll_id(Application $app, databox $databox, $coll_id)
{
assert(is_int($coll_id));
$key = sprintf('%d_%d', $databox->get_sbas_id(), $coll_id);
if (!isset(self::$_collections[$key])) {
$collection = new self($app, $coll_id, $databox);
if (!$app['conf.restrictions']->isCollectionAvailable($collection)) {
throw new Exception_Databox_CollectionNotFound('Collection `' . $collection->get_base_id() . '` is not available here.');
}
self::$_collections[$key] = $collection;
}
return self::$_collections[$key];
}
public function get_base_id() public function get_base_id()
{ {
return $this->base_id; return $this->reference->getBaseId();
} }
public function get_sbas_id() public function get_sbas_id()
{ {
return $this->sbas_id; return $this->reference->getDataboxId();
} }
public function get_coll_id() public function get_coll_id()
{ {
return $this->coll_id; return $this->reference->getCollectionId();
} }
public function get_prefs() public function get_prefs()
{ {
return $this->prefs; return $this->preferences;
} }
public function set_prefs(DOMDocument $dom) public function set_prefs(DOMDocument $dom)
{ {
$this->prefs = $dom->saveXML(); $this->preferences = $dom->saveXML();
$sql = "UPDATE coll SET prefs = :prefs WHERE coll_id = :coll_id"; $sql = "UPDATE coll SET prefs = :prefs WHERE coll_id = :coll_id";
$stmt = $this->get_connection()->prepare($sql); $stmt = $this->get_connection()->prepare($sql);
$stmt->execute([':prefs' => $this->prefs, ':coll_id' => $this->get_coll_id()]); $stmt->execute([':prefs' => $this->preferences, ':coll_id' => $this->get_coll_id()]);
$stmt->closeCursor(); $stmt->closeCursor();
$this->delete_data_from_cache(); $this->delete_data_from_cache();
return $this->prefs; return $this->preferences;
} }
public function get_name() public function get_name()
@@ -592,73 +718,6 @@ class collection implements cache_cacheableInterface, ThumbnailedElement
return $this; return $this;
} }
private static function getNewOrder(Connection $conn, $sbas_id)
{
$sql = "SELECT GREATEST(0, MAX(ord)) + 1 AS ord FROM bas WHERE sbas_id = :sbas_id";
$stmt = $conn->prepare($sql);
$stmt->execute([':sbas_id' => $sbas_id]);
$ord = $stmt->fetch(\PDO::FETCH_ASSOC);
$stmt->closeCursor();
return $ord['ord'] ?: 1;
}
public static function create(Application $app, databox $databox, appbox $appbox, $name, User $user = null)
{
$sbas_id = $databox->get_sbas_id();
$connbas = $databox->get_connection();
$conn = $appbox->get_connection();
$new_bas = false;
$prefs = '<?xml version="1.0" encoding="UTF-8"?>
<baseprefs>
<status>0</status>
<sugestedValues>
</sugestedValues>
</baseprefs>';
$sql = "INSERT INTO coll (coll_id, asciiname, prefs, logo)
VALUES (null, :name, :prefs, '')";
$params = [
':name' => $name,
'prefs' => $prefs,
];
$stmt = $connbas->prepare($sql);
$stmt->execute($params);
$stmt->closeCursor();
$new_id = (int) $connbas->lastInsertId();
$sql = "INSERT INTO bas (base_id, active, ord, server_coll_id, sbas_id, aliases)
VALUES
(null, 1, :ord, :server_coll_id, :sbas_id, '')";
$stmt = $conn->prepare($sql);
$stmt->execute([
':server_coll_id' => $new_id,
':sbas_id' => $sbas_id,
':ord' => self::getNewOrder($conn, $sbas_id),
]);
$stmt->closeCursor();
$new_bas = $conn->lastInsertId();
$databox->delete_data_from_cache(databox::CACHE_COLLECTIONS);
$appbox->delete_data_from_cache(appbox::CACHE_LIST_BASES);
phrasea::reset_baseDatas($appbox);
$collection = self::get_from_coll_id($app, $databox, $new_id);
if (null !== $user) {
$collection->set_admin($new_bas, $user);
}
$app['dispatcher']->dispatch(CollectionEvents::CREATED, new CreatedEvent($collection));
return $collection;
}
public function set_admin($base_id, User $user) public function set_admin($base_id, User $user)
{ {
@@ -687,86 +746,6 @@ class collection implements cache_cacheableInterface, ThumbnailedElement
return true; return true;
} }
public static function mount_collection(Application $app, databox $databox, $coll_id, User $user)
{
$sql = "INSERT INTO bas (base_id, active, server_coll_id, sbas_id, aliases, ord)
VALUES
(null, 1, :server_coll_id, :sbas_id, '', :ord)";
$stmt = $databox->get_appbox()->get_connection()->prepare($sql);
$stmt->execute([
':server_coll_id' => $coll_id,
':sbas_id' => $databox->get_sbas_id(),
':ord' => self::getNewOrder($databox->get_appbox()->get_connection(), $databox->get_sbas_id()),
]);
$stmt->closeCursor();
$new_bas = $databox->get_appbox()->get_connection()->lastInsertId();
$databox->get_appbox()->delete_data_from_cache(appbox::CACHE_LIST_BASES);
$databox->delete_data_from_cache(databox::CACHE_COLLECTIONS);
cache_databox::update($app, $databox->get_sbas_id(), 'structure');
phrasea::reset_baseDatas($databox->get_appbox());
$coll = self::get_from_base_id($app, $new_bas);
$coll->set_admin($new_bas, $user);
return $new_bas;
}
public static function getLogo($base_id, Application $app, $printname = false)
{
$base_id_key = $base_id . '_' . ($printname ? '1' : '0');
if ( ! isset(self::$_logos[$base_id_key])) {
if (is_file($app['root.path'] . '/config/minilogos/' . $base_id)) {
$name = phrasea::bas_labels($base_id, $app);
self::$_logos[$base_id_key] = '<img title="' . $name
. '" src="/custom/minilogos/' . $base_id . '" />';
} elseif ($printname) {
self::$_logos[$base_id_key] = phrasea::bas_labels($base_id, $app);
}
}
return isset(self::$_logos[$base_id_key]) ? self::$_logos[$base_id_key] : '';
}
public static function getWatermark($base_id)
{
if ( ! isset(self::$_watermarks['base_id'])) {
if (is_file(__DIR__ . '/../../config/wm/' . $base_id))
self::$_watermarks['base_id'] = '<img src="/custom/wm/' . $base_id . '" />';
}
return isset(self::$_watermarks['base_id']) ? self::$_watermarks['base_id'] : '';
}
public static function getPresentation($base_id)
{
if ( ! isset(self::$_presentations['base_id'])) {
if (is_file(__DIR__ . '/../../config/presentation/' . $base_id))
self::$_presentations['base_id'] = '<img src="/custom/presentation/' . $base_id . '" />';
}
return isset(self::$_presentations['base_id']) ? self::$_presentations['base_id'] : '';
}
public static function getStamp($base_id)
{
if ( ! isset(self::$_stamps['base_id'])) {
if (is_file(__DIR__ . '/../../config/stamp/' . $base_id))
self::$_stamps['base_id'] = '<img src="/custom/stamp/' . $base_id . '" />';
}
return isset(self::$_stamps['base_id']) ? self::$_stamps['base_id'] : '';
}
public function get_cache_key($option = null) public function get_cache_key($option = null)
{ {
return 'collection_' . $this->coll_id . ($option ? '_' . $option : ''); return 'collection_' . $this->coll_id . ($option ? '_' . $option : '');
@@ -787,11 +766,6 @@ class collection implements cache_cacheableInterface, ThumbnailedElement
return $this->databox->delete_data_from_cache($this->get_cache_key($option)); return $this->databox->delete_data_from_cache($this->get_cache_key($option));
} }
public static function purge()
{
self::$_collections = [];
}
/** /**
* Tells whether registration is activated for provided collection or not. * Tells whether registration is activated for provided collection or not.
* *

View File

@@ -10,6 +10,7 @@
*/ */
use Alchemy\Phrasea\Application; use Alchemy\Phrasea\Application;
use Alchemy\Phrasea\Collection\CollectionRepository;
use Alchemy\Phrasea\Core\Connection\ConnectionSettings; use Alchemy\Phrasea\Core\Connection\ConnectionSettings;
use Alchemy\Phrasea\Core\PhraseaTokens; use Alchemy\Phrasea\Core\PhraseaTokens;
use Alchemy\Phrasea\Core\Version\DataboxVersionRepository; use Alchemy\Phrasea\Core\Version\DataboxVersionRepository;
@@ -151,69 +152,30 @@ class databox extends base implements \Alchemy\Phrasea\Core\Thumbnail\Thumbnaile
*/ */
public function get_collections() public function get_collections()
{ {
$ret = []; static $collections;
foreach ($this->get_available_collections() as $coll_id) { if ($collections === null) {
$ret[] = collection::get_from_coll_id($this->app, $this, $coll_id); /** @var CollectionRepository $collectionsRepository */
$collectionsRepository = $this->app['repo.collections'];
$collections = $collectionsRepository->findAllByDatabox($this->get_sbas_id());
} }
return $ret; return $collections;
} }
public function get_collection_unique_ids() public function get_collection_unique_ids()
{ {
static $base_ids; static $collectionsIds;
if (isset($base_ids)) { if ($collectionsIds === null) {
return $base_ids; $collectionsIds = [];
foreach ($this->get_collections() as $collection) {
$collectionsIds[] = $collection->get_base_id();
}
} }
$conn = $this->get_appbox()->get_connection(); return $collectionsIds;
$sql = "SELECT b.base_id FROM bas b WHERE b.sbas_id = :sbas_id AND b.active = '1' ORDER BY b.ord ASC";
$stmt = $conn->prepare($sql);
$stmt->execute([':sbas_id' => $this->id]);
$rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt->closeCursor();
$base_ids = [];
foreach ($rs as $row) {
$base_ids[] = (int) $row['base_id'];
}
return $base_ids;
}
protected function get_available_collections()
{
try {
$data = $this->get_data_from_cache(self::CACHE_COLLECTIONS);
if (is_array($data)) {
return $data;
}
} catch (\Exception $e) {
}
$conn = $this->get_appbox()->get_connection();
$sql = "SELECT b.server_coll_id FROM sbas s, bas b
WHERE s.sbas_id = b.sbas_id AND b.sbas_id = :sbas_id
AND b.active = '1'
ORDER BY s.ord ASC, b.ord,b.base_id ASC";
$stmt = $conn->prepare($sql);
$stmt->execute([':sbas_id' => $this->id]);
$rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt->closeCursor();
$ret = [];
foreach ($rs as $row) {
$ret[] = (int) $row['server_coll_id'];
}
$this->set_data_to_cache($ret, self::CACHE_COLLECTIONS);
return $ret;
} }
/** /**

View File

@@ -110,7 +110,7 @@ class patch_370alpha7a extends patchAbstract
$media = $app->getMediaFromUri($filePath); $media = $app->getMediaFromUri($filePath);
$collection = \collection::get_from_base_id($app, $row['base_id']); $collection = \collection::getByBaseId($app, $row['base_id']);
$borderFile = new \Alchemy\Phrasea\Border\File($app, $media, $collection); $borderFile = new \Alchemy\Phrasea\Border\File($app, $media, $collection);

View File

@@ -91,7 +91,7 @@ class patch_390alpha13a implements patchInterface
} }
try { try {
$collection = \collection::get_from_base_id($app, $row['base_id']); $collection = \collection::getByBaseId($app, $row['base_id']);
} catch (\Exception $e) { } catch (\Exception $e) {
$app['monolog']->addInfo(sprintf( $app['monolog']->addInfo(sprintf(
'Patch %s : Registration for user (%s) could not be turn into doctrine entity as base with id (%s) could not be found.', 'Patch %s : Registration for user (%s) could not be turn into doctrine entity as base with id (%s) could not be found.',

View File

@@ -300,7 +300,7 @@ class record_adapter implements RecordInterface, cache_cacheableInterface
*/ */
public function get_collection() public function get_collection()
{ {
return \collection::get_from_coll_id($this->app, $this->databox, $this->collection_id); return \collection::getByCollectionId($this->app, $this->databox, $this->collection_id);
} }
/** /**

View File

@@ -154,7 +154,7 @@ class AdminCollectionTest extends \PhraseanetAuthenticatedWebTestCase
$json = $this->getJson(self::$DI['client']->getResponse()); $json = $this->getJson(self::$DI['client']->getResponse());
$this->assertTrue($json->success); $this->assertTrue($json->success);
$collection = $collection = \collection::get_from_base_id(self::$DI['app'], self::$DI['collection']->get_base_id()); $collection = $collection = \collection::getByBaseId(self::$DI['app'], self::$DI['collection']->get_base_id());
$this->assertTrue( ! ! strrpos($collection->get_prefs(), 'my_new_value')); $this->assertTrue( ! ! strrpos($collection->get_prefs(), 'my_new_value'));
unset($collection); unset($collection);
} }
@@ -212,7 +212,7 @@ class AdminCollectionTest extends \PhraseanetAuthenticatedWebTestCase
$json = $this->getJson(self::$DI['client']->getResponse()); $json = $this->getJson(self::$DI['client']->getResponse());
$this->assertTrue($json->success); $this->assertTrue($json->success);
$collection = \collection::get_from_base_id(self::$DI['app'], self::$DI['collection']->get_base_id()); $collection = \collection::getByBaseId(self::$DI['app'], self::$DI['collection']->get_base_id());
$this->assertTrue($collection->is_active()); $this->assertTrue($collection->is_active());
unset($collection); unset($collection);
} }
@@ -252,7 +252,7 @@ class AdminCollectionTest extends \PhraseanetAuthenticatedWebTestCase
$json = $this->getJson(self::$DI['client']->getResponse()); $json = $this->getJson(self::$DI['client']->getResponse());
$this->assertTrue($json->success); $this->assertTrue($json->success);
$collection = \collection::get_from_base_id(self::$DI['app'], self::$DI['collection']->get_base_id()); $collection = \collection::getByBaseId(self::$DI['app'], self::$DI['collection']->get_base_id());
$this->assertFalse($collection->is_active()); $this->assertFalse($collection->is_active());
unset($collection); unset($collection);
} }
@@ -335,7 +335,7 @@ class AdminCollectionTest extends \PhraseanetAuthenticatedWebTestCase
$json = $this->getJson(self::$DI['client']->getResponse()); $json = $this->getJson(self::$DI['client']->getResponse());
$this->assertTrue($json->success); $this->assertTrue($json->success);
$collection = \collection::get_from_base_id(self::$DI['app'], self::$DI['collection']->get_base_id()); $collection = \collection::getByBaseId(self::$DI['app'], self::$DI['collection']->get_base_id());
$this->assertNotNull($collection->get_pub_wm()); $this->assertNotNull($collection->get_pub_wm());
unset($collection); unset($collection);
} }
@@ -832,7 +832,7 @@ class AdminCollectionTest extends \PhraseanetAuthenticatedWebTestCase
$json = $this->getJson(self::$DI['client']->getResponse()); $json = $this->getJson(self::$DI['client']->getResponse());
$this->assertTrue($json->success); $this->assertTrue($json->success);
try { try {
\collection::get_from_base_id(self::$DI['app'], $collection->get_base_id()); \collection::getByBaseId(self::$DI['app'], $collection->get_base_id());
$this->fail('Collection not deleted'); $this->fail('Collection not deleted');
} catch (\Exception $e) { } catch (\Exception $e) {
@@ -902,7 +902,7 @@ class AdminCollectionTest extends \PhraseanetAuthenticatedWebTestCase
$this->assertTrue($json->success); $this->assertTrue($json->success);
try { try {
\collection::get_from_base_id(self::$DI['app'], $collection->get_base_id()); \collection::getByBaseId(self::$DI['app'], $collection->get_base_id());
$this->fail('Collection not unmounted'); $this->fail('Collection not unmounted');
} catch (\Exception_Databox_CollectionNotFound $e) { } catch (\Exception_Databox_CollectionNotFound $e) {

View File

@@ -494,7 +494,7 @@ class ACLTest extends \PhraseanetTestCase
foreach ($bases as $base_id) { foreach ($bases as $base_id) {
try { try {
$collection = collection::get_from_base_id(self::$DI['app'], $base_id); $collection = collection::getByBaseId(self::$DI['app'], $base_id);
$this->assertTrue($collection instanceof collection); $this->assertTrue($collection instanceof collection);
$this->assertEquals($base_id, $collection->get_base_id()); $this->assertEquals($base_id, $collection->get_base_id());
unset($collection); unset($collection);

View File

@@ -196,15 +196,15 @@ abstract class PhraseanetTestCase extends WebTestCase
}); });
self::$DI['collection'] = self::$DI->share(function ($DI) { self::$DI['collection'] = self::$DI->share(function ($DI) {
return collection::get_from_base_id($DI['app'], self::$fixtureIds['collection']['coll']); return collection::getByBaseId($DI['app'], self::$fixtureIds['collection']['coll']);
}); });
self::$DI['collection_no_access'] = self::$DI->share(function ($DI) { self::$DI['collection_no_access'] = self::$DI->share(function ($DI) {
return collection::get_from_base_id($DI['app'], self::$fixtureIds['collection']['coll_no_access']); return collection::getByBaseId($DI['app'], self::$fixtureIds['collection']['coll_no_access']);
}); });
self::$DI['collection_no_access_by_status'] = self::$DI->share(function ($DI) { self::$DI['collection_no_access_by_status'] = self::$DI->share(function ($DI) {
return collection::get_from_base_id($DI['app'], self::$fixtureIds['collection']['coll_no_status']); return collection::getByBaseId($DI['app'], self::$fixtureIds['collection']['coll_no_status']);
}); });
self::$DI['lazaret_1'] = self::$DI->share(function ($DI) { self::$DI['lazaret_1'] = self::$DI->share(function ($DI) {

View File

@@ -175,7 +175,7 @@ class collectionTest extends \PhraseanetTestCase
public function testGet_from_coll_id() public function testGet_from_coll_id()
{ {
$temp_coll = collection::get_from_coll_id(self::$DI['app'], self::$object->get_databox(), self::$object->get_coll_id()); $temp_coll = collection::getByCollectionId(self::$DI['app'], self::$object->get_databox(), self::$object->get_coll_id());
$this->assertEquals(self::$object->get_coll_id(), $temp_coll->get_coll_id()); $this->assertEquals(self::$object->get_coll_id(), $temp_coll->get_coll_id());
$this->assertEquals(self::$object->get_base_id(), $temp_coll->get_base_id()); $this->assertEquals(self::$object->get_base_id(), $temp_coll->get_base_id());
} }