Merge branch 'master' into PHRAS-3584_story-cover-link

This commit is contained in:
Nicolas Maillat
2021-12-03 16:11:22 +01:00
committed by GitHub
60 changed files with 2222 additions and 292 deletions

View File

@@ -13,5 +13,5 @@ module.exports = {
setupDir: _root + 'tests/setup/node.js', setupDir: _root + 'tests/setup/node.js',
karmaConf: _root + 'config/karma.conf.js', karmaConf: _root + 'config/karma.conf.js',
// change this version when you change JS file for lazy loading // change this version when you change JS file for lazy loading
assetFileVersion: 30 assetFileVersion: 31
}; };

View File

@@ -4210,6 +4210,19 @@ var account = function account(services) {
}); });
}); });
$container.on('click', '.update-listened-event', function () {
var $this = (0, _jquery2.default)(this);
_jquery2.default.ajax({
type: 'POST',
url: $this.attr('data-path'),
dataType: 'json',
data: {
action: $this.is(':checked') ? 'add' : 'remove'
},
success: function success(data) {}
});
});
// delete an application // delete an application
/* $('a.delete-app').bind('click', function (e) { /* $('a.delete-app').bind('click', function (e) {
e.preventDefault(); e.preventDefault();

View File

@@ -4210,6 +4210,19 @@ var account = function account(services) {
}); });
}); });
$container.on('click', '.update-listened-event', function () {
var $this = (0, _jquery2.default)(this);
_jquery2.default.ajax({
type: 'POST',
url: $this.attr('data-path'),
dataType: 'json',
data: {
action: $this.is(':checked') ? 'add' : 'remove'
},
success: function success(data) {}
});
});
// delete an application // delete an application
/* $('a.delete-app').bind('click', function (e) { /* $('a.delete-app').bind('click', function (e) {
e.preventDefault(); e.preventDefault();

View File

@@ -96,7 +96,7 @@ return /******/ (function(modules) { // webpackBootstrap
/******/ if (__webpack_require__.nc) { /******/ if (__webpack_require__.nc) {
/******/ script.setAttribute("nonce", __webpack_require__.nc); /******/ script.setAttribute("nonce", __webpack_require__.nc);
/******/ } /******/ }
/******/ script.src = __webpack_require__.p + "lazy-" + ({}[chunkId]||chunkId) + ".js?v=30"; /******/ script.src = __webpack_require__.p + "lazy-" + ({}[chunkId]||chunkId) + ".js?v=31";
/******/ var timeout = setTimeout(onScriptComplete, 120000); /******/ var timeout = setTimeout(onScriptComplete, 120000);
/******/ script.onerror = script.onload = onScriptComplete; /******/ script.onerror = script.onload = onScriptComplete;
/******/ function onScriptComplete() { /******/ function onScriptComplete() {

View File

@@ -96,7 +96,7 @@ return /******/ (function(modules) { // webpackBootstrap
/******/ if (__webpack_require__.nc) { /******/ if (__webpack_require__.nc) {
/******/ script.setAttribute("nonce", __webpack_require__.nc); /******/ script.setAttribute("nonce", __webpack_require__.nc);
/******/ } /******/ }
/******/ script.src = __webpack_require__.p + "lazy-" + ({}[chunkId]||chunkId) + ".min.js?v=30"; /******/ script.src = __webpack_require__.p + "lazy-" + ({}[chunkId]||chunkId) + ".min.js?v=31";
/******/ var timeout = setTimeout(onScriptComplete, 120000); /******/ var timeout = setTimeout(onScriptComplete, 120000);
/******/ script.onerror = script.onload = onScriptComplete; /******/ script.onerror = script.onload = onScriptComplete;
/******/ function onScriptComplete() { /******/ function onScriptComplete() {

View File

@@ -91,7 +91,7 @@
/******/ if (__webpack_require__.nc) { /******/ if (__webpack_require__.nc) {
/******/ script.setAttribute("nonce", __webpack_require__.nc); /******/ script.setAttribute("nonce", __webpack_require__.nc);
/******/ } /******/ }
/******/ script.src = __webpack_require__.p + "lazy-" + ({}[chunkId]||chunkId) + ".js?v=30"; /******/ script.src = __webpack_require__.p + "lazy-" + ({}[chunkId]||chunkId) + ".js?v=31";
/******/ var timeout = setTimeout(onScriptComplete, 120000); /******/ var timeout = setTimeout(onScriptComplete, 120000);
/******/ script.onerror = script.onload = onScriptComplete; /******/ script.onerror = script.onload = onScriptComplete;
/******/ function onScriptComplete() { /******/ function onScriptComplete() {

View File

@@ -91,7 +91,7 @@
/******/ if (__webpack_require__.nc) { /******/ if (__webpack_require__.nc) {
/******/ script.setAttribute("nonce", __webpack_require__.nc); /******/ script.setAttribute("nonce", __webpack_require__.nc);
/******/ } /******/ }
/******/ script.src = __webpack_require__.p + "lazy-" + ({}[chunkId]||chunkId) + ".min.js?v=30"; /******/ script.src = __webpack_require__.p + "lazy-" + ({}[chunkId]||chunkId) + ".min.js?v=31";
/******/ var timeout = setTimeout(onScriptComplete, 120000); /******/ var timeout = setTimeout(onScriptComplete, 120000);
/******/ script.onerror = script.onload = onScriptComplete; /******/ script.onerror = script.onload = onScriptComplete;
/******/ function onScriptComplete() { /******/ function onScriptComplete() {

View File

@@ -168,6 +168,20 @@ const account = (services) => {
}); });
}); });
$container.on('click', '.update-listened-event', function () {
let $this = $(this);
$.ajax({
type: 'POST',
url: $this.attr('data-path'),
dataType: 'json',
data: {
action: $this.is(':checked') ? 'add' : 'remove'
},
success: function (data) {
}
});
});
// delete an application // delete an application
/* $('a.delete-app').bind('click', function (e) { /* $('a.delete-app').bind('click', function (e) {
e.preventDefault(); e.preventDefault();

View File

@@ -748,7 +748,9 @@ class Application extends SilexApplication
$dispatcher->addSubscriber(new BasketSubscriber($app)); $dispatcher->addSubscriber(new BasketSubscriber($app));
$dispatcher->addSubscriber(new LazaretSubscriber($app)); $dispatcher->addSubscriber(new LazaretSubscriber($app));
$dispatcher->addSubscriber(new ValidationSubscriber($app)); $dispatcher->addSubscriber(new ValidationSubscriber($app));
$dispatcher->addSubscriber(new WebhookUserEventSubscriber($app)); if ($this['configuration.store']->isSetup()) {
$dispatcher->addSubscriber(new WebhookUserEventSubscriber($app));
}
return $dispatcher; return $dispatcher;
}) })

View File

@@ -134,6 +134,7 @@ class RegenerateSqliteDb extends Command
$fixtures['user']['user_guest'] = $DI['user_guest']->getId(); $fixtures['user']['user_guest'] = $DI['user_guest']->getId();
$fixtures['oauth']['user'] = $DI['api-app-user']->getId(); $fixtures['oauth']['user'] = $DI['api-app-user']->getId();
$fixtures['oauth']['user1'] = $DI['api-app-user1']->getId();
$fixtures['oauth']['acc-user'] = $DI['api-app-acc-user']->getId(); $fixtures['oauth']['acc-user'] = $DI['api-app-acc-user']->getId();
$fixtures['oauth']['user-not-admin'] = $DI['api-app-user-not-admin']->getId(); $fixtures['oauth']['user-not-admin'] = $DI['api-app-user-not-admin']->getId();
$fixtures['oauth']['acc-user-not-admin'] = $DI['api-app-acc-user-not-admin']->getId(); $fixtures['oauth']['acc-user-not-admin'] = $DI['api-app-acc-user-not-admin']->getId();
@@ -209,6 +210,17 @@ class RegenerateSqliteDb extends Command
); );
} }
if (null === $DI['api-app-user1'] = $this->container['repo.api-applications']->findOneByName('test-web-user1')) {
$DI['api-app-user1'] = $this->container['manipulator.api-application']->create(
'test-web-user1',
ApiApplication::WEB_TYPE,
'',
'http://website.com/',
$DI['user_1'],
'http://callback.com/callback/'
);
}
} }
public function insertOauthAccounts(\Pimple $DI) public function insertOauthAccounts(\Pimple $DI)
@@ -221,6 +233,8 @@ class RegenerateSqliteDb extends Command
$apiOAuthTokenManipulator->create($DI['api-app-acc-user']); $apiOAuthTokenManipulator->create($DI['api-app-acc-user']);
$DI['api-app-acc-user-not-admin'] = $apiAccountManipulator->create($DI['api-app-user-not-admin'], $DI['user_notAdmin'], V2::VERSION); $DI['api-app-acc-user-not-admin'] = $apiAccountManipulator->create($DI['api-app-user-not-admin'], $DI['user_notAdmin'], V2::VERSION);
$apiOAuthTokenManipulator->create($DI['api-app-acc-user-not-admin']); $apiOAuthTokenManipulator->create($DI['api-app-acc-user-not-admin']);
$DI['api-app-acc-user1'] = $apiAccountManipulator->create($DI['api-app-user1'], $DI['user_1'], V2::VERSION);
$apiOAuthTokenManipulator->create($DI['api-app-acc-user1']);
} }
public function insertNativeApps() public function insertNativeApps()
@@ -665,12 +679,20 @@ class RegenerateSqliteDb extends Command
$publisher->setFeed($feed); $publisher->setFeed($feed);
$feed->addPublisher($publisher); $feed->addPublisher($publisher);
$publisher1 = new FeedPublisher();
$publisher1->setUser($DI['user_1']);
$publisher1->setIsOwner(false);
$publisher1->setFeed($feed);
$feed->setTitle("Feed test, Public!"); $feed->setTitle("Feed test, Public!");
$feed->setIsPublic(true); $feed->setIsPublic(true);
$feed->setSubtitle("description"); $feed->setSubtitle("description");
$em->persist($feed); $em->persist($feed);
$em->persist($publisher); $em->persist($publisher);
$em->persist($publisher1);
$entry = $this->insertOneFeedEntry($em, $DI, $feed, true); $entry = $this->insertOneFeedEntry($em, $DI, $feed, true);
$token = $this->insertOneFeedToken($em, $DI, $feed); $token = $this->insertOneFeedToken($em, $DI, $feed);

View File

@@ -9,10 +9,12 @@
*/ */
namespace Alchemy\Phrasea\Controller\Root; namespace Alchemy\Phrasea\Controller\Root;
use Alchemy\Phrasea\Application\Helper\EntityManagerAware;
use Alchemy\Phrasea\Controller\Controller; use Alchemy\Phrasea\Controller\Controller;
use Alchemy\Phrasea\ControllerProvider\Api\V2; use Alchemy\Phrasea\ControllerProvider\Api\V2;
use Alchemy\Phrasea\Exception\InvalidArgumentException; use Alchemy\Phrasea\Exception\InvalidArgumentException;
use Alchemy\Phrasea\Model\Entities\ApiApplication; use Alchemy\Phrasea\Model\Entities\ApiApplication;
use Alchemy\Phrasea\Model\Entities\WebhookEvent;
use Alchemy\Phrasea\Model\Manipulator\ApiAccountManipulator; use Alchemy\Phrasea\Model\Manipulator\ApiAccountManipulator;
use Alchemy\Phrasea\Model\Manipulator\ApiApplicationManipulator; use Alchemy\Phrasea\Model\Manipulator\ApiApplicationManipulator;
use Alchemy\Phrasea\Model\Manipulator\ApiOauthTokenManipulator; use Alchemy\Phrasea\Model\Manipulator\ApiOauthTokenManipulator;
@@ -29,6 +31,8 @@ use Symfony\Component\Validator\Validator\ValidatorInterface;
class DeveloperController extends Controller class DeveloperController extends Controller
{ {
use EntityManagerAware;
/** /**
* Delete application. * Delete application.
* *
@@ -253,9 +257,34 @@ class DeveloperController extends Controller
"deliveries" => $deliveries, "deliveries" => $deliveries,
"user" => $user, "user" => $user,
"token" => $token, "token" => $token,
"webhook_event_list" => $this->getWebhookEventsList()
]); ]);
} }
/**
* Update listenedEvents in application
*
* @param Request $request
* @param ApiApplication $application
* @return JsonResponse
*/
public function updateListenedEvent(Request $request, ApiApplication $application)
{
$manager = $this->getEntityManager();
$eventName = $request->query->get('event_name');
if ($request->request->get('action') == 'add') {
$application->addListenedEvent($eventName);
} elseif ($request->request->get('action') == 'remove') {
$application->removeListenedEvent($eventName);
}
$manager->persist($application);
$manager->flush();
return $this->app->json(['success' => true]);
}
/** /**
* @return ApiAccountRepository * @return ApiAccountRepository
*/ */
@@ -311,4 +340,38 @@ class DeveloperController extends Controller
{ {
return $this->app['webhook.delivery_repository']; return $this->app['webhook.delivery_repository'];
} }
private function getWebhookEventsList()
{
return [
WebhookEvent::RECORD_TYPE => [
WebhookEvent::RECORD_CREATED => $this->app->trans("developers:: record or story created"),
WebhookEvent::RECORD_EDITED => $this->app->trans('developers:: record or story edited'),
WebhookEvent::RECORD_DELETED => $this->app->trans('developers:: record or story deleted'),
WebhookEvent::RECORD_MEDIA_SUBSTITUTED => $this->app->trans('developers:: media substituted for record'),
WebhookEvent::RECORD_COLLECTION_CHANGED => $this->app->trans('developers:: collection changed for record'),
WebhookEvent::RECORD_STATUS_CHANGED => $this->app->trans('developers:: status changed for record')
],
WebhookEvent::RECORD_SUBDEF_TYPE => [
WebhookEvent::RECORD_SUBDEF_CREATED => $this->app->trans('developers:: subdef created for a record'),
WebhookEvent::RECORD_SUBDEF_FAILED => $this->app->trans('developers:: subdef creation failed for a record'),
],
WebhookEvent::USER_TYPE => [
WebhookEvent::USER_CREATED => $this->app->trans('developers:: new user created'),
WebhookEvent::USER_DELETED => $this->app->trans('developers:: user deleted on phraseanet')
],
WebhookEvent::USER_REGISTRATION_TYPE => [
WebhookEvent::USER_REGISTRATION_GRANTED => $this->app->trans('developers:: user registration granted on phraseanet'),
WebhookEvent::USER_REGISTRATION_REJECTED => $this->app->trans('developers:: user registration rejected on phraseanet')
],
WebhookEvent::FEED_ENTRY_TYPE => [
WebhookEvent::NEW_FEED_ENTRY => $this->app->trans('developers:: new feed entry on phraseanet')
],
WebhookEvent::ORDER_TYPE => [
WebhookEvent::ORDER_CREATED => $this->app->trans('developers:: new order created'),
WebhookEvent::ORDER_DELIVERED => $this->app->trans('developers:: a order delivered'),
WebhookEvent::ORDER_DENIED => $this->app->trans('developers:: a order denied')
]
];
}
} }

View File

@@ -14,6 +14,7 @@ namespace Alchemy\Phrasea\ControllerProvider\Root;
use Alchemy\Phrasea\Application as PhraseaApplication; use Alchemy\Phrasea\Application as PhraseaApplication;
use Alchemy\Phrasea\Controller\Root\DeveloperController; use Alchemy\Phrasea\Controller\Root\DeveloperController;
use Alchemy\Phrasea\ControllerProvider\ControllerProviderTrait; use Alchemy\Phrasea\ControllerProvider\ControllerProviderTrait;
use Alchemy\Phrasea\Core\LazyLocator;
use Silex\Application; use Silex\Application;
use Silex\ControllerProviderInterface; use Silex\ControllerProviderInterface;
use Silex\ServiceProviderInterface; use Silex\ServiceProviderInterface;
@@ -25,7 +26,8 @@ class Developers implements ControllerProviderInterface, ServiceProviderInterfac
public function register(Application $app) public function register(Application $app)
{ {
$app['controller.account.developers'] = $app->share(function (PhraseaApplication $app) { $app['controller.account.developers'] = $app->share(function (PhraseaApplication $app) {
return (new DeveloperController($app)); return (new DeveloperController($app))
->setEntityManagerLocator(new LazyLocator($app, 'orm.em'));
}); });
} }
@@ -58,6 +60,11 @@ class Developers implements ControllerProviderInterface, ServiceProviderInterfac
->assert('application', '\d+') ->assert('application', '\d+')
->bind('developers_application'); ->bind('developers_application');
$controllers->post('/application/{application}/listened-event', 'controller.account.developers:updateListenedEvent')
->before($app['middleware.api-application.converter'])
->assert('application', '\d+')
->bind('developers_application_listened_event');
$controllers->delete('/application/{application}/', 'controller.account.developers:deleteApp') $controllers->delete('/application/{application}/', 'controller.account.developers:deleteApp')
->before($app['middleware.api-application.converter']) ->before($app['middleware.api-application.converter'])
->assert('application', '\d+') ->assert('application', '\d+')

View File

@@ -13,4 +13,40 @@ namespace Alchemy\Phrasea\Core\Event\Record;
class CollectionChangedEvent extends RecordEvent class CollectionChangedEvent extends RecordEvent
{ {
/** @var array */
private $beforeCollection;
/** @var array */
private $afterCollection;
public function __construct(\record_adapter $record, \collection $beforeCol, \collection $afterCol)
{
parent::__construct($record);
$this->beforeCollection = [
'collection_name' => $beforeCol->get_name(),
'collection_id' => $beforeCol->get_base_id()
];
$this->afterCollection = [
'collection_name' => $afterCol->get_name(),
'collection_id' => $afterCol->get_base_id()
];
}
/**
* @return array
*/
public function getBeforeCollection()
{
return $this->beforeCollection;
}
/**
* @return array
*/
public function getAfterCollection()
{
return $this->afterCollection;
}
} }

View File

@@ -13,4 +13,26 @@ namespace Alchemy\Phrasea\Core\Event\Record;
class StatusChangedEvent extends RecordEvent class StatusChangedEvent extends RecordEvent
{ {
/** @var array */
private $statusBefore;
/** @var array */
private $statusAfter;
public function __construct(\record_adapter $record, array $statusBefore, array $statusAfter)
{
parent::__construct($record);
$this->statusBefore = $statusBefore;
$this->statusAfter = $statusAfter;
}
public function getStatusBefore()
{
return $this->statusBefore;
}
public function getStatusAfter()
{
return $this->statusAfter;
}
} }

View File

@@ -34,7 +34,7 @@ class FeedEntrySubscriber extends AbstractNotificationSubscriber
WebhookEvent::NEW_FEED_ENTRY, WebhookEvent::NEW_FEED_ENTRY,
WebhookEvent::FEED_ENTRY_TYPE, WebhookEvent::FEED_ENTRY_TYPE,
array_merge(array('feed_id' => $entry->getFeed()->getId()), $params), array_merge(array('feed_id' => $entry->getFeed()->getId()), $params),
$entry->getFeed()->getBaseId() ? [$entry->getFeed()->getBaseId()] : [] []
); );
$datas = json_encode($params); $datas = json_encode($params);

View File

@@ -0,0 +1,172 @@
<?php
namespace Alchemy\Phrasea\Core\Event\Subscriber;
use Alchemy\Phrasea\Application;
use Alchemy\Phrasea\Core\Event\Record\CollectionChangedEvent;
use Alchemy\Phrasea\Core\Event\Record\RecordEvent;
use Alchemy\Phrasea\Core\Event\Record\RecordEvents;
use Alchemy\Phrasea\Core\Event\Record\StatusChangedEvent;
use Alchemy\Phrasea\Core\LazyLocator;
use Alchemy\Phrasea\Core\PhraseaEvents;
use Alchemy\Phrasea\Model\Entities\WebhookEvent;
use Alchemy\Phrasea\Model\RecordInterface;
use Assert\Assertion;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class WebhookRecordEventSubscriber implements EventSubscriberInterface
{
/**
* @var Application
*/
private $app;
/**
* @var callable
*/
private $appboxLocator;
/**
* @param Application $application
*/
public function __construct(Application $application)
{
$this->app = $application;
$this->appboxLocator = new LazyLocator($this->app, 'phraseanet.appbox');
}
public function onRecordCreated(RecordEvent $event)
{
$this->createWebhookEvent($event, WebhookEvent::RECORD_CREATED);
}
public function onRecordEdit(RecordEvent $event)
{
$this->createWebhookEvent($event, WebhookEvent::RECORD_EDITED);
}
public function onRecordDeleted(RecordEvent $event)
{
$this->createWebhookEvent($event, WebhookEvent::RECORD_DELETED);
}
public function onRecordMediaSubstituted(RecordEvent $event)
{
// event only from record_type = record
$this->createWebhookEvent($event, WebhookEvent::RECORD_MEDIA_SUBSTITUTED);
}
public function onRecordCollectionChanged(CollectionChangedEvent $event)
{
$record = $this->convertToRecordAdapter($event->getRecord());
if ($record !== null) {
$eventData = [
'databox_id' => $event->getRecord()->getDataboxId(),
'record_id' => $event->getRecord()->getRecordId(),
'collection_name' => $record->getCollection()->get_name(),
'base_id' => $record->getBaseId(),
'record_type' => $event->getRecord()->isStory() ? "story" : "record",
'before' => $event->getBeforeCollection(),
'after' => $event->getAfterCollection()
];
$this->app['manipulator.webhook-event']->create(
WebhookEvent::RECORD_COLLECTION_CHANGED,
WebhookEvent::RECORD_TYPE,
$eventData,
[$event->getRecord()->getBaseId()]
);
} else {
$this->app['logger']->error("Record not found when wanting to create webhook data!");
}
}
public function onRecordStatusChanged(StatusChangedEvent $event)
{
$record = $this->convertToRecordAdapter($event->getRecord());
if ($record !== null) {
$eventData = [
'databox_id' => $event->getRecord()->getDataboxId(),
'record_id' => $event->getRecord()->getRecordId(),
'collection_name' => $record->getCollection()->get_name(),
'base_id' => $record->getBaseId(),
'record_type' => $event->getRecord()->isStory() ? "story" : "record",
'before' => $event->getStatusBefore(),
'after' => $event->getStatusAfter()
];
$this->app['manipulator.webhook-event']->create(
WebhookEvent::RECORD_STATUS_CHANGED,
WebhookEvent::RECORD_TYPE,
$eventData,
[$event->getRecord()->getBaseId()]
);
} else {
$this->app['logger']->error("Record not found when wanting to create webhook data!");
}
}
/**
* @inheritDoc
*/
public static function getSubscribedEvents()
{
return [
RecordEvents::CREATED => 'onRecordCreated', /** @uses onRecordCreated */
PhraseaEvents::RECORD_EDIT => 'onRecordEdit', /** @uses onRecordEdit */
RecordEvents::DELETED => 'onRecordDeleted', /** @uses onRecordDeleted */
RecordEvents::MEDIA_SUBSTITUTED => 'onRecordMediaSubstituted', /** @uses onRecordMediaSubstituted */
RecordEvents::COLLECTION_CHANGED => 'onRecordCollectionChanged', /** @uses onRecordCollectionChanged */
RecordEvents::STATUS_CHANGED => 'onRecordStatusChanged', /** @uses onRecordStatusChanged */
];
}
private function createWebhookEvent(RecordEvent $event, $webhookEventName)
{
$record = $this->convertToRecordAdapter($event->getRecord());
if ($record !== null) {
$eventData = [
'databox_id' => $event->getRecord()->getDataboxId(),
'record_id' => $event->getRecord()->getRecordId(),
'collection_name' => $record->getCollection()->get_name(),
'base_id' => $record->getBaseId(),
'record_type' => $event->getRecord()->isStory() ? "story" : "record"
];
$this->app['manipulator.webhook-event']->create(
$webhookEventName,
WebhookEvent::RECORD_TYPE,
$eventData,
[$event->getRecord()->getBaseId()]
);
} else {
$this->app['logger']->error("Record not found when wanting to create webhook data!");
}
}
private function convertToRecordAdapter(RecordInterface $record)
{
if ($record instanceof \record_adapter) {
return $record;
}
$databox = $this->getApplicationBox()->get_databox($record->getDataboxId());
$recordAdapter = $databox->getRecordRepository()->find($record->getRecordId());
return ($recordAdapter !== null) ? $recordAdapter : null;
}
/**
* @return \appbox
*/
private function getApplicationBox()
{
$callable = $this->appboxLocator;
return $callable();
}
}

View File

@@ -5,7 +5,9 @@ namespace Alchemy\Phrasea\Core\Event\Subscriber;
use Alchemy\Phrasea\Core\Event\Record\RecordEvents; use Alchemy\Phrasea\Core\Event\Record\RecordEvents;
use Alchemy\Phrasea\Core\Event\Record\SubDefinitionCreatedEvent; use Alchemy\Phrasea\Core\Event\Record\SubDefinitionCreatedEvent;
use Alchemy\Phrasea\Core\Event\Record\SubDefinitionCreationFailedEvent; use Alchemy\Phrasea\Core\Event\Record\SubDefinitionCreationFailedEvent;
use Alchemy\Phrasea\Core\LazyLocator;
use Alchemy\Phrasea\Model\Entities\WebhookEvent; use Alchemy\Phrasea\Model\Entities\WebhookEvent;
use Alchemy\Phrasea\Model\RecordInterface;
use Silex\Application; use Silex\Application;
use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface;
@@ -13,17 +15,27 @@ class WebhookSubdefEventSubscriber implements EventSubscriberInterface
{ {
private $app; private $app;
/**
* @var callable
*/
private $appboxLocator;
public function __construct(Application $app) public function __construct(Application $app)
{ {
$this->app = $app; $this->app = $app;
$this->appboxLocator = new LazyLocator($this->app, 'phraseanet.appbox');
} }
public function onSubdefCreated(SubDefinitionCreatedEvent $event) public function onSubdefCreated(SubDefinitionCreatedEvent $event)
{ {
$record = $this->convertToRecordAdapter($event->getRecord());
$eventData = [ $eventData = [
'databox_id' => $event->getRecord()->getDataboxId(), 'databox_id' => $record->getDataboxId(),
'record_id' => $event->getRecord()->getRecordId(), 'record_id' => $record->getRecordId(),
'subdef' => $event->getSubDefinitionName() 'collection_name' => $record->getCollection()->get_name(),
'base_id' => $record->getBaseId(),
'subdef_name' => $event->getSubDefinitionName()
]; ];
$this->app['manipulator.webhook-event']->create( $this->app['manipulator.webhook-event']->create(
@@ -36,10 +48,14 @@ class WebhookSubdefEventSubscriber implements EventSubscriberInterface
public function onSubdefCreationFailed(SubDefinitionCreationFailedEvent $event) public function onSubdefCreationFailed(SubDefinitionCreationFailedEvent $event)
{ {
$record = $this->convertToRecordAdapter($event->getRecord());
$eventData = [ $eventData = [
'databox_id' => $event->getRecord()->getDataboxId(), 'databox_id' => $record->getDataboxId(),
'record_id' => $event->getRecord()->getRecordId(), 'record_id' => $record->getRecordId(),
'subdef' => $event->getSubDefinitionName() 'collection_name' => $record->getCollection()->get_name(),
'base_id' => $record->getBaseId(),
'subdef_name' => $event->getSubDefinitionName()
]; ];
$this->app['manipulator.webhook-event']->create( $this->app['manipulator.webhook-event']->create(
@@ -57,4 +73,27 @@ class WebhookSubdefEventSubscriber implements EventSubscriberInterface
RecordEvents::SUB_DEFINITION_CREATION_FAILED => 'onSubdefCreationFailed' RecordEvents::SUB_DEFINITION_CREATION_FAILED => 'onSubdefCreationFailed'
]; ];
} }
private function convertToRecordAdapter(RecordInterface $record)
{
if ($record instanceof \record_adapter) {
return $record;
}
$databox = $this->getApplicationBox()->get_databox($record->getDataboxId());
$recordAdapter = $databox->getRecordRepository()->find($record->getRecordId());
return ($recordAdapter !== null) ? $recordAdapter : null;
}
/**
* @return \appbox
*/
private function getApplicationBox()
{
$callable = $this->appboxLocator;
return $callable();
}
} }

View File

@@ -12,6 +12,7 @@
namespace Alchemy\Phrasea\Core\Event\Subscriber; namespace Alchemy\Phrasea\Core\Event\Subscriber;
use Alchemy\Phrasea\Application; use Alchemy\Phrasea\Application;
use Alchemy\Phrasea\Core\Event\User\CreatedEvent;
use Alchemy\Phrasea\Core\Event\User\DeletedEvent; use Alchemy\Phrasea\Core\Event\User\DeletedEvent;
use Alchemy\Phrasea\Core\Event\User\UserEvents; use Alchemy\Phrasea\Core\Event\User\UserEvents;
use Alchemy\Phrasea\Model\Entities\WebhookEvent; use Alchemy\Phrasea\Model\Entities\WebhookEvent;
@@ -40,18 +41,30 @@ class WebhookUserEventSubscriber implements EventSubscriberInterface
{ {
/** @var WebhookEventManipulator $manipulator */ /** @var WebhookEventManipulator $manipulator */
$manipulator = $this->app['manipulator.webhook-event']; $manipulator = $this->app['manipulator.webhook-event'];
$manipulator->create(WebhookEvent::USER_DELETED, WebhookEvent::USER_TYPE, [
$manipulator->create(WebhookEvent::USER_DELETED, WebhookEvent::USER_DELETED_TYPE, [
'user_id' => $event->getUserId(), 'user_id' => $event->getUserId(),
'email' => $event->getEmailAddress(), 'email' => $event->getEmailAddress(),
'login' => $event->getLogin() 'login' => $event->getLogin()
], $event->getGrantedBaseIds()); ], $event->getGrantedBaseIds());
} }
public function onUserCreated(CreatedEvent $event)
{
/** @var WebhookEventManipulator $manipulator */
$manipulator = $this->app['manipulator.webhook-event'];
$user = $event->getUser();
$manipulator->create(WebhookEvent::USER_CREATED, WebhookEvent::USER_TYPE, [
'user_id' => $user->getId(),
'email' => $user->getEmail(),
'login' => $user->getLogin()
], []);
}
public static function getSubscribedEvents() public static function getSubscribedEvents()
{ {
return [ return [
UserEvents::DELETED => 'onUserDeleted' UserEvents::DELETED => 'onUserDeleted',
UserEvents::CREATED => 'onUserCreated'
]; ];
} }
} }

View File

@@ -2,6 +2,7 @@
namespace Alchemy\Phrasea\Core\Provider; namespace Alchemy\Phrasea\Core\Provider;
use Alchemy\Phrasea\Core\Event\Subscriber\WebhookRecordEventSubscriber;
use Alchemy\Phrasea\Core\Event\Subscriber\WebhookSubdefEventSubscriber; use Alchemy\Phrasea\Core\Event\Subscriber\WebhookSubdefEventSubscriber;
use Alchemy\Phrasea\Webhook\EventProcessorFactory; use Alchemy\Phrasea\Webhook\EventProcessorFactory;
use Alchemy\Phrasea\Webhook\EventProcessorWorker; use Alchemy\Phrasea\Webhook\EventProcessorWorker;
@@ -64,6 +65,7 @@ class WebhookServiceProvider implements ServiceProviderInterface
$app['dispatcher'] = $app->share( $app['dispatcher'] = $app->share(
$app->extend('dispatcher', function (EventDispatcher $dispatcher, Application $app) { $app->extend('dispatcher', function (EventDispatcher $dispatcher, Application $app) {
$dispatcher->addSubscriber(new WebhookSubdefEventSubscriber($app)); $dispatcher->addSubscriber(new WebhookSubdefEventSubscriber($app));
$dispatcher->addSubscriber(new WebhookRecordEventSubscriber($app));
return $dispatcher; return $dispatcher;
}) })

View File

@@ -131,6 +131,28 @@ class ApiApplication
*/ */
private $webhookUrl; private $webhookUrl;
/**
* List of events to trigger webhook
* @var array
*
* @ORM\Column(name="listened_events", type="json_array", nullable=true)
*/
private $listenedEvents;
/**
* @var string
*
* @ORM\Column(name="hmac_key", type="string", length=1024, nullable=true)
*/
private $hmacKey;
/**
* @var integer
*
* @ORM\Column(name="webhook_unactivate", type="boolean", nullable=false)
*/
private $webhookUnactivate = false;
public function __construct() public function __construct()
{ {
$this->accounts = new ArrayCollection(); $this->accounts = new ArrayCollection();
@@ -431,4 +453,69 @@ class ApiApplication
return $this; return $this;
} }
/**
* @param array $listenedEvents
*/
public function setListenedEvents(array $listenedEvents)
{
$this->listenedEvents = $listenedEvents;
}
/**
* @param $eventName
*/
public function addListenedEvent($eventName)
{
$this->listenedEvents[] = $eventName;
}
/**
* @param $eventName
* @return $this
*/
public function removeListenedEvent($eventName)
{
$keys = array_keys($this->listenedEvents, $eventName, true);
foreach ($keys as $key) {
unset($this->listenedEvents[$key]);
}
return $this;
}
/**
* @return array
*/
public function getListenedEvents()
{
return $this->listenedEvents;
}
public function getHmacKey()
{
return $this->hmacKey;
}
public function setHmacKey($hmacKey)
{
$this->hmacKey = $hmacKey;
}
/**
* @return boolean
*/
public function isWebhookUnactivate()
{
return $this->webhookUnactivate;
}
/**
* @param boolean $webhookUnactivate
*/
public function setWebhookUnactivate($webhookUnactivate)
{
$this->webhookUnactivate = (Boolean) $webhookUnactivate;
}
} }

View File

@@ -77,6 +77,11 @@ class FeedEntry
*/ */
private $feed; private $feed;
/**
* @ORM\Column(name="notifyemail_on", type="datetime", nullable=true)
*/
private $notifyEmailOn;
/** /**
* Constructor * Constructor
*/ */
@@ -213,7 +218,7 @@ class FeedEntry
/** /**
* Set updated * Set updated
* *
* @param \DateTime $updated * @param \DateTime $updatedOn
* @return FeedEntry * @return FeedEntry
*/ */
public function setUpdatedOn($updatedOn) public function setUpdatedOn($updatedOn)
@@ -312,6 +317,26 @@ class FeedEntry
return $this->feed; return $this->feed;
} }
/**
* Get notifyEmailOn
*
* @return \DateTime|null
*/
public function getNotifyEmailOn()
{
return $this->notifyEmailOn;
}
/**
* Set notifyEmailOn
*
* @param \DateTime $notifyEmailOn
*/
public function setNotifyEmailOn($notifyEmailOn)
{
$this->notifyEmailOn = $notifyEmailOn;
}
/** /**
* Returns a boolean indicating whether the given User is the publisher of the entry. * Returns a boolean indicating whether the given User is the publisher of the entry.
* *

View File

@@ -261,6 +261,11 @@ class User
**/ **/
private $notificationSettings; private $notificationSettings;
/**
* @ORM\Column(type="boolean", name="granted_api", options={"default" = 0})
*/
private $grantedApi = false;
/** /**
* Constructor * Constructor
*/ */
@@ -1053,6 +1058,26 @@ class User
return $this; return $this;
} }
/**
* @return boolean
*/
public function hasGrantedApi()
{
return $this->grantedApi;
}
/**
* @param boolean $grantedApi
*
* @return User
*/
public function setGrantedApi($grantedApi)
{
$this->grantedApi = (Boolean) $grantedApi;
return $this;
}
/** /**
* @return boolean * @return boolean
*/ */

View File

@@ -11,6 +11,8 @@ use Gedmo\Mapping\Annotation as Gedmo;
*/ */
class WebhookEvent class WebhookEvent
{ {
const WEBHOOK_VERSION = 1;
const NEW_FEED_ENTRY = 'new_feed_entry'; const NEW_FEED_ENTRY = 'new_feed_entry';
const FEED_ENTRY_TYPE = 'feed_entry'; const FEED_ENTRY_TYPE = 'feed_entry';
@@ -18,9 +20,6 @@ class WebhookEvent
const USER_REGISTRATION_REJECTED = 'user.registration.rejected'; const USER_REGISTRATION_REJECTED = 'user.registration.rejected';
const USER_REGISTRATION_TYPE = 'user.registration'; const USER_REGISTRATION_TYPE = 'user.registration';
const USER_DELETED = 'user.deleted';
const USER_DELETED_TYPE = 'user.deleted';
const RECORD_SUBDEF_CREATED = 'record.subdef.created'; const RECORD_SUBDEF_CREATED = 'record.subdef.created';
const RECORD_SUBDEF_FAILED = 'record.subdef.creation_failed'; const RECORD_SUBDEF_FAILED = 'record.subdef.creation_failed';
const RECORD_SUBDEFS_CREATED = 'record.subdefs.created'; const RECORD_SUBDEFS_CREATED = 'record.subdefs.created';
@@ -31,6 +30,38 @@ class WebhookEvent
const ORDER_DELIVERED = 'order.delivered'; const ORDER_DELIVERED = 'order.delivered';
const ORDER_DENIED = 'order.denied'; const ORDER_DENIED = 'order.denied';
const USER_TYPE = 'user';
const USER_CREATED = 'user.created';
const USER_DELETED = 'user.deleted';
// const use only as name and type of a webhook
const RECORD_TYPE = 'record';
const RECORD_CREATED = 'record.created';
const RECORD_EDITED = 'record.edited';
const RECORD_DELETED = 'record.deleted';
const RECORD_MEDIA_SUBSTITUTED = 'record.media_substituted';
const RECORD_COLLECTION_CHANGED = 'record.collection_changed';
const RECORD_STATUS_CHANGED = 'record.status_changed';
public static $eventsAccessRight = [
self::RECORD_CREATED => [\ACL::ACCESS, \ACL::ACTIF],
self::RECORD_EDITED => [\ACL::ACCESS, \ACL::ACTIF, \ACL::CANMODIFRECORD],
self::RECORD_DELETED => [\ACL::ACCESS, \ACL::ACTIF, \ACL::CANDELETERECORD],
self::RECORD_MEDIA_SUBSTITUTED => [\ACL::ACCESS, \ACL::ACTIF, \ACL::IMGTOOLS],
self::RECORD_COLLECTION_CHANGED => [\ACL::ACCESS, \ACL::ACTIF, \ACL::CANADDRECORD, \ACL::CANDELETERECORD],
self::RECORD_STATUS_CHANGED => [\ACL::ACCESS, \ACL::ACTIF, \ACL::CANMODIFRECORD],
self::RECORD_SUBDEF_CREATED => [\ACL::ACCESS, \ACL::ACTIF, [\ACL::IMGTOOLS, \ACL::CANADDRECORD]],// only one right required from the sub-array
self::RECORD_SUBDEF_FAILED => [\ACL::ACCESS, \ACL::ACTIF, [\ACL::IMGTOOLS, \ACL::CANADDRECORD]],
self::USER_CREATED => [\ACL::ACCESS, \ACL::ACTIF, \ACL::CANADMIN],
self::USER_DELETED => [\ACL::ACCESS, \ACL::ACTIF, \ACL::CANADMIN],
self::USER_REGISTRATION_GRANTED => [\ACL::ACCESS, \ACL::ACTIF, \ACL::CANADMIN],
self::USER_REGISTRATION_REJECTED=> [\ACL::ACCESS, \ACL::ACTIF, \ACL::CANADMIN],
self::NEW_FEED_ENTRY => [\ACL::ACCESS, \ACL::ACTIF, \ACL::BAS_CHUPUB],
self::ORDER_CREATED => [\ACL::ACCESS, \ACL::ACTIF, \ACL::ORDER_MASTER],
self::ORDER_DELIVERED => [\ACL::ACCESS, \ACL::ACTIF, \ACL::ORDER_MASTER],
self::ORDER_DENIED => [\ACL::ACCESS, \ACL::ACTIF, \ACL::ORDER_MASTER]
];
/** /**
* @ORM\Column(type="integer") * @ORM\Column(type="integer")
* @ORM\Id * @ORM\Id

View File

@@ -67,8 +67,11 @@ class WebhookEventManipulator implements ManipulatorInterface
public function update(WebhookEvent $event) public function update(WebhookEvent $event)
{ {
$this->om->persist($event); try {
$this->om->flush(); $this->om->persist($event);
$this->om->flush();
} catch (\Exception $e) {
}
} }
public function processed(WebhookEvent $event) public function processed(WebhookEvent $event)

View File

@@ -20,6 +20,7 @@ use Alchemy\Phrasea\Core\Event\Record\Structure\RecordStructureEvents;
use Alchemy\Phrasea\Core\Event\Thesaurus\ReindexRequiredEvent; use Alchemy\Phrasea\Core\Event\Thesaurus\ReindexRequiredEvent;
use Alchemy\Phrasea\Core\Event\Thesaurus\ThesaurusEvent; use Alchemy\Phrasea\Core\Event\Thesaurus\ThesaurusEvent;
use Alchemy\Phrasea\Core\Event\Thesaurus\ThesaurusEvents; use Alchemy\Phrasea\Core\Event\Thesaurus\ThesaurusEvents;
use Alchemy\Phrasea\WorkerManager\Event\WorkerEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface;
/** /**
@@ -81,6 +82,7 @@ class IndexerSubscriber implements EventSubscriberInterface
CollectionEvents::NAME_CHANGED => 'onCollectionChange', CollectionEvents::NAME_CHANGED => 'onCollectionChange',
RecordEvents::CREATED => 'onRecordChange', RecordEvents::CREATED => 'onRecordChange',
RecordEvents::DELETED => 'onRecordDelete', RecordEvents::DELETED => 'onRecordDelete',
WorkerEvents::RECORD_DELETE_INDEX => 'onRecordDelete',
RecordEvents::COLLECTION_CHANGED => 'onRecordChange', RecordEvents::COLLECTION_CHANGED => 'onRecordChange',
RecordEvents::METADATA_CHANGED => 'onRecordChange', RecordEvents::METADATA_CHANGED => 'onRecordChange',
RecordEvents::ORIGINAL_NAME_CHANGED => 'onRecordChange', RecordEvents::ORIGINAL_NAME_CHANGED => 'onRecordChange',

View File

@@ -59,7 +59,7 @@ class PhraseanetExtension extends \Twig_Extension
{ {
return [ return [
// change this version when you change JS file to force the navigation to reload js file // change this version when you change JS file to force the navigation to reload js file
'assetFileVersion' => 30 'assetFileVersion' => 31
]; ];
} }

View File

@@ -10,7 +10,9 @@ use Alchemy\Phrasea\Webhook\Processor\FeedEntryProcessorFactory;
use Alchemy\Phrasea\Webhook\Processor\OrderNotificationProcessorFactory; use Alchemy\Phrasea\Webhook\Processor\OrderNotificationProcessorFactory;
use Alchemy\Phrasea\Webhook\Processor\ProcessorFactory; use Alchemy\Phrasea\Webhook\Processor\ProcessorFactory;
use Alchemy\Phrasea\Webhook\Processor\ProcessorInterface; use Alchemy\Phrasea\Webhook\Processor\ProcessorInterface;
use Alchemy\Phrasea\Webhook\Processor\RecordEventProcessor;
use Alchemy\Phrasea\Webhook\Processor\UserDeletedProcessorFactory; use Alchemy\Phrasea\Webhook\Processor\UserDeletedProcessorFactory;
use Alchemy\Phrasea\Webhook\Processor\UserProcessorFactory;
use Alchemy\Phrasea\Webhook\Processor\UserRegistrationProcessorFactory; use Alchemy\Phrasea\Webhook\Processor\UserRegistrationProcessorFactory;
use Alchemy\Phrasea\Webhook\Processor\SubdefEventProcessor; use Alchemy\Phrasea\Webhook\Processor\SubdefEventProcessor;
@@ -30,10 +32,14 @@ class EventProcessorFactory
$this->registerFactory(WebhookEvent::FEED_ENTRY_TYPE, new FeedEntryProcessorFactory($app)); $this->registerFactory(WebhookEvent::FEED_ENTRY_TYPE, new FeedEntryProcessorFactory($app));
$this->registerFactory(WebhookEvent::USER_REGISTRATION_TYPE, new UserRegistrationProcessorFactory($app)); $this->registerFactory(WebhookEvent::USER_REGISTRATION_TYPE, new UserRegistrationProcessorFactory($app));
$this->registerFactory(WebhookEvent::ORDER_TYPE, new OrderNotificationProcessorFactory($app)); $this->registerFactory(WebhookEvent::ORDER_TYPE, new OrderNotificationProcessorFactory($app));
$this->registerFactory(WebhookEvent::USER_DELETED_TYPE, new UserDeletedProcessorFactory());
$this->registerFactory(WebhookEvent::USER_TYPE, new UserProcessorFactory());
$this->registerCallableFactory(WebhookEvent::RECORD_SUBDEF_TYPE, function () { $this->registerCallableFactory(WebhookEvent::RECORD_SUBDEF_TYPE, function () {
return new SubdefEventProcessor(); return new SubdefEventProcessor();
}); });
$this->registerCallableFactory(WebhookEvent::RECORD_TYPE, function () {
return new RecordEventProcessor();
});
} }
/** /**

View File

@@ -74,23 +74,28 @@ class FeedEntryProcessor implements ProcessorInterface
} while (count($results) > 0); } while (count($results) > 0);
return [ return [
'event' => $event->getName(), 'event' => $event->getName(),
'users_were_notified' => isset($data['notify_email']) ? (bool) $data['notify_email'] : false, 'webhookId' => $event->getId(),
'version' => WebhookEvent::WEBHOOK_VERSION,
'url' => $data['url'],
'instance_name' => $data['instance_name'],
'users_were_notified' => isset($data['notify_email']) ? (bool) $data['notify_email'] : false,
'feed' => [ 'feed' => [
'id' => $feed->getId(), 'id' => $feed->getId(),
'title' => $feed->getTitle(), 'title' => $feed->getTitle(),
'description' => $feed->getSubtitle(), 'description' => $feed->getSubtitle(),
], ],
'entry' => [ 'entry' => [
'id' => $entry->getId(), 'id' => $entry->getId(),
'author' => [ 'author' => [
'name' => $entry->getAuthorName(), 'name' => $entry->getAuthorName(),
'email' => $entry->getAuthorEmail() 'email' => $entry->getAuthorEmail()
], ],
'title' => $entry->getTitle(), 'title' => $entry->getTitle(),
'description' => $entry->getSubtitle(), 'description' => $entry->getSubtitle(),
], ],
'users' => $users 'users' => $users,
'event_time' => $data['event_time']
]; ];
} }
} }

View File

@@ -44,7 +44,7 @@ class OrderNotificationProcessor implements ProcessorInterface
/** @var Order $order */ /** @var Order $order */
$order = $this->orderRepository->find($data['order_id']); $order = $this->orderRepository->find($data['order_id']);
return $this->getOrderData($event, $user, $order); return $this->getOrderData($event, $user, $order, $data);
} }
protected function processDeliveryOrder(WebhookEvent $event) protected function processDeliveryOrder(WebhookEvent $event)
@@ -55,25 +55,32 @@ class OrderNotificationProcessor implements ProcessorInterface
$order = $this->orderRepository->find($data['order_id']); $order = $this->orderRepository->find($data['order_id']);
$user = $order->getUser(); $user = $order->getUser();
return $this->getOrderData($event, $user, $order); return $this->getOrderData($event, $user, $order, $data);
} }
/** /**
* @param WebhookEvent $event * @param WebhookEvent $event
* @param User $user * @param User $user
* @param Order $order * @param Order $order
* @param array $data
*
* @return array * @return array
*/ */
protected function getOrderData(WebhookEvent $event, User $user, Order $order) protected function getOrderData(WebhookEvent $event, User $user, Order $order, $data)
{ {
return [ return [
'event' => $event->getName(), 'event' => $event->getName(),
'webhookId' => $event->getId(),
'version' => WebhookEvent::WEBHOOK_VERSION,
'url' => $data['url'],
'instance_name' => $data['instance_name'],
'user' => [ 'user' => [
'id' => $user->getId(), 'id' => $user->getId(),
'email' => $user->getEmail(), 'email' => $user->getEmail(),
'login' => $user->getLogin() 'login' => $user->getLogin()
], ],
'order' => $order->getId() 'order' => $order->getId(),
'event_time' => $data['event_time']
]; ];
} }
} }

View File

@@ -0,0 +1,30 @@
<?php
namespace Alchemy\Phrasea\Webhook\Processor;
use Alchemy\Phrasea\Model\Entities\WebhookEvent;
class RecordEventProcessor implements ProcessorInterface
{
public function process(WebhookEvent $event)
{
$data = $event->getData();
$eventTime = $data['event_time'];
$url = $data['url'];
$instanceName = $data['instance_name'];
unset($data['event_time']);
unset($data['url']);
unset($data['instance_name']);
return [
'event' => $event->getName(),
'webhookId' => $event->getId(),
'version' => WebhookEvent::WEBHOOK_VERSION,
'url' => $url,
'instance_name' => $instanceName,
'data' => $data,
'event_time' => $eventTime
];
}
}

View File

@@ -9,9 +9,23 @@ class SubdefEventProcessor implements ProcessorInterface
public function process(WebhookEvent $event) public function process(WebhookEvent $event)
{ {
$data = $event->getData();
$eventTime = $data['event_time'];
$url = $data['url'];
$instanceName = $data['instance_name'];
unset($data['event_time']);
unset($data['url']);
unset($data['instance_name']);
return [ return [
'event' => $event->getName(), 'event' => $event->getName(),
'data' => $event->getData() 'webhookId' => $event->getId(),
'version' => WebhookEvent::WEBHOOK_VERSION,
'url' => $url,
'instance_name' => $instanceName,
'data' => $data,
'event_time' => $eventTime
]; ];
} }
} }

View File

@@ -1,36 +0,0 @@
<?php
/*
* This file is part of phrasea-4.0.
*
* (c) Alchemy <info@alchemy.fr>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Alchemy\Phrasea\Webhook\Processor;
use Alchemy\Phrasea\Model\Entities\WebhookEvent;
class UserDeletedProcessor implements ProcessorInterface
{
public function process(WebhookEvent $event)
{
$data = $event->getData();
if (! isset($data['user_id'])) {
return null;
}
return array(
'event' => $event->getName(),
'user' => array(
'id' => $data['user_id'],
'email' => $data['email'],
'login' => $data['login']
)
);
}
}

View File

@@ -1,24 +0,0 @@
<?php
/*
* This file is part of phrasea-4.0.
*
* (c) Alchemy <info@alchemy.fr>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Alchemy\Phrasea\Webhook\Processor;
class UserDeletedProcessorFactory implements ProcessorFactory
{
/**
* @return ProcessorInterface
*/
public function createProcessor()
{
return new UserDeletedProcessor();
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace Alchemy\Phrasea\Webhook\Processor;
use Alchemy\Phrasea\Model\Entities\WebhookEvent;
class UserProcessor implements ProcessorInterface
{
public function process(WebhookEvent $event)
{
$data = $event->getData();
if (! isset($data['user_id'])) {
return null;
}
return [
'event' => $event->getName(),
'webhookId' => $event->getId(),
'version' => WebhookEvent::WEBHOOK_VERSION,
'url' => $data['url'],
'instance_name' => $data['instance_name'],
'user' => [
'id' => $data['user_id'],
'email' => $data['email'],
'login' => $data['login'],
],
'event_time' => $data['event_time']
];
}
}

View File

@@ -0,0 +1,15 @@
<?php
namespace Alchemy\Phrasea\Webhook\Processor;
class UserProcessorFactory implements ProcessorFactory
{
/**
* @return ProcessorInterface|UserProcessor
*/
public function createProcessor()
{
return new UserProcessor();
}
}

View File

@@ -29,14 +29,19 @@ class UserRegistrationProcessor implements ProcessorInterface
$user = $this->userRepository->find($data['user_id']); $user = $this->userRepository->find($data['user_id']);
return [ return [
'event' => $event->getName(), 'event' => $event->getName(),
'user' => [ 'webhookId' => $event->getId(),
'id' => $user->getId(), 'version' => WebhookEvent::WEBHOOK_VERSION,
'url' => $data['url'],
'instance_name' => $data['instance_name'],
'user' => [
'id' => $user->getId(),
'email' => $user->getEmail(), 'email' => $user->getEmail(),
'login' => $user->getLogin() 'login' => $user->getLogin()
], ],
'granted' => $data['granted'], 'granted' => $data['granted'],
'rejected' => $data['rejected'] 'rejected' => $data['rejected'],
'event_time'=> $data['event_time']
]; ];
} }
} }

View File

@@ -27,4 +27,6 @@ final class WorkerEvents
const RECORD_EDIT_IN_WORKER = 'record.edit_in_worker'; const RECORD_EDIT_IN_WORKER = 'record.edit_in_worker';
const RECORDS_WRITE_META = 'records.write_meta'; const RECORDS_WRITE_META = 'records.write_meta';
const RECORD_DELETE_INDEX = 'record.delete_index';
} }

View File

@@ -108,6 +108,7 @@ class AlchemyWorkerServiceProvider implements PluginProviderInterface
$app['alchemy_worker.type_based_worker_resolver']->addFactory(MessagePublisher::WEBHOOK_TYPE, new CallableWorkerFactory(function () use ($app) { $app['alchemy_worker.type_based_worker_resolver']->addFactory(MessagePublisher::WEBHOOK_TYPE, new CallableWorkerFactory(function () use ($app) {
return (new WebhookWorker($app)) return (new WebhookWorker($app))
->setApplicationBox($app['phraseanet.appbox'])
->setDispatcher($app['dispatcher']); ->setDispatcher($app['dispatcher']);
})); }));

View File

@@ -78,7 +78,7 @@ class RecordSubscriber implements EventSubscriberInterface
public function onDelete(DeleteEvent $event) public function onDelete(DeleteEvent $event)
{ {
// first remove record from the grid answer, so first delete the record in the index elastic // first remove record from the grid answer, so first delete the record in the index elastic
$this->app['dispatcher']->dispatch(RecordEvents::DELETED, new DeletedEvent($event->getRecord())); $this->app['dispatcher']->dispatch(WorkerEvents::RECORD_DELETE_INDEX, new DeletedEvent($event->getRecord()));
// publish payload to queue // publish payload to queue
$payload = [ $payload = [

View File

@@ -3,9 +3,12 @@
namespace Alchemy\Phrasea\WorkerManager\Worker; namespace Alchemy\Phrasea\WorkerManager\Worker;
use Alchemy\Phrasea\Application; use Alchemy\Phrasea\Application;
use Alchemy\Phrasea\Application\Helper\ApplicationBoxAware;
use Alchemy\Phrasea\Application\Helper\DispatcherAware; use Alchemy\Phrasea\Application\Helper\DispatcherAware;
use Alchemy\Phrasea\Core\Version; use Alchemy\Phrasea\Core\Version;
use Alchemy\Phrasea\Model\Entities\ApiApplication; use Alchemy\Phrasea\Model\Entities\ApiApplication;
use Alchemy\Phrasea\Model\Entities\FeedEntry;
use Alchemy\Phrasea\Model\Entities\User;
use Alchemy\Phrasea\Model\Entities\WebhookEvent; use Alchemy\Phrasea\Model\Entities\WebhookEvent;
use Alchemy\Phrasea\Model\Entities\WebhookEventDelivery; use Alchemy\Phrasea\Model\Entities\WebhookEventDelivery;
use Alchemy\Phrasea\Model\Entities\WebhookEventPayload; use Alchemy\Phrasea\Model\Entities\WebhookEventPayload;
@@ -29,6 +32,7 @@ use Psr\Http\Message\RequestInterface;
class WebhookWorker implements WorkerInterface class WebhookWorker implements WorkerInterface
{ {
use DispatcherAware; use DispatcherAware;
use ApplicationBoxAware;
private $app; private $app;
@@ -126,7 +130,17 @@ class WebhookWorker implements WorkerInterface
} }
} }
private function deliverEvent(Client $httpClient, array $thirdPartyApplications, WebhookEvent $webhookevent, $payload) /**
* Deliver event to the webhook_url
* make as public function because used also for unit test
*
* @param Client $httpClient
* @param array $thirdPartyApplications
* @param WebhookEvent $webhookevent
* @param $payload
* @return array|void
*/
public function deliverEvent(Client $httpClient, array $thirdPartyApplications, WebhookEvent $webhookevent, $payload)
{ {
if (count($thirdPartyApplications) === 0) { if (count($thirdPartyApplications) === 0) {
$workerMessage = 'No applications defined to listen for webhook events'; $workerMessage = 'No applications defined to listen for webhook events';
@@ -142,10 +156,15 @@ class WebhookWorker implements WorkerInterface
return; return;
} }
// format event data // add common information data before generating each type of data
if (!isset($payload['delivery_id'])) { if (!isset($payload['delivery_id'])) {
$webhookData = $webhookevent->getData(); $webhookData = $webhookevent->getData();
$webhookData['time'] = $webhookevent->getCreated();
$webhookData['event_time'] = $webhookevent->getCreated();
$webhookData['url'] = $this->app['conf']->get(['servername'], '');
$webhookData['instance_name'] = $this->app['conf']->get(['registry', 'general', 'title'], '');
// a webhook version is also added when processing data
$webhookevent->setData($webhookData); $webhookevent->setData($webhookData);
} }
@@ -153,6 +172,11 @@ class WebhookWorker implements WorkerInterface
$eventProcessor = $this->app['webhook.processor_factory']->get($webhookevent); $eventProcessor = $this->app['webhook.processor_factory']->get($webhookevent);
$data = $eventProcessor->process($webhookevent); $data = $eventProcessor->process($webhookevent);
$record = null;
if (isset($data['data']['databox_id']) && isset($data['data']['record_id'])) {
$record = $this->findDataboxById($data['data']['databox_id'])->get_record($data['data']['record_id']);
}
$requests = []; $requests = [];
/** @var ApiApplication $thirdPartyApplication */ /** @var ApiApplication $thirdPartyApplication */
foreach ($thirdPartyApplications as $thirdPartyApplication) { foreach ($thirdPartyApplications as $thirdPartyApplication) {
@@ -162,11 +186,25 @@ class WebhookWorker implements WorkerInterface
continue; continue;
} }
$creatorGrantedBaseIds = array_keys($this->app['acl']->get($creator)->get_granted_base()); // check if the third-application listen this event
// if listenedEvents is empty, third-application can received all webhookevent
if (!empty($thirdPartyApplication->getListenedEvents()) && !in_array($webhookevent->getName(), $thirdPartyApplication->getListenedEvents())) {
continue;
}
/** @var \ACL $creatorACL */
$creatorACL = $this->app['acl']->get($creator);
$creatorGrantedBaseIds = array_keys($creatorACL->get_granted_base());
$concernedBaseIds = array_intersect($webhookevent->getCollectionBaseIds(), $creatorGrantedBaseIds); $concernedBaseIds = array_intersect($webhookevent->getCollectionBaseIds(), $creatorGrantedBaseIds);
if (count($webhookevent->getCollectionBaseIds()) != 0 && count($concernedBaseIds) == 0) { if (!$this->isCreatorHasRight($creator, $concernedBaseIds, $webhookevent)) {
continue; // not send, skip
}
// continue iteration if api creator has no access to the record
// it 's include the bas access and the record status bit access
if ($record !== null && !$creatorACL->has_access_to_record($record)) {
continue; continue;
} }
@@ -300,6 +338,86 @@ class WebhookWorker implements WorkerInterface
MessagePublisher::WEBHOOK_TYPE MessagePublisher::WEBHOOK_TYPE
); );
} }
return $requests;
}
private function isCreatorHasRight(User $creator, array $baseIds, WebhookEvent $webhookEvent)
{
/** @var \ACL $creatorACL */
$creatorACL = $this->app['acl']->get($creator);
$checked = false;
foreach ($baseIds as $baseId) {
foreach (WebhookEvent::$eventsAccessRight[$webhookEvent->getName()] as $right) {
// if it's a sub array, only one right is required from the sub array
if (is_array($right)) {
$childChecked = false;
foreach ($right as $r) {
if (strpos($r, 'bas_') === 0) {
// for the sbas right
$sbasId = \collection::getByBaseId($this->app, $baseId)->get_databox()->get_sbas_id();
if ($creatorACL->has_right_on_sbas($sbasId, $r)) {
$childChecked = true;
}
} else {
if (($right === \ACL::ACCESS && $creatorACL->has_access_to_base($baseId)) || $creatorACL->has_right_on_base($baseId, $r)) {
$childChecked = true;
}
}
}
if (!$childChecked) {
return false;
}
} else {
if (strpos($right, 'bas_') === 0) {
// for the sbas right
$sbasId = \collection::getByBaseId($this->app, $baseId)->get_databox()->get_sbas_id();
if (!$creatorACL->has_right_on_sbas($sbasId, $right)) {
return false;
}
} else {
if ($right === \ACL::ACCESS && !$creatorACL->has_access_to_base($baseId)) {
return false;
} elseif ($right !== \ACL::ACCESS && !$creatorACL->has_right_on_base($baseId, $right)) {
return false;
}
}
}
$checked = true;
}
}
$specificRightOnType = [
WebhookEvent::USER_TYPE,
WebhookEvent::FEED_ENTRY_TYPE
];
if ($webhookEvent->getType() === WebhookEvent::FEED_ENTRY_TYPE) {
$data = $webhookEvent->getData();
if (isset($data['entry_id'])) {
/** @var FeedEntry $feedEntry */
$feedEntry = $this->app['repo.feed-entries']->find($data['entry_id']);
if ($feedEntry->getFeed()->isPublisher($creator)) {
$checked = true;
}
}
}
// for user created and phantom user deleted
if (empty($baseIds) && $webhookEvent->getType() === WebhookEvent::USER_TYPE && empty($webhookEvent->getCollectionBaseIds()) ) {
// check if creatorUser has right canadmin in at least one collection
if ($creatorACL->has_right(\ACL::CANADMIN)) {
$checked = true;
}
} elseif (empty($baseIds) && empty($webhookEvent->getCollectionBaseIds()) && !in_array($webhookEvent->getType(), $specificRightOnType)) {
// in this case, for others type, there is not yet a specific rule defined
// so give the right true
$checked = true;
}
return $checked;
} }
private function getUrl(ApiApplication $application, WebhookEventDelivery $delivery) private function getUrl(ApiApplication $application, WebhookEventDelivery $delivery)

View File

@@ -225,6 +225,13 @@ class appbox extends base
// it is need before applying patches // it is need before applying patches
$advices = $this->upgradeDB(false, $app); $advices = $this->upgradeDB(false, $app);
// update also the doctrine table schema before applying patch
if ($app['orm.em']->getConnection()->getDatabasePlatform()->supportsAlterTable()) {
$tool = new SchemaTool($app['orm.em']);
$metas = $app['orm.em']->getMetadataFactory()->getAllMetadata();
$tool->updateSchema($metas, true);
}
foreach ($this->get_databoxes() as $s) { foreach ($this->get_databoxes() as $s) {
$advices = array_merge($advices, $s->upgradeDB(false, $app)); $advices = array_merge($advices, $s->upgradeDB(false, $app));
} }
@@ -240,12 +247,6 @@ class appbox extends base
$app['phraseanet.cache-service']->flushAll(); $app['phraseanet.cache-service']->flushAll();
if ($app['orm.em']->getConnection()->getDatabasePlatform()->supportsAlterTable()) {
$tool = new SchemaTool($app['orm.em']);
$metas = $app['orm.em']->getMetadataFactory()->getAllMetadata();
$tool->updateSchema($metas, true);
}
if (version::lt($from_version, '3.1')) { if (version::lt($from_version, '3.1')) {
$upgrader->addRecommendation($app->trans('Your install requires data migration, please execute the following command'), 'bin/setup system:upgrade-datas --from=3.1'); $upgrader->addRecommendation($app->trans('Your install requires data migration, please execute the following command'), 'bin/setup system:upgrade-datas --from=3.1');
} elseif (version::lt($from_version, '3.5')) { } elseif (version::lt($from_version, '3.5')) {

View File

@@ -0,0 +1,108 @@
<?php
use Alchemy\Phrasea\Application;
use Alchemy\Phrasea\Model\Entities\ApiApplication;
use Alchemy\Phrasea\Core\Configuration\PropertyAccess;
use Doctrine\ORM\EntityManager;
class patch_415PHRAS3555 implements patchInterface
{
/** @var string */
private $release = '4.1.5';
/** @var array */
private $concern = [base::APPLICATION_BOX, base::DATA_BOX];
/**
* {@inheritdoc}
*/
public function get_release()
{
return $this->release;
}
/**
* {@inheritdoc}
*/
public function getDoctrineMigrations()
{
return [];
}
/**
* {@inheritdoc}
*/
public function require_all_upgrades()
{
return false;
}
/**
* {@inheritdoc}
*/
public function concern()
{
return $this->concern;
}
/**
* {@inheritdoc}
*/
public function apply(base $base, Application $app)
{
if ($base->get_base_type() === base::DATA_BOX) {
$this->patch_databox($base, $app);
}
elseif ($base->get_base_type() === base::APPLICATION_BOX) {
$this->patch_appbox($base, $app);
}
return true;
}
private function patch_databox(base $databox, Application $app)
{
}
private function patch_appbox(base $databox, Application $app)
{
/** @var EntityManager $em */
$em = $app['orm.em'];
/** @var PropertyAccess $conf */
$conf = $app['conf'];
$thirdPartyApplications = $app['repo.api-applications']->findAll();
$listenedEvents = [
'record.subdef.created',
'record.subdef.creation_failed',
'user.deleted',
'user.registration.granted',
'user.registration.rejected',
'new_feed_entry',
'order.created',
'order.delivered',
'order.denied'
];
/** @var ApiApplication $thirdPartyApplication */
foreach ($thirdPartyApplications as $thirdPartyApplication) {
$thirdPartyApplication->setListenedEvents($listenedEvents);
$em->persist($thirdPartyApplication);
$creator = $thirdPartyApplication->getCreator();
if ($creator != null) {
$creator->setGrantedApi(true);
$em->persist($creator);
}
}
$em->flush();
// set worker hearbeat if not exist
if (!$conf->has(['workers', 'queue', 'worker-queue', 'heartbeat'])) {
$conf->set(['workers', 'queue', 'worker-queue', 'heartbeat'], 60);
}
}
}

View File

@@ -562,6 +562,7 @@ class record_adapter implements RecordInterface, cache_cacheableInterface
return $this; return $this;
} }
$beforeCollection = $this->getCollection();
$coll_id_from = $this->getCollectionId(); $coll_id_from = $this->getCollectionId();
$coll_id_to = $collection->get_coll_id(); $coll_id_to = $collection->get_coll_id();
@@ -584,7 +585,7 @@ class record_adapter implements RecordInterface, cache_cacheableInterface
$this->app['phraseanet.logger']($this->getDatabox()) $this->app['phraseanet.logger']($this->getDatabox())
->log($this, Session_Logger::EVENT_MOVE, $collection->get_coll_id(), '', $coll_id_from); ->log($this, Session_Logger::EVENT_MOVE, $collection->get_coll_id(), '', $coll_id_from);
$this->dispatch(RecordEvents::COLLECTION_CHANGED, new CollectionChangedEvent($this)); $this->dispatch(RecordEvents::COLLECTION_CHANGED, new CollectionChangedEvent($this, $beforeCollection, $collection));
return $this; return $this;
} }
@@ -2440,6 +2441,14 @@ class record_adapter implements RecordInterface, cache_cacheableInterface
*/ */
public function setStatus($status) public function setStatus($status)
{ {
$statusBefore['status'] = [];
foreach ($this->getStatusStructure() as $bit => $st) {
$statusBefore['status'][] = [
'bit' => $bit,
'state' => \databox_status::bitIsSet($this->getStatusBitField(), $bit),
];
}
$this->getDataboxConnection()->executeUpdate( $this->getDataboxConnection()->executeUpdate(
'UPDATE record SET moddate = NOW(), status = :status WHERE record_id=:record_id', 'UPDATE record SET moddate = NOW(), status = :status WHERE record_id=:record_id',
['status' => bindec($status), 'record_id' => $this->getRecordId()] ['status' => bindec($status), 'record_id' => $this->getRecordId()]
@@ -2449,7 +2458,15 @@ class record_adapter implements RecordInterface, cache_cacheableInterface
// modification date is now unknown, delete from cache to reload on another record // modification date is now unknown, delete from cache to reload on another record
$this->delete_data_from_cache(); $this->delete_data_from_cache();
$this->dispatch(RecordEvents::STATUS_CHANGED, new StatusChangedEvent($this)); $newStatus['status'] = [];
foreach ($this->getStatusStructure() as $bit => $st) {
$newStatus['status'][] = [
'bit' => $bit,
'state' => \databox_status::bitIsSet($this->getStatusBitField(), $bit),
];
}
$this->dispatch(RecordEvents::STATUS_CHANGED, new StatusChangedEvent($this, $statusBefore, $newStatus));
} }
/** /**

View File

@@ -1,14 +1,14 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2"> <xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
<file date="2021-09-24T11:10:19Z" source-language="en" target-language="de" datatype="plaintext" original="not.available"> <file date="2021-11-16T13:30:36Z" source-language="en" target-language="de" datatype="plaintext" original="not.available">
<header> <header>
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/> <tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note> <note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
</header> </header>
<body> <body>
<trans-unit id="da39a3ee5e6b4b0d3255bfef95601890afd80709" resname=""> <trans-unit id="da39a3ee5e6b4b0d3255bfef95601890afd80709" resname="">
<source/> <source></source>
<target state="new"/> <target state="new"></target>
<jms:reference-file line="51">Form/Configuration/EmailFormType.php</jms:reference-file> <jms:reference-file line="51">Form/Configuration/EmailFormType.php</jms:reference-file>
<jms:reference-file line="64">Form/Login/PhraseaAuthenticationForm.php</jms:reference-file> <jms:reference-file line="64">Form/Login/PhraseaAuthenticationForm.php</jms:reference-file>
</trans-unit> </trans-unit>
@@ -196,7 +196,7 @@
<jms:reference-file line="7">Bridge/Dailymotion/element_informations.html.twig</jms:reference-file> <jms:reference-file line="7">Bridge/Dailymotion/element_informations.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="de0804eb70c10b14d71df74292e45c6daa13d672" resname="%number% documents&lt;br/&gt;selectionnes" approved="yes"> <trans-unit id="de0804eb70c10b14d71df74292e45c6daa13d672" resname="%number% documents&lt;br/&gt;selectionnes" approved="yes">
<source>%number% documents&lt;br/&gt;selectionnes</source> <source><![CDATA[%number% documents<br/>selectionnes]]></source>
<target state="translated"><![CDATA[%number% Dokumente<br/> ausgewählt]]></target> <target state="translated"><![CDATA[%number% Dokumente<br/> ausgewählt]]></target>
<jms:reference-file line="263">Controller/Prod/QueryController.php</jms:reference-file> <jms:reference-file line="263">Controller/Prod/QueryController.php</jms:reference-file>
</trans-unit> </trans-unit>
@@ -249,7 +249,7 @@
<trans-unit id="d7c38bf41291d1f920c6e0b56a1c4a1cfc0b6743" resname="%quantity% selected files" approved="yes"> <trans-unit id="d7c38bf41291d1f920c6e0b56a1c4a1cfc0b6743" resname="%quantity% selected files" approved="yes">
<source>%quantity% selected files</source> <source>%quantity% selected files</source>
<target state="translated">%quantity% ausgewählte Dateien</target> <target state="translated">%quantity% ausgewählte Dateien</target>
<jms:reference-file line="111">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="113">prod/upload/upload.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="eae910e840fe7df8ef8211d587e72af74ab69463" resname="%quantity_records% records have been sent for validation to %quantity_users% users" approved="yes"> <trans-unit id="eae910e840fe7df8ef8211d587e72af74ab69463" resname="%quantity_records% records have been sent for validation to %quantity_users% users" approved="yes">
<source>%quantity_records% records have been sent for validation to %quantity_users% users</source> <source>%quantity_records% records have been sent for validation to %quantity_users% users</source>
@@ -264,7 +264,7 @@
<trans-unit id="4d90df6ce9691d4bc172b9129250a5af4bef4b7f" resname="%record_count% records match the unique identifier :" approved="yes"> <trans-unit id="4d90df6ce9691d4bc172b9129250a5af4bef4b7f" resname="%record_count% records match the unique identifier :" approved="yes">
<source>%record_count% records match the unique identifier :</source> <source>%record_count% records match the unique identifier :</source>
<target state="translated">%record_count% Datensätze entsprechen dem eindeutigen Bezeichner:</target> <target state="translated">%record_count% Datensätze entsprechen dem eindeutigen Bezeichner:</target>
<jms:reference-file line="590">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="592">prod/upload/lazaret.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="1d847e60f4e92e438c94f0eb3176ce96113c63e5" resname="%s field has been created with success." approved="yes"> <trans-unit id="1d847e60f4e92e438c94f0eb3176ce96113c63e5" resname="%s field has been created with success." approved="yes">
<source>%s field has been created with success.</source> <source>%s field has been created with success.</source>
@@ -466,12 +466,12 @@
<trans-unit id="fa591b39e82a5a47573a9ed70172620c2660596c" resname="A file with the same UUID already exists in database" approved="yes"> <trans-unit id="fa591b39e82a5a47573a9ed70172620c2660596c" resname="A file with the same UUID already exists in database" approved="yes">
<source>A file with the same UUID already exists in database</source> <source>A file with the same UUID already exists in database</source>
<target state="translated">Eine Datei mit ähnlichen UUID ist schon in der Datenbank</target> <target state="translated">Eine Datei mit ähnlichen UUID ist schon in der Datenbank</target>
<jms:reference-file line="95">Border/Checker/UUID.php</jms:reference-file> <jms:reference-file line="84">Border/Checker/UUID.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="3111a4c2d6a675604d8bed8fe7ac2d7ec859bca2" resname="A file with the same checksum already exists in database" approved="yes"> <trans-unit id="3111a4c2d6a675604d8bed8fe7ac2d7ec859bca2" resname="A file with the same checksum already exists in database" approved="yes">
<source>A file with the same checksum already exists in database</source> <source>A file with the same checksum already exists in database</source>
<target state="translated">Eine Datei mit selber Checksumme ist schon in der Datenbank</target> <target state="translated">Eine Datei mit selber Checksumme ist schon in der Datenbank</target>
<jms:reference-file line="85">Border/Checker/Sha256.php</jms:reference-file> <jms:reference-file line="77">Border/Checker/Sha256.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="aee62b552774745bfc7778349545413b39c33a9a" resname="A file with the same filename already exists in database" approved="yes"> <trans-unit id="aee62b552774745bfc7778349545413b39c33a9a" resname="A file with the same filename already exists in database" approved="yes">
<source>A file with the same filename already exists in database</source> <source>A file with the same filename already exists in database</source>
@@ -481,7 +481,7 @@
<trans-unit id="e6558cad562de9eeae699e5f7fc7c8ae076d38c8" resname="A record matches the unique identifier :" approved="yes"> <trans-unit id="e6558cad562de9eeae699e5f7fc7c8ae076d38c8" resname="A record matches the unique identifier :" approved="yes">
<source>A record matches the unique identifier :</source> <source>A record matches the unique identifier :</source>
<target state="translated">Ein Datensatz entspricht dem eindeutigen Bezeichner :</target> <target state="translated">Ein Datensatz entspricht dem eindeutigen Bezeichner :</target>
<jms:reference-file line="588">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="590">prod/upload/lazaret.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="b73e8cb42d796f56db9989972e41942d9135c2cc" resname="A required field is missing or has an empty value" approved="yes"> <trans-unit id="b73e8cb42d796f56db9989972e41942d9135c2cc" resname="A required field is missing or has an empty value" approved="yes">
<source>A required field is missing or has an empty value</source> <source>A required field is missing or has an empty value</source>
@@ -670,8 +670,8 @@
<target state="translated">Hinzufügen</target> <target state="translated">Hinzufügen</target>
<jms:reference-file line="29">prod/User/Add.html.twig</jms:reference-file> <jms:reference-file line="29">prod/User/Add.html.twig</jms:reference-file>
<jms:reference-file line="161">prod/actions/Push.html.twig</jms:reference-file> <jms:reference-file line="161">prod/actions/Push.html.twig</jms:reference-file>
<jms:reference-file line="514">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="516">prod/upload/lazaret.html.twig</jms:reference-file>
<jms:reference-file line="515">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="517">prod/upload/lazaret.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="983c5aed52d2f74bf36e97dc34dbce97fdd43f5b" resname="Add a&#10; new field" approved="yes"> <trans-unit id="983c5aed52d2f74bf36e97dc34dbce97fdd43f5b" resname="Add a&#10; new field" approved="yes">
<source>Add a new field</source> <source>Add a new field</source>
@@ -970,7 +970,7 @@
<source>An error occured</source> <source>An error occured</source>
<target state="translated">Ein Fehler ist aufgetreten</target> <target state="translated">Ein Fehler ist aufgetreten</target>
<jms:reference-file line="120">Model/Manipulator/LazaretManipulator.php</jms:reference-file> <jms:reference-file line="120">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="285">Model/Manipulator/LazaretManipulator.php</jms:reference-file> <jms:reference-file line="245">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="164">Controller/Prod/MoveCollectionController.php</jms:reference-file> <jms:reference-file line="164">Controller/Prod/MoveCollectionController.php</jms:reference-file>
<jms:reference-file line="257">Controller/Prod/LazaretController.php</jms:reference-file> <jms:reference-file line="257">Controller/Prod/LazaretController.php</jms:reference-file>
<jms:reference-file line="262">Controller/Prod/BasketController.php</jms:reference-file> <jms:reference-file line="262">Controller/Prod/BasketController.php</jms:reference-file>
@@ -1595,7 +1595,7 @@
<trans-unit id="ae1f9ef7dc1cee4760e7f208f36c225e3ab1aa1f" resname="Cancel all" approved="yes"> <trans-unit id="ae1f9ef7dc1cee4760e7f208f36c225e3ab1aa1f" resname="Cancel all" approved="yes">
<source>Cancel all</source> <source>Cancel all</source>
<target state="translated">Alle abbrechen</target> <target state="translated">Alle abbrechen</target>
<jms:reference-file line="131">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="133">prod/upload/upload.html.twig</jms:reference-file>
<jms:reference-file line="121">prod/upload/upload-flash.html.twig</jms:reference-file> <jms:reference-file line="121">prod/upload/upload-flash.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="82695f04e6097106923a58949a9e1b0fadd1a989" resname="Cannot upload Zero Byte files" approved="yes"> <trans-unit id="82695f04e6097106923a58949a9e1b0fadd1a989" resname="Cannot upload Zero Byte files" approved="yes">
@@ -1791,7 +1791,7 @@
<trans-unit id="7135ee5eaed0e404c4fcf48d6eb7d2808f8e55f2" resname="Clear list" approved="yes"> <trans-unit id="7135ee5eaed0e404c4fcf48d6eb7d2808f8e55f2" resname="Clear list" approved="yes">
<source>Clear list</source> <source>Clear list</source>
<target state="translated">Liste löschen</target> <target state="translated">Liste löschen</target>
<jms:reference-file line="112">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="114">prod/upload/upload.html.twig</jms:reference-file>
<jms:reference-file line="109">prod/upload/upload-flash.html.twig</jms:reference-file> <jms:reference-file line="109">prod/upload/upload-flash.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="0fcdb8c5215c8bd73769c3492e47d86ec3f6837e" resname="Client application" approved="yes"> <trans-unit id="0fcdb8c5215c8bd73769c3492e47d86ec3f6837e" resname="Client application" approved="yes">
@@ -2382,8 +2382,8 @@
<trans-unit id="f6fdbe48dc54dd86f63097a03bd24094dedd713a" resname="Delete" approved="yes"> <trans-unit id="f6fdbe48dc54dd86f63097a03bd24094dedd713a" resname="Delete" approved="yes">
<source>Delete</source> <source>Delete</source>
<target state="translated">Löschen</target> <target state="translated">Löschen</target>
<jms:reference-file line="517">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="519">prod/upload/lazaret.html.twig</jms:reference-file>
<jms:reference-file line="518">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="520">prod/upload/lazaret.html.twig</jms:reference-file>
<jms:reference-file line="25">admin/task-manager/templates.html.twig</jms:reference-file> <jms:reference-file line="25">admin/task-manager/templates.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="1b5737dea168495fa0495e00ce58b4832772a492" resname="Delete account successfull" approved="yes"> <trans-unit id="1b5737dea168495fa0495e00ce58b4832772a492" resname="Delete account successfull" approved="yes">
@@ -2455,7 +2455,7 @@
<trans-unit id="dcce9368ad626fe4addfa719b7a16807d464aa9b" resname="Derniers envois" approved="yes"> <trans-unit id="dcce9368ad626fe4addfa719b7a16807d464aa9b" resname="Derniers envois" approved="yes">
<source>Derniers envois</source> <source>Derniers envois</source>
<target state="translated">Letzte Sendungen</target> <target state="translated">Letzte Sendungen</target>
<jms:reference-file line="126">web/developers/application.html.twig</jms:reference-file> <jms:reference-file line="165">web/developers/application.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="ec52b98c45f63139a4bee23fa7d177838f2b3628" resname="Des difficultes ont ete rencontres a la connection au serveur distant" approved="yes"> <trans-unit id="ec52b98c45f63139a4bee23fa7d177838f2b3628" resname="Des difficultes ont ete rencontres a la connection au serveur distant" approved="yes">
<source>Des difficultes ont ete rencontres a la connection au serveur distant</source> <source>Des difficultes ont ete rencontres a la connection au serveur distant</source>
@@ -2534,7 +2534,7 @@
<jms:reference-file line="68">Form/Configuration/ActionsFormType.php</jms:reference-file> <jms:reference-file line="68">Form/Configuration/ActionsFormType.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="fa9fd169cd55f0433c6e7a4b5d758f90d0847411" resname="Display &amp; action settings" approved="yes"> <trans-unit id="fa9fd169cd55f0433c6e7a4b5d758f90d0847411" resname="Display &amp; action settings" approved="yes">
<source>Display &amp; action settings</source> <source><![CDATA[Display & action settings]]></source>
<target state="translated">Anzeige und Handlung-Einstellungen</target> <target state="translated">Anzeige und Handlung-Einstellungen</target>
<jms:reference-file line="152">admin/fields/templates.html.twig</jms:reference-file> <jms:reference-file line="152">admin/fields/templates.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
@@ -3283,8 +3283,8 @@
<source>File is not present in quarantine anymore, please refresh</source> <source>File is not present in quarantine anymore, please refresh</source>
<target state="translated">Datei befindet sich nicht mehr in der Quarantäne, bitte aktualisieren</target> <target state="translated">Datei befindet sich nicht mehr in der Quarantäne, bitte aktualisieren</target>
<jms:reference-file line="56">Model/Manipulator/LazaretManipulator.php</jms:reference-file> <jms:reference-file line="56">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="140">Model/Manipulator/LazaretManipulator.php</jms:reference-file> <jms:reference-file line="136">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="170">Model/Manipulator/LazaretManipulator.php</jms:reference-file> <jms:reference-file line="157">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="78">Controller/Prod/LazaretController.php</jms:reference-file> <jms:reference-file line="78">Controller/Prod/LazaretController.php</jms:reference-file>
<jms:reference-file line="207">Controller/Prod/LazaretController.php</jms:reference-file> <jms:reference-file line="207">Controller/Prod/LazaretController.php</jms:reference-file>
</trans-unit> </trans-unit>
@@ -5922,7 +5922,7 @@
<trans-unit id="1d72d3b024f99631791dcfbc8288caa16d3ff388" resname="Résultats des derniers envois effectués pour cette application" approved="yes"> <trans-unit id="1d72d3b024f99631791dcfbc8288caa16d3ff388" resname="Résultats des derniers envois effectués pour cette application" approved="yes">
<source>Résultats des derniers envois effectués pour cette application</source> <source>Résultats des derniers envois effectués pour cette application</source>
<target state="translated">Ergebnisse der letzten gesendeten Nachrichten für diese Anwendung</target> <target state="translated">Ergebnisse der letzten gesendeten Nachrichten für diese Anwendung</target>
<jms:reference-file line="127">web/developers/application.html.twig</jms:reference-file> <jms:reference-file line="166">web/developers/application.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="741cd64a01685389e2fabdb7091a3b70f6be63ee" resname="SMTP encryption" approved="yes"> <trans-unit id="741cd64a01685389e2fabdb7091a3b70f6be63ee" resname="SMTP encryption" approved="yes">
<source>SMTP encryption</source> <source>SMTP encryption</source>
@@ -6113,7 +6113,7 @@
<jms:reference-file line="46">web/login/forgot-password.html.twig</jms:reference-file> <jms:reference-file line="46">web/login/forgot-password.html.twig</jms:reference-file>
<jms:reference-file line="330">prod/actions/Push.html.twig</jms:reference-file> <jms:reference-file line="330">prod/actions/Push.html.twig</jms:reference-file>
<jms:reference-file line="332">prod/actions/Push.html.twig</jms:reference-file> <jms:reference-file line="332">prod/actions/Push.html.twig</jms:reference-file>
<jms:reference-file line="113">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="115">prod/upload/upload.html.twig</jms:reference-file>
<jms:reference-file line="110">prod/upload/upload-flash.html.twig</jms:reference-file> <jms:reference-file line="110">prod/upload/upload-flash.html.twig</jms:reference-file>
<jms:reference-file line="185">prod/orders/order_item.html.twig</jms:reference-file> <jms:reference-file line="185">prod/orders/order_item.html.twig</jms:reference-file>
<jms:reference-file line="220">prod/orders/order_item.html.twig</jms:reference-file> <jms:reference-file line="220">prod/orders/order_item.html.twig</jms:reference-file>
@@ -6472,8 +6472,8 @@
<trans-unit id="8017bd7de9961cf42f59abc587d0495a9d25c2a9" resname="Substitute" approved="yes"> <trans-unit id="8017bd7de9961cf42f59abc587d0495a9d25c2a9" resname="Substitute" approved="yes">
<source>Substitute</source> <source>Substitute</source>
<target state="translated">Ersetzung</target> <target state="translated">Ersetzung</target>
<jms:reference-file line="521">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="523">prod/upload/lazaret.html.twig</jms:reference-file>
<jms:reference-file line="522">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="524">prod/upload/lazaret.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="3d48a1d66362cef46e567ddf521b0dc3233f57a2" resname="Substitution is not possible for this kind of record" approved="yes"> <trans-unit id="3d48a1d66362cef46e567ddf521b0dc3233f57a2" resname="Substitution is not possible for this kind of record" approved="yes">
<source>Substitution is not possible for this kind of record</source> <source>Substitution is not possible for this kind of record</source>
@@ -6745,7 +6745,7 @@
<trans-unit id="1d5dadcdeeecd294a88baf096ba0440053ecf738" resname="The file was moved to the quarantine" approved="yes"> <trans-unit id="1d5dadcdeeecd294a88baf096ba0440053ecf738" resname="The file was moved to the quarantine" approved="yes">
<source>The file was moved to the quarantine</source> <source>The file was moved to the quarantine</source>
<target state="translated">Datei wurde unter Quarantäne gestellt</target> <target state="translated">Datei wurde unter Quarantäne gestellt</target>
<jms:reference-file line="338">Controller/Prod/UploadController.php</jms:reference-file> <jms:reference-file line="283">Controller/Prod/UploadController.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="1818502d42e14ffcb9c664fd1365fafa969971ff" resname="The following errors have been detected" approved="yes"> <trans-unit id="1818502d42e14ffcb9c664fd1365fafa969971ff" resname="The following errors have been detected" approved="yes">
<source>The following errors have been detected</source> <source>The following errors have been detected</source>
@@ -6761,7 +6761,7 @@
<trans-unit id="bae1c72ecbe1459751e4a0fee382a305bbf933b7" resname="The record was successfully created" approved="yes"> <trans-unit id="bae1c72ecbe1459751e4a0fee382a305bbf933b7" resname="The record was successfully created" approved="yes">
<source>The record was successfully created</source> <source>The record was successfully created</source>
<target state="translated">Datensatz wurde erfolgreich erstellt</target> <target state="translated">Datensatz wurde erfolgreich erstellt</target>
<jms:reference-file line="292">Controller/Prod/UploadController.php</jms:reference-file> <jms:reference-file line="253">Controller/Prod/UploadController.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="209817489c23cec8b7a15f6b8ca3e45daf08656d" resname="The records have been properly ordered" approved="yes"> <trans-unit id="209817489c23cec8b7a15f6b8ca3e45daf08656d" resname="The records have been properly ordered" approved="yes">
<source>The records have been properly ordered</source> <source>The records have been properly ordered</source>
@@ -6996,7 +6996,7 @@
<trans-unit id="9764c016bb5a296069109116fa95c49815dcba82" resname="Transmited files" approved="yes"> <trans-unit id="9764c016bb5a296069109116fa95c49815dcba82" resname="Transmited files" approved="yes">
<source>Transmited files</source> <source>Transmited files</source>
<target state="translated">Übermittelte Dateien</target> <target state="translated">Übermittelte Dateien</target>
<jms:reference-file line="122">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="124">prod/upload/upload.html.twig</jms:reference-file>
<jms:reference-file line="118">prod/upload/upload-flash.html.twig</jms:reference-file> <jms:reference-file line="118">prod/upload/upload-flash.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="6e764776541fbe428a3566f42ee7956312af98b7" resname="Trier par" approved="yes"> <trans-unit id="6e764776541fbe428a3566f42ee7956312af98b7" resname="Trier par" approved="yes">
@@ -7058,7 +7058,7 @@
<trans-unit id="d32751443628a0d2c5b31b441c1e2b3001f35dfd" resname="Unable to add file to Phraseanet" approved="yes"> <trans-unit id="d32751443628a0d2c5b31b441c1e2b3001f35dfd" resname="Unable to add file to Phraseanet" approved="yes">
<source>Unable to add file to Phraseanet</source> <source>Unable to add file to Phraseanet</source>
<target state="translated">Unmöglich, Datei zu Phraseanet hinzuzufügen</target> <target state="translated">Unmöglich, Datei zu Phraseanet hinzuzufügen</target>
<jms:reference-file line="350">Controller/Prod/UploadController.php</jms:reference-file> <jms:reference-file line="295">Controller/Prod/UploadController.php</jms:reference-file>
<jms:reference-file line="195">Controller/Admin/FeedController.php</jms:reference-file> <jms:reference-file line="195">Controller/Admin/FeedController.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="8b233593eb66b5be4da2f44ff527bd641b3a6fc1" resname="Unable to add usr to list" approved="yes"> <trans-unit id="8b233593eb66b5be4da2f44ff527bd641b3a6fc1" resname="Unable to add usr to list" approved="yes">
@@ -7848,7 +7848,7 @@
<trans-unit id="4a67615bcd64fcc9443c499676a462d835ad841e" resname="You can not upload files" approved="yes"> <trans-unit id="4a67615bcd64fcc9443c499676a462d835ad841e" resname="You can not upload files" approved="yes">
<source>You can not upload files</source> <source>You can not upload files</source>
<target state="translated">Sie dürfen Dateien nicht hochladen</target> <target state="translated">Sie dürfen Dateien nicht hochladen</target>
<jms:reference-file line="144">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="146">prod/upload/upload.html.twig</jms:reference-file>
<jms:reference-file line="102">prod/upload/upload-flash.html.twig</jms:reference-file> <jms:reference-file line="102">prod/upload/upload-flash.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="4faca55769348dcbc9714b19438181057aa2510e" resname="You do not enough rights to update status" approved="yes"> <trans-unit id="4faca55769348dcbc9714b19438181057aa2510e" resname="You do not enough rights to update status" approved="yes">
@@ -9988,7 +9988,7 @@
<trans-unit id="e0af1d0d7872c48928d4faef76c45567426e62f9" resname="boutton::retour" approved="yes"> <trans-unit id="e0af1d0d7872c48928d4faef76c45567426e62f9" resname="boutton::retour" approved="yes">
<source>boutton::retour</source> <source>boutton::retour</source>
<target state="translated">Zurück</target> <target state="translated">Zurück</target>
<jms:reference-file line="154">web/developers/application.html.twig</jms:reference-file> <jms:reference-file line="193">web/developers/application.html.twig</jms:reference-file>
<jms:reference-file line="116">web/developers/application_form.html.twig</jms:reference-file> <jms:reference-file line="116">web/developers/application_form.html.twig</jms:reference-file>
<jms:reference-file line="20">Bridge/Flickr/photo_deleteelement.html.twig</jms:reference-file> <jms:reference-file line="20">Bridge/Flickr/photo_deleteelement.html.twig</jms:reference-file>
<jms:reference-file line="20">Bridge/Flickr/photoset_deleteelement.html.twig</jms:reference-file> <jms:reference-file line="20">Bridge/Flickr/photoset_deleteelement.html.twig</jms:reference-file>
@@ -10345,6 +10345,101 @@
<target state="translated">absteigend</target> <target state="translated">absteigend</target>
<jms:reference-file line="184">SearchEngine/Elastic/ElasticSearchEngine.php</jms:reference-file> <jms:reference-file line="184">SearchEngine/Elastic/ElasticSearchEngine.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="8e82b164f61602c25d57b485ed09c7a59a8e0919" resname="developers:: Events name">
<source>developers:: Events name</source>
<target state="new">developers:: Events name</target>
<jms:reference-file line="134">web/developers/application.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="f717955140c0a034f0e08cfc1416b8443e86cbb5" resname="developers:: Events trigger this webhook">
<source>developers:: Events trigger this webhook</source>
<target state="new">developers:: Events trigger this webhook</target>
<jms:reference-file line="125">web/developers/application.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="3a425cde38ee310e52988e9e9970f1c8dd376c13" resname="developers:: Events type">
<source>developers:: Events type</source>
<target state="new">developers:: Events type</target>
<jms:reference-file line="131">web/developers/application.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="0b3e5bbe37fa58fc7ce4682309017ffcebe95a23" resname="developers:: Select events to trigger this webhook url">
<source>developers:: Select events to trigger this webhook url</source>
<target state="new">developers:: Select events to trigger this webhook url</target>
<jms:reference-file line="126">web/developers/application.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="bffa41c7a64fc38e50153ea0f6f7c2368b008028" resname="developers:: a order delivered">
<source>developers:: a order delivered</source>
<target state="new">developers:: a order delivered</target>
<jms:reference-file line="372">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="9b74fc2656c9e78eec665260f31b446edf548932" resname="developers:: a order denied">
<source>developers:: a order denied</source>
<target state="new">developers:: a order denied</target>
<jms:reference-file line="373">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="c2d24cc69b826a71661c25cbd5291cdaaf95208c" resname="developers:: collection changed for record">
<source>developers:: collection changed for record</source>
<target state="new">developers:: collection changed for record</target>
<jms:reference-file line="353">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="1066a8925f76bd4aadebd7ec114b0ff771ab05ed" resname="developers:: media substituted for record">
<source>developers:: media substituted for record</source>
<target state="new">developers:: media substituted for record</target>
<jms:reference-file line="352">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="ab1c856fecf799bb87498cb26ea74b3db85b4f0b" resname="developers:: new feed entry on phraseanet">
<source>developers:: new feed entry on phraseanet</source>
<target state="new">developers:: new feed entry on phraseanet</target>
<jms:reference-file line="368">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="92259dc5125d969b7ba7fb1af0afd121147d1839" resname="developers:: new order created">
<source>developers:: new order created</source>
<target state="new">developers:: new order created</target>
<jms:reference-file line="371">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="4d09e2ac8748c5ea4bb66d3cd247941f99478125" resname="developers:: record or story created">
<source>developers:: record or story created</source>
<target state="new">developers:: record or story created</target>
<jms:reference-file line="349">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="1f036a4965ecb781192393a08a5aa0510a94524c" resname="developers:: record or story deleted">
<source>developers:: record or story deleted</source>
<target state="new">developers:: record or story deleted</target>
<jms:reference-file line="351">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="98121e43abc2802cfec12de894e041f54d7c9b2c" resname="developers:: record or story edited">
<source>developers:: record or story edited</source>
<target state="new">developers:: record or story edited</target>
<jms:reference-file line="350">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="7479330e0d56c8b37e71013043acecd329ce5f08" resname="developers:: status changed for record">
<source>developers:: status changed for record</source>
<target state="new">developers:: status changed for record</target>
<jms:reference-file line="354">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="db026e337fa7eeba8352e87ca00a28e19c854453" resname="developers:: subdef created for a record">
<source>developers:: subdef created for a record</source>
<target state="new">developers:: subdef created for a record</target>
<jms:reference-file line="357">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="18fc15413169b19baf33adc2572d53a76b86f1f5" resname="developers:: subdef creation failed for a record">
<source>developers:: subdef creation failed for a record</source>
<target state="new">developers:: subdef creation failed for a record</target>
<jms:reference-file line="358">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="e59d8fc44e34b786247fa5924eeb12a4a1202215" resname="developers:: user deleted on phraseanet">
<source>developers:: user deleted on phraseanet</source>
<target state="new">developers:: user deleted on phraseanet</target>
<jms:reference-file line="361">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="13577491a21410883cb7990ce9fdd481fca5c58b" resname="developers:: user registration granted on phraseanet">
<source>developers:: user registration granted on phraseanet</source>
<target state="new">developers:: user registration granted on phraseanet</target>
<jms:reference-file line="364">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="b7786ecdfe826e6f347dbf643191d79a196c6057" resname="developers:: user registration rejected on phraseanet">
<source>developers:: user registration rejected on phraseanet</source>
<target state="new">developers:: user registration rejected on phraseanet</target>
<jms:reference-file line="365">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="55a2ad6e3d1c02d871104d64fb811f08c54bd1b9" resname="do you want to validate" approved="yes"> <trans-unit id="55a2ad6e3d1c02d871104d64fb811f08c54bd1b9" resname="do you want to validate" approved="yes">
<source>do you want to validate</source> <source>do you want to validate</source>
<target state="translated">Möchten Sie bestätigen?</target> <target state="translated">Möchten Sie bestätigen?</target>
@@ -11720,7 +11815,7 @@
<jms:reference-file line="564">Controller/Root/AccountController.php</jms:reference-file> <jms:reference-file line="564">Controller/Root/AccountController.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="bf7028b694aea3fc9ede5014a9f8b5d617b83b6f" resname="phraseanet::account: &lt;&lt; your account can be deleted via admin interface &gt;&gt; " approved="yes"> <trans-unit id="bf7028b694aea3fc9ede5014a9f8b5d617b83b6f" resname="phraseanet::account: &lt;&lt; your account can be deleted via admin interface &gt;&gt; " approved="yes">
<source>phraseanet::account: &lt;&lt; your account can be deleted via admin interface &gt;&gt;</source> <source><![CDATA[phraseanet::account: << your account can be deleted via admin interface >>]]></source>
<target state="translated">Ihr Benutzerkonto kann nur durch die Administration Anwendung gelöscht werden.</target> <target state="translated">Ihr Benutzerkonto kann nur durch die Administration Anwendung gelöscht werden.</target>
<jms:reference-file line="289">web/account/account.html.twig</jms:reference-file> <jms:reference-file line="289">web/account/account.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
@@ -13864,12 +13959,12 @@ Vorsicht: die aktuelle Werte werden durch die neue Werte überschrieben</target>
<trans-unit id="ae34347293abc9a106150c8db2b2a3b1b7739c0b" resname="same UUID" approved="yes"> <trans-unit id="ae34347293abc9a106150c8db2b2a3b1b7739c0b" resname="same UUID" approved="yes">
<source>same UUID</source> <source>same UUID</source>
<target state="translated">dieselbe UUID</target> <target state="translated">dieselbe UUID</target>
<jms:reference-file line="87">Border/Checker/UUID.php</jms:reference-file> <jms:reference-file line="76">Border/Checker/UUID.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="9efb800c6df15d107be9c0aeb19e2d218ebfe135" resname="same checksum" approved="yes"> <trans-unit id="9efb800c6df15d107be9c0aeb19e2d218ebfe135" resname="same checksum" approved="yes">
<source>same checksum</source> <source>same checksum</source>
<target state="translated">gleiche Prüfsumme</target> <target state="translated">gleiche Prüfsumme</target>
<jms:reference-file line="77">Border/Checker/Sha256.php</jms:reference-file> <jms:reference-file line="69">Border/Checker/Sha256.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="99e3a652745118f0d3c79e13d81168544afe2b77" resname="same filename" approved="yes"> <trans-unit id="99e3a652745118f0d3c79e13d81168544afe2b77" resname="same filename" approved="yes">
<source>same filename</source> <source>same filename</source>
@@ -14349,7 +14444,7 @@ Vorsicht: die aktuelle Werte werden durch die neue Werte überschrieben</target>
<jms:reference-file line="1338">web/thesaurus/thesaurus.html.twig</jms:reference-file> <jms:reference-file line="1338">web/thesaurus/thesaurus.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="33df70d7fa528a31071e11d1b987b49dc947ce16" resname="thesaurus:: Supprimer cette branche ?&amp;#10;(les termes concernes remonteront en candidats a la prochaine indexation)" approved="yes"> <trans-unit id="33df70d7fa528a31071e11d1b987b49dc947ce16" resname="thesaurus:: Supprimer cette branche ?&amp;#10;(les termes concernes remonteront en candidats a la prochaine indexation)" approved="yes">
<source>thesaurus:: Supprimer cette branche ?&amp;#10;(les termes concernes remonteront en candidats a la prochaine indexation)</source> <source><![CDATA[thesaurus:: Supprimer cette branche ?&#10;(les termes concernes remonteront en candidats a la prochaine indexation)]]></source>
<target state="translated"><![CDATA[Diese Verzweigung löschen?&#10; (die betroffenende Begriffe werden als mögliche Begriffe beim nächsten Indexierung erscheinen)]]></target> <target state="translated"><![CDATA[Diese Verzweigung löschen?&#10; (die betroffenende Begriffe werden als mögliche Begriffe beim nächsten Indexierung erscheinen)]]></target>
<jms:reference-file line="542">web/thesaurus/thesaurus.html.twig</jms:reference-file> <jms:reference-file line="542">web/thesaurus/thesaurus.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
@@ -14927,9 +15022,9 @@ Vorsicht: die aktuelle Werte werden durch die neue Werte überschrieben</target>
<trans-unit id="39e4890a2d75f483b1cb2131b2d19f8cf96a502b" resname="upload:: Status :" approved="yes"> <trans-unit id="39e4890a2d75f483b1cb2131b2d19f8cf96a502b" resname="upload:: Status :" approved="yes">
<source>upload:: Status :</source> <source>upload:: Status :</source>
<target state="translated">Status</target> <target state="translated">Status</target>
<jms:reference-file line="80">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="81">prod/upload/upload.html.twig</jms:reference-file>
<jms:reference-file line="75">prod/upload/upload-flash.html.twig</jms:reference-file> <jms:reference-file line="75">prod/upload/upload-flash.html.twig</jms:reference-file>
<jms:reference-file line="462">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="463">prod/upload/lazaret.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="4fea0574cc81b5fd40ab0537b0905cc4c3806039" resname="users rights have been reseted" approved="yes"> <trans-unit id="4fea0574cc81b5fd40ab0537b0905cc4c3806039" resname="users rights have been reseted" approved="yes">
<source>users rights have been reseted</source> <source>users rights have been reseted</source>

View File

@@ -1,14 +1,14 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2"> <xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
<file date="2021-09-24T11:10:36Z" source-language="en" target-language="en" datatype="plaintext" original="not.available"> <file date="2021-11-16T13:30:52Z" source-language="en" target-language="en" datatype="plaintext" original="not.available">
<header> <header>
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/> <tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note> <note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
</header> </header>
<body> <body>
<trans-unit id="da39a3ee5e6b4b0d3255bfef95601890afd80709" resname=""> <trans-unit id="da39a3ee5e6b4b0d3255bfef95601890afd80709" resname="">
<source/> <source></source>
<target state="new"/> <target state="new"></target>
<jms:reference-file line="51">Form/Configuration/EmailFormType.php</jms:reference-file> <jms:reference-file line="51">Form/Configuration/EmailFormType.php</jms:reference-file>
<jms:reference-file line="64">Form/Login/PhraseaAuthenticationForm.php</jms:reference-file> <jms:reference-file line="64">Form/Login/PhraseaAuthenticationForm.php</jms:reference-file>
</trans-unit> </trans-unit>
@@ -196,7 +196,7 @@
<jms:reference-file line="7">Bridge/Dailymotion/element_informations.html.twig</jms:reference-file> <jms:reference-file line="7">Bridge/Dailymotion/element_informations.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="de0804eb70c10b14d71df74292e45c6daa13d672" resname="%number% documents&lt;br/&gt;selectionnes" approved="yes"> <trans-unit id="de0804eb70c10b14d71df74292e45c6daa13d672" resname="%number% documents&lt;br/&gt;selectionnes" approved="yes">
<source>%number% documents&lt;br/&gt;selectionnes</source> <source><![CDATA[%number% documents<br/>selectionnes]]></source>
<target state="translated"><![CDATA[%number% documents<br/>selected]]></target> <target state="translated"><![CDATA[%number% documents<br/>selected]]></target>
<jms:reference-file line="263">Controller/Prod/QueryController.php</jms:reference-file> <jms:reference-file line="263">Controller/Prod/QueryController.php</jms:reference-file>
</trans-unit> </trans-unit>
@@ -249,7 +249,7 @@
<trans-unit id="d7c38bf41291d1f920c6e0b56a1c4a1cfc0b6743" resname="%quantity% selected files" approved="yes"> <trans-unit id="d7c38bf41291d1f920c6e0b56a1c4a1cfc0b6743" resname="%quantity% selected files" approved="yes">
<source>%quantity% selected files</source> <source>%quantity% selected files</source>
<target state="translated">%quantity% selected files</target> <target state="translated">%quantity% selected files</target>
<jms:reference-file line="111">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="113">prod/upload/upload.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="eae910e840fe7df8ef8211d587e72af74ab69463" resname="%quantity_records% records have been sent for validation to %quantity_users% users" approved="yes"> <trans-unit id="eae910e840fe7df8ef8211d587e72af74ab69463" resname="%quantity_records% records have been sent for validation to %quantity_users% users" approved="yes">
<source>%quantity_records% records have been sent for validation to %quantity_users% users</source> <source>%quantity_records% records have been sent for validation to %quantity_users% users</source>
@@ -264,7 +264,7 @@
<trans-unit id="4d90df6ce9691d4bc172b9129250a5af4bef4b7f" resname="%record_count% records match the unique identifier :" approved="yes"> <trans-unit id="4d90df6ce9691d4bc172b9129250a5af4bef4b7f" resname="%record_count% records match the unique identifier :" approved="yes">
<source>%record_count% records match the unique identifier :</source> <source>%record_count% records match the unique identifier :</source>
<target state="translated">%record_count% records match the unique identifier:</target> <target state="translated">%record_count% records match the unique identifier:</target>
<jms:reference-file line="590">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="592">prod/upload/lazaret.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="1d847e60f4e92e438c94f0eb3176ce96113c63e5" resname="%s field has been created with success." approved="yes"> <trans-unit id="1d847e60f4e92e438c94f0eb3176ce96113c63e5" resname="%s field has been created with success." approved="yes">
<source>%s field has been created with success.</source> <source>%s field has been created with success.</source>
@@ -466,12 +466,12 @@
<trans-unit id="fa591b39e82a5a47573a9ed70172620c2660596c" resname="A file with the same UUID already exists in database" approved="yes"> <trans-unit id="fa591b39e82a5a47573a9ed70172620c2660596c" resname="A file with the same UUID already exists in database" approved="yes">
<source>A file with the same UUID already exists in database</source> <source>A file with the same UUID already exists in database</source>
<target state="translated">A file with the same UUID already exists in the database</target> <target state="translated">A file with the same UUID already exists in the database</target>
<jms:reference-file line="95">Border/Checker/UUID.php</jms:reference-file> <jms:reference-file line="84">Border/Checker/UUID.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="3111a4c2d6a675604d8bed8fe7ac2d7ec859bca2" resname="A file with the same checksum already exists in database" approved="yes"> <trans-unit id="3111a4c2d6a675604d8bed8fe7ac2d7ec859bca2" resname="A file with the same checksum already exists in database" approved="yes">
<source>A file with the same checksum already exists in database</source> <source>A file with the same checksum already exists in database</source>
<target state="translated">A file with the same checksum already exists in the database</target> <target state="translated">A file with the same checksum already exists in the database</target>
<jms:reference-file line="85">Border/Checker/Sha256.php</jms:reference-file> <jms:reference-file line="77">Border/Checker/Sha256.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="aee62b552774745bfc7778349545413b39c33a9a" resname="A file with the same filename already exists in database" approved="yes"> <trans-unit id="aee62b552774745bfc7778349545413b39c33a9a" resname="A file with the same filename already exists in database" approved="yes">
<source>A file with the same filename already exists in database</source> <source>A file with the same filename already exists in database</source>
@@ -481,7 +481,7 @@
<trans-unit id="e6558cad562de9eeae699e5f7fc7c8ae076d38c8" resname="A record matches the unique identifier :" approved="yes"> <trans-unit id="e6558cad562de9eeae699e5f7fc7c8ae076d38c8" resname="A record matches the unique identifier :" approved="yes">
<source>A record matches the unique identifier :</source> <source>A record matches the unique identifier :</source>
<target state="translated">A record matches the unique identifier:</target> <target state="translated">A record matches the unique identifier:</target>
<jms:reference-file line="588">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="590">prod/upload/lazaret.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="b73e8cb42d796f56db9989972e41942d9135c2cc" resname="A required field is missing or has an empty value" approved="yes"> <trans-unit id="b73e8cb42d796f56db9989972e41942d9135c2cc" resname="A required field is missing or has an empty value" approved="yes">
<source>A required field is missing or has an empty value</source> <source>A required field is missing or has an empty value</source>
@@ -670,8 +670,8 @@
<target state="translated">Add</target> <target state="translated">Add</target>
<jms:reference-file line="29">prod/User/Add.html.twig</jms:reference-file> <jms:reference-file line="29">prod/User/Add.html.twig</jms:reference-file>
<jms:reference-file line="161">prod/actions/Push.html.twig</jms:reference-file> <jms:reference-file line="161">prod/actions/Push.html.twig</jms:reference-file>
<jms:reference-file line="514">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="516">prod/upload/lazaret.html.twig</jms:reference-file>
<jms:reference-file line="515">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="517">prod/upload/lazaret.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="983c5aed52d2f74bf36e97dc34dbce97fdd43f5b" resname="Add a&#10; new field" approved="yes"> <trans-unit id="983c5aed52d2f74bf36e97dc34dbce97fdd43f5b" resname="Add a&#10; new field" approved="yes">
<source>Add a new field</source> <source>Add a new field</source>
@@ -971,7 +971,7 @@
<source>An error occured</source> <source>An error occured</source>
<target state="translated">An error occurred</target> <target state="translated">An error occurred</target>
<jms:reference-file line="120">Model/Manipulator/LazaretManipulator.php</jms:reference-file> <jms:reference-file line="120">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="285">Model/Manipulator/LazaretManipulator.php</jms:reference-file> <jms:reference-file line="245">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="164">Controller/Prod/MoveCollectionController.php</jms:reference-file> <jms:reference-file line="164">Controller/Prod/MoveCollectionController.php</jms:reference-file>
<jms:reference-file line="257">Controller/Prod/LazaretController.php</jms:reference-file> <jms:reference-file line="257">Controller/Prod/LazaretController.php</jms:reference-file>
<jms:reference-file line="262">Controller/Prod/BasketController.php</jms:reference-file> <jms:reference-file line="262">Controller/Prod/BasketController.php</jms:reference-file>
@@ -1596,7 +1596,7 @@
<trans-unit id="ae1f9ef7dc1cee4760e7f208f36c225e3ab1aa1f" resname="Cancel all" approved="yes"> <trans-unit id="ae1f9ef7dc1cee4760e7f208f36c225e3ab1aa1f" resname="Cancel all" approved="yes">
<source>Cancel all</source> <source>Cancel all</source>
<target state="translated">Cancel all</target> <target state="translated">Cancel all</target>
<jms:reference-file line="131">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="133">prod/upload/upload.html.twig</jms:reference-file>
<jms:reference-file line="121">prod/upload/upload-flash.html.twig</jms:reference-file> <jms:reference-file line="121">prod/upload/upload-flash.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="82695f04e6097106923a58949a9e1b0fadd1a989" resname="Cannot upload Zero Byte files" approved="yes"> <trans-unit id="82695f04e6097106923a58949a9e1b0fadd1a989" resname="Cannot upload Zero Byte files" approved="yes">
@@ -1793,7 +1793,7 @@
<trans-unit id="7135ee5eaed0e404c4fcf48d6eb7d2808f8e55f2" resname="Clear list" approved="yes"> <trans-unit id="7135ee5eaed0e404c4fcf48d6eb7d2808f8e55f2" resname="Clear list" approved="yes">
<source>Clear list</source> <source>Clear list</source>
<target state="translated">Clear list</target> <target state="translated">Clear list</target>
<jms:reference-file line="112">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="114">prod/upload/upload.html.twig</jms:reference-file>
<jms:reference-file line="109">prod/upload/upload-flash.html.twig</jms:reference-file> <jms:reference-file line="109">prod/upload/upload-flash.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="0fcdb8c5215c8bd73769c3492e47d86ec3f6837e" resname="Client application" approved="yes"> <trans-unit id="0fcdb8c5215c8bd73769c3492e47d86ec3f6837e" resname="Client application" approved="yes">
@@ -2385,8 +2385,8 @@
<trans-unit id="f6fdbe48dc54dd86f63097a03bd24094dedd713a" resname="Delete" approved="yes"> <trans-unit id="f6fdbe48dc54dd86f63097a03bd24094dedd713a" resname="Delete" approved="yes">
<source>Delete</source> <source>Delete</source>
<target state="translated">Delete</target> <target state="translated">Delete</target>
<jms:reference-file line="517">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="519">prod/upload/lazaret.html.twig</jms:reference-file>
<jms:reference-file line="518">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="520">prod/upload/lazaret.html.twig</jms:reference-file>
<jms:reference-file line="25">admin/task-manager/templates.html.twig</jms:reference-file> <jms:reference-file line="25">admin/task-manager/templates.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="1b5737dea168495fa0495e00ce58b4832772a492" resname="Delete account successfull" approved="yes"> <trans-unit id="1b5737dea168495fa0495e00ce58b4832772a492" resname="Delete account successfull" approved="yes">
@@ -2458,7 +2458,7 @@
<trans-unit id="dcce9368ad626fe4addfa719b7a16807d464aa9b" resname="Derniers envois" approved="yes"> <trans-unit id="dcce9368ad626fe4addfa719b7a16807d464aa9b" resname="Derniers envois" approved="yes">
<source>Derniers envois</source> <source>Derniers envois</source>
<target state="translated">Last sent</target> <target state="translated">Last sent</target>
<jms:reference-file line="126">web/developers/application.html.twig</jms:reference-file> <jms:reference-file line="165">web/developers/application.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="ec52b98c45f63139a4bee23fa7d177838f2b3628" resname="Des difficultes ont ete rencontres a la connection au serveur distant" approved="yes"> <trans-unit id="ec52b98c45f63139a4bee23fa7d177838f2b3628" resname="Des difficultes ont ete rencontres a la connection au serveur distant" approved="yes">
<source>Des difficultes ont ete rencontres a la connection au serveur distant</source> <source>Des difficultes ont ete rencontres a la connection au serveur distant</source>
@@ -2537,7 +2537,7 @@
<jms:reference-file line="68">Form/Configuration/ActionsFormType.php</jms:reference-file> <jms:reference-file line="68">Form/Configuration/ActionsFormType.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="fa9fd169cd55f0433c6e7a4b5d758f90d0847411" resname="Display &amp; action settings" approved="yes"> <trans-unit id="fa9fd169cd55f0433c6e7a4b5d758f90d0847411" resname="Display &amp; action settings" approved="yes">
<source>Display &amp; action settings</source> <source><![CDATA[Display & action settings]]></source>
<target state="translated">Display and action settings</target> <target state="translated">Display and action settings</target>
<jms:reference-file line="152">admin/fields/templates.html.twig</jms:reference-file> <jms:reference-file line="152">admin/fields/templates.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
@@ -3286,8 +3286,8 @@
<source>File is not present in quarantine anymore, please refresh</source> <source>File is not present in quarantine anymore, please refresh</source>
<target state="translated">Document is not in quarantine anymore, please refresh</target> <target state="translated">Document is not in quarantine anymore, please refresh</target>
<jms:reference-file line="56">Model/Manipulator/LazaretManipulator.php</jms:reference-file> <jms:reference-file line="56">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="140">Model/Manipulator/LazaretManipulator.php</jms:reference-file> <jms:reference-file line="136">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="170">Model/Manipulator/LazaretManipulator.php</jms:reference-file> <jms:reference-file line="157">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="78">Controller/Prod/LazaretController.php</jms:reference-file> <jms:reference-file line="78">Controller/Prod/LazaretController.php</jms:reference-file>
<jms:reference-file line="207">Controller/Prod/LazaretController.php</jms:reference-file> <jms:reference-file line="207">Controller/Prod/LazaretController.php</jms:reference-file>
</trans-unit> </trans-unit>
@@ -5925,7 +5925,7 @@
<trans-unit id="1d72d3b024f99631791dcfbc8288caa16d3ff388" resname="Résultats des derniers envois effectués pour cette application" approved="yes"> <trans-unit id="1d72d3b024f99631791dcfbc8288caa16d3ff388" resname="Résultats des derniers envois effectués pour cette application" approved="yes">
<source>Résultats des derniers envois effectués pour cette application</source> <source>Résultats des derniers envois effectués pour cette application</source>
<target state="translated">Last webhooks sent for this application</target> <target state="translated">Last webhooks sent for this application</target>
<jms:reference-file line="127">web/developers/application.html.twig</jms:reference-file> <jms:reference-file line="166">web/developers/application.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="741cd64a01685389e2fabdb7091a3b70f6be63ee" resname="SMTP encryption" approved="yes"> <trans-unit id="741cd64a01685389e2fabdb7091a3b70f6be63ee" resname="SMTP encryption" approved="yes">
<source>SMTP encryption</source> <source>SMTP encryption</source>
@@ -6116,7 +6116,7 @@
<jms:reference-file line="46">web/login/forgot-password.html.twig</jms:reference-file> <jms:reference-file line="46">web/login/forgot-password.html.twig</jms:reference-file>
<jms:reference-file line="330">prod/actions/Push.html.twig</jms:reference-file> <jms:reference-file line="330">prod/actions/Push.html.twig</jms:reference-file>
<jms:reference-file line="332">prod/actions/Push.html.twig</jms:reference-file> <jms:reference-file line="332">prod/actions/Push.html.twig</jms:reference-file>
<jms:reference-file line="113">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="115">prod/upload/upload.html.twig</jms:reference-file>
<jms:reference-file line="110">prod/upload/upload-flash.html.twig</jms:reference-file> <jms:reference-file line="110">prod/upload/upload-flash.html.twig</jms:reference-file>
<jms:reference-file line="185">prod/orders/order_item.html.twig</jms:reference-file> <jms:reference-file line="185">prod/orders/order_item.html.twig</jms:reference-file>
<jms:reference-file line="220">prod/orders/order_item.html.twig</jms:reference-file> <jms:reference-file line="220">prod/orders/order_item.html.twig</jms:reference-file>
@@ -6475,8 +6475,8 @@
<trans-unit id="8017bd7de9961cf42f59abc587d0495a9d25c2a9" resname="Substitute" approved="yes"> <trans-unit id="8017bd7de9961cf42f59abc587d0495a9d25c2a9" resname="Substitute" approved="yes">
<source>Substitute</source> <source>Substitute</source>
<target state="translated">Substitute</target> <target state="translated">Substitute</target>
<jms:reference-file line="521">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="523">prod/upload/lazaret.html.twig</jms:reference-file>
<jms:reference-file line="522">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="524">prod/upload/lazaret.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="3d48a1d66362cef46e567ddf521b0dc3233f57a2" resname="Substitution is not possible for this kind of record" approved="yes"> <trans-unit id="3d48a1d66362cef46e567ddf521b0dc3233f57a2" resname="Substitution is not possible for this kind of record" approved="yes">
<source>Substitution is not possible for this kind of record</source> <source>Substitution is not possible for this kind of record</source>
@@ -6748,7 +6748,7 @@
<trans-unit id="1d5dadcdeeecd294a88baf096ba0440053ecf738" resname="The file was moved to the quarantine" approved="yes"> <trans-unit id="1d5dadcdeeecd294a88baf096ba0440053ecf738" resname="The file was moved to the quarantine" approved="yes">
<source>The file was moved to the quarantine</source> <source>The file was moved to the quarantine</source>
<target state="translated">The file has moved to quarantine</target> <target state="translated">The file has moved to quarantine</target>
<jms:reference-file line="338">Controller/Prod/UploadController.php</jms:reference-file> <jms:reference-file line="283">Controller/Prod/UploadController.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="1818502d42e14ffcb9c664fd1365fafa969971ff" resname="The following errors have been detected" approved="yes"> <trans-unit id="1818502d42e14ffcb9c664fd1365fafa969971ff" resname="The following errors have been detected" approved="yes">
<source>The following errors have been detected</source> <source>The following errors have been detected</source>
@@ -6764,7 +6764,7 @@
<trans-unit id="bae1c72ecbe1459751e4a0fee382a305bbf933b7" resname="The record was successfully created" approved="yes"> <trans-unit id="bae1c72ecbe1459751e4a0fee382a305bbf933b7" resname="The record was successfully created" approved="yes">
<source>The record was successfully created</source> <source>The record was successfully created</source>
<target state="translated">The record has been successfully created</target> <target state="translated">The record has been successfully created</target>
<jms:reference-file line="292">Controller/Prod/UploadController.php</jms:reference-file> <jms:reference-file line="253">Controller/Prod/UploadController.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="209817489c23cec8b7a15f6b8ca3e45daf08656d" resname="The records have been properly ordered" approved="yes"> <trans-unit id="209817489c23cec8b7a15f6b8ca3e45daf08656d" resname="The records have been properly ordered" approved="yes">
<source>The records have been properly ordered</source> <source>The records have been properly ordered</source>
@@ -6999,7 +6999,7 @@
<trans-unit id="9764c016bb5a296069109116fa95c49815dcba82" resname="Transmited files" approved="yes"> <trans-unit id="9764c016bb5a296069109116fa95c49815dcba82" resname="Transmited files" approved="yes">
<source>Transmited files</source> <source>Transmited files</source>
<target state="translated">Transmitted files</target> <target state="translated">Transmitted files</target>
<jms:reference-file line="122">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="124">prod/upload/upload.html.twig</jms:reference-file>
<jms:reference-file line="118">prod/upload/upload-flash.html.twig</jms:reference-file> <jms:reference-file line="118">prod/upload/upload-flash.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="6e764776541fbe428a3566f42ee7956312af98b7" resname="Trier par" approved="yes"> <trans-unit id="6e764776541fbe428a3566f42ee7956312af98b7" resname="Trier par" approved="yes">
@@ -7061,7 +7061,7 @@
<trans-unit id="d32751443628a0d2c5b31b441c1e2b3001f35dfd" resname="Unable to add file to Phraseanet" approved="yes"> <trans-unit id="d32751443628a0d2c5b31b441c1e2b3001f35dfd" resname="Unable to add file to Phraseanet" approved="yes">
<source>Unable to add file to Phraseanet</source> <source>Unable to add file to Phraseanet</source>
<target state="translated">Unable to add files to Phraseanet</target> <target state="translated">Unable to add files to Phraseanet</target>
<jms:reference-file line="350">Controller/Prod/UploadController.php</jms:reference-file> <jms:reference-file line="295">Controller/Prod/UploadController.php</jms:reference-file>
<jms:reference-file line="195">Controller/Admin/FeedController.php</jms:reference-file> <jms:reference-file line="195">Controller/Admin/FeedController.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="8b233593eb66b5be4da2f44ff527bd641b3a6fc1" resname="Unable to add usr to list" approved="yes"> <trans-unit id="8b233593eb66b5be4da2f44ff527bd641b3a6fc1" resname="Unable to add usr to list" approved="yes">
@@ -7851,7 +7851,7 @@
<trans-unit id="4a67615bcd64fcc9443c499676a462d835ad841e" resname="You can not upload files" approved="yes"> <trans-unit id="4a67615bcd64fcc9443c499676a462d835ad841e" resname="You can not upload files" approved="yes">
<source>You can not upload files</source> <source>You can not upload files</source>
<target state="translated">You are not allowed to upload files</target> <target state="translated">You are not allowed to upload files</target>
<jms:reference-file line="144">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="146">prod/upload/upload.html.twig</jms:reference-file>
<jms:reference-file line="102">prod/upload/upload-flash.html.twig</jms:reference-file> <jms:reference-file line="102">prod/upload/upload-flash.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="4faca55769348dcbc9714b19438181057aa2510e" resname="You do not enough rights to update status" approved="yes"> <trans-unit id="4faca55769348dcbc9714b19438181057aa2510e" resname="You do not enough rights to update status" approved="yes">
@@ -9991,7 +9991,7 @@
<trans-unit id="e0af1d0d7872c48928d4faef76c45567426e62f9" resname="boutton::retour" approved="yes"> <trans-unit id="e0af1d0d7872c48928d4faef76c45567426e62f9" resname="boutton::retour" approved="yes">
<source>boutton::retour</source> <source>boutton::retour</source>
<target state="translated">Back</target> <target state="translated">Back</target>
<jms:reference-file line="154">web/developers/application.html.twig</jms:reference-file> <jms:reference-file line="193">web/developers/application.html.twig</jms:reference-file>
<jms:reference-file line="116">web/developers/application_form.html.twig</jms:reference-file> <jms:reference-file line="116">web/developers/application_form.html.twig</jms:reference-file>
<jms:reference-file line="20">Bridge/Flickr/photo_deleteelement.html.twig</jms:reference-file> <jms:reference-file line="20">Bridge/Flickr/photo_deleteelement.html.twig</jms:reference-file>
<jms:reference-file line="20">Bridge/Flickr/photoset_deleteelement.html.twig</jms:reference-file> <jms:reference-file line="20">Bridge/Flickr/photoset_deleteelement.html.twig</jms:reference-file>
@@ -10348,6 +10348,101 @@
<target state="translated">descending</target> <target state="translated">descending</target>
<jms:reference-file line="184">SearchEngine/Elastic/ElasticSearchEngine.php</jms:reference-file> <jms:reference-file line="184">SearchEngine/Elastic/ElasticSearchEngine.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="8e82b164f61602c25d57b485ed09c7a59a8e0919" resname="developers:: Events name">
<source>developers:: Events name</source>
<target state="new">developers:: Events name</target>
<jms:reference-file line="134">web/developers/application.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="f717955140c0a034f0e08cfc1416b8443e86cbb5" resname="developers:: Events trigger this webhook">
<source>developers:: Events trigger this webhook</source>
<target state="new">developers:: Events trigger this webhook</target>
<jms:reference-file line="125">web/developers/application.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="3a425cde38ee310e52988e9e9970f1c8dd376c13" resname="developers:: Events type">
<source>developers:: Events type</source>
<target state="new">developers:: Events type</target>
<jms:reference-file line="131">web/developers/application.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="0b3e5bbe37fa58fc7ce4682309017ffcebe95a23" resname="developers:: Select events to trigger this webhook url">
<source>developers:: Select events to trigger this webhook url</source>
<target state="new">developers:: Select events to trigger this webhook url</target>
<jms:reference-file line="126">web/developers/application.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="bffa41c7a64fc38e50153ea0f6f7c2368b008028" resname="developers:: a order delivered">
<source>developers:: a order delivered</source>
<target state="new">developers:: a order delivered</target>
<jms:reference-file line="372">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="9b74fc2656c9e78eec665260f31b446edf548932" resname="developers:: a order denied">
<source>developers:: a order denied</source>
<target state="new">developers:: a order denied</target>
<jms:reference-file line="373">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="c2d24cc69b826a71661c25cbd5291cdaaf95208c" resname="developers:: collection changed for record">
<source>developers:: collection changed for record</source>
<target state="new">developers:: collection changed for record</target>
<jms:reference-file line="353">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="1066a8925f76bd4aadebd7ec114b0ff771ab05ed" resname="developers:: media substituted for record">
<source>developers:: media substituted for record</source>
<target state="new">developers:: media substituted for record</target>
<jms:reference-file line="352">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="ab1c856fecf799bb87498cb26ea74b3db85b4f0b" resname="developers:: new feed entry on phraseanet">
<source>developers:: new feed entry on phraseanet</source>
<target state="new">developers:: new feed entry on phraseanet</target>
<jms:reference-file line="368">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="92259dc5125d969b7ba7fb1af0afd121147d1839" resname="developers:: new order created">
<source>developers:: new order created</source>
<target state="new">developers:: new order created</target>
<jms:reference-file line="371">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="4d09e2ac8748c5ea4bb66d3cd247941f99478125" resname="developers:: record or story created">
<source>developers:: record or story created</source>
<target state="new">developers:: record or story created</target>
<jms:reference-file line="349">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="1f036a4965ecb781192393a08a5aa0510a94524c" resname="developers:: record or story deleted">
<source>developers:: record or story deleted</source>
<target state="new">developers:: record or story deleted</target>
<jms:reference-file line="351">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="98121e43abc2802cfec12de894e041f54d7c9b2c" resname="developers:: record or story edited">
<source>developers:: record or story edited</source>
<target state="new">developers:: record or story edited</target>
<jms:reference-file line="350">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="7479330e0d56c8b37e71013043acecd329ce5f08" resname="developers:: status changed for record">
<source>developers:: status changed for record</source>
<target state="new">developers:: status changed for record</target>
<jms:reference-file line="354">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="db026e337fa7eeba8352e87ca00a28e19c854453" resname="developers:: subdef created for a record">
<source>developers:: subdef created for a record</source>
<target state="new">developers:: subdef created for a record</target>
<jms:reference-file line="357">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="18fc15413169b19baf33adc2572d53a76b86f1f5" resname="developers:: subdef creation failed for a record">
<source>developers:: subdef creation failed for a record</source>
<target state="new">developers:: subdef creation failed for a record</target>
<jms:reference-file line="358">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="e59d8fc44e34b786247fa5924eeb12a4a1202215" resname="developers:: user deleted on phraseanet">
<source>developers:: user deleted on phraseanet</source>
<target state="new">developers:: user deleted on phraseanet</target>
<jms:reference-file line="361">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="13577491a21410883cb7990ce9fdd481fca5c58b" resname="developers:: user registration granted on phraseanet">
<source>developers:: user registration granted on phraseanet</source>
<target state="new">developers:: user registration granted on phraseanet</target>
<jms:reference-file line="364">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="b7786ecdfe826e6f347dbf643191d79a196c6057" resname="developers:: user registration rejected on phraseanet">
<source>developers:: user registration rejected on phraseanet</source>
<target state="new">developers:: user registration rejected on phraseanet</target>
<jms:reference-file line="365">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="55a2ad6e3d1c02d871104d64fb811f08c54bd1b9" resname="do you want to validate" approved="yes"> <trans-unit id="55a2ad6e3d1c02d871104d64fb811f08c54bd1b9" resname="do you want to validate" approved="yes">
<source>do you want to validate</source> <source>do you want to validate</source>
<target state="translated">Do you want to validate</target> <target state="translated">Do you want to validate</target>
@@ -11723,7 +11818,7 @@
<jms:reference-file line="564">Controller/Root/AccountController.php</jms:reference-file> <jms:reference-file line="564">Controller/Root/AccountController.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="bf7028b694aea3fc9ede5014a9f8b5d617b83b6f" resname="phraseanet::account: &lt;&lt; your account can be deleted via admin interface &gt;&gt; " approved="yes"> <trans-unit id="bf7028b694aea3fc9ede5014a9f8b5d617b83b6f" resname="phraseanet::account: &lt;&lt; your account can be deleted via admin interface &gt;&gt; " approved="yes">
<source>phraseanet::account: &lt;&lt; your account can be deleted via admin interface &gt;&gt;</source> <source><![CDATA[phraseanet::account: << your account can be deleted via admin interface >>]]></source>
<target state="translated">Your rights do not allow to perform this action. Your account can only be deleted via the Administration interface.</target> <target state="translated">Your rights do not allow to perform this action. Your account can only be deleted via the Administration interface.</target>
<jms:reference-file line="289">web/account/account.html.twig</jms:reference-file> <jms:reference-file line="289">web/account/account.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
@@ -13872,12 +13967,12 @@ It is possible to place several search areas</target>
<trans-unit id="ae34347293abc9a106150c8db2b2a3b1b7739c0b" resname="same UUID" approved="yes"> <trans-unit id="ae34347293abc9a106150c8db2b2a3b1b7739c0b" resname="same UUID" approved="yes">
<source>same UUID</source> <source>same UUID</source>
<target state="translated">A file with the same UUID already exists in the database</target> <target state="translated">A file with the same UUID already exists in the database</target>
<jms:reference-file line="87">Border/Checker/UUID.php</jms:reference-file> <jms:reference-file line="76">Border/Checker/UUID.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="9efb800c6df15d107be9c0aeb19e2d218ebfe135" resname="same checksum" approved="yes"> <trans-unit id="9efb800c6df15d107be9c0aeb19e2d218ebfe135" resname="same checksum" approved="yes">
<source>same checksum</source> <source>same checksum</source>
<target state="translated">A file with the same checksum already exists in the database</target> <target state="translated">A file with the same checksum already exists in the database</target>
<jms:reference-file line="77">Border/Checker/Sha256.php</jms:reference-file> <jms:reference-file line="69">Border/Checker/Sha256.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="99e3a652745118f0d3c79e13d81168544afe2b77" resname="same filename" approved="yes"> <trans-unit id="99e3a652745118f0d3c79e13d81168544afe2b77" resname="same filename" approved="yes">
<source>same filename</source> <source>same filename</source>
@@ -14357,7 +14452,7 @@ It is possible to place several search areas</target>
<jms:reference-file line="1338">web/thesaurus/thesaurus.html.twig</jms:reference-file> <jms:reference-file line="1338">web/thesaurus/thesaurus.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="33df70d7fa528a31071e11d1b987b49dc947ce16" resname="thesaurus:: Supprimer cette branche ?&amp;#10;(les termes concernes remonteront en candidats a la prochaine indexation)" approved="yes"> <trans-unit id="33df70d7fa528a31071e11d1b987b49dc947ce16" resname="thesaurus:: Supprimer cette branche ?&amp;#10;(les termes concernes remonteront en candidats a la prochaine indexation)" approved="yes">
<source>thesaurus:: Supprimer cette branche ?&amp;#10;(les termes concernes remonteront en candidats a la prochaine indexation)</source> <source><![CDATA[thesaurus:: Supprimer cette branche ?&#10;(les termes concernes remonteront en candidats a la prochaine indexation)]]></source>
<target state="translated"><![CDATA[Delete branch : &#10 (concerned terms will be displayed as candidates on future indexation)]]></target> <target state="translated"><![CDATA[Delete branch : &#10 (concerned terms will be displayed as candidates on future indexation)]]></target>
<jms:reference-file line="542">web/thesaurus/thesaurus.html.twig</jms:reference-file> <jms:reference-file line="542">web/thesaurus/thesaurus.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
@@ -14935,9 +15030,9 @@ It is possible to place several search areas</target>
<trans-unit id="39e4890a2d75f483b1cb2131b2d19f8cf96a502b" resname="upload:: Status :" approved="yes"> <trans-unit id="39e4890a2d75f483b1cb2131b2d19f8cf96a502b" resname="upload:: Status :" approved="yes">
<source>upload:: Status :</source> <source>upload:: Status :</source>
<target state="translated">Apply status</target> <target state="translated">Apply status</target>
<jms:reference-file line="80">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="81">prod/upload/upload.html.twig</jms:reference-file>
<jms:reference-file line="75">prod/upload/upload-flash.html.twig</jms:reference-file> <jms:reference-file line="75">prod/upload/upload-flash.html.twig</jms:reference-file>
<jms:reference-file line="462">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="463">prod/upload/lazaret.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="4fea0574cc81b5fd40ab0537b0905cc4c3806039" resname="users rights have been reseted" approved="yes"> <trans-unit id="4fea0574cc81b5fd40ab0537b0905cc4c3806039" resname="users rights have been reseted" approved="yes">
<source>users rights have been reseted</source> <source>users rights have been reseted</source>

View File

@@ -1,14 +1,14 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2"> <xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
<file date="2021-09-24T11:10:54Z" source-language="en" target-language="fr" datatype="plaintext" original="not.available"> <file date="2021-11-16T13:31:10Z" source-language="en" target-language="fr" datatype="plaintext" original="not.available">
<header> <header>
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/> <tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note> <note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
</header> </header>
<body> <body>
<trans-unit id="da39a3ee5e6b4b0d3255bfef95601890afd80709" resname=""> <trans-unit id="da39a3ee5e6b4b0d3255bfef95601890afd80709" resname="">
<source/> <source></source>
<target state="new"/> <target state="new"></target>
<jms:reference-file line="51">Form/Configuration/EmailFormType.php</jms:reference-file> <jms:reference-file line="51">Form/Configuration/EmailFormType.php</jms:reference-file>
<jms:reference-file line="64">Form/Login/PhraseaAuthenticationForm.php</jms:reference-file> <jms:reference-file line="64">Form/Login/PhraseaAuthenticationForm.php</jms:reference-file>
</trans-unit> </trans-unit>
@@ -196,7 +196,7 @@
<jms:reference-file line="7">Bridge/Dailymotion/element_informations.html.twig</jms:reference-file> <jms:reference-file line="7">Bridge/Dailymotion/element_informations.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="de0804eb70c10b14d71df74292e45c6daa13d672" resname="%number% documents&lt;br/&gt;selectionnes" approved="yes"> <trans-unit id="de0804eb70c10b14d71df74292e45c6daa13d672" resname="%number% documents&lt;br/&gt;selectionnes" approved="yes">
<source>%number% documents&lt;br/&gt;selectionnes</source> <source><![CDATA[%number% documents<br/>selectionnes]]></source>
<target state="translated"><![CDATA[%number% documents<br/>sélectionnés]]></target> <target state="translated"><![CDATA[%number% documents<br/>sélectionnés]]></target>
<jms:reference-file line="263">Controller/Prod/QueryController.php</jms:reference-file> <jms:reference-file line="263">Controller/Prod/QueryController.php</jms:reference-file>
</trans-unit> </trans-unit>
@@ -249,7 +249,7 @@
<trans-unit id="d7c38bf41291d1f920c6e0b56a1c4a1cfc0b6743" resname="%quantity% selected files" approved="yes"> <trans-unit id="d7c38bf41291d1f920c6e0b56a1c4a1cfc0b6743" resname="%quantity% selected files" approved="yes">
<source>%quantity% selected files</source> <source>%quantity% selected files</source>
<target state="translated">%quantity% fichiers sélectionnés</target> <target state="translated">%quantity% fichiers sélectionnés</target>
<jms:reference-file line="111">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="113">prod/upload/upload.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="eae910e840fe7df8ef8211d587e72af74ab69463" resname="%quantity_records% records have been sent for validation to %quantity_users% users" approved="yes"> <trans-unit id="eae910e840fe7df8ef8211d587e72af74ab69463" resname="%quantity_records% records have been sent for validation to %quantity_users% users" approved="yes">
<source>%quantity_records% records have been sent for validation to %quantity_users% users</source> <source>%quantity_records% records have been sent for validation to %quantity_users% users</source>
@@ -264,7 +264,7 @@
<trans-unit id="4d90df6ce9691d4bc172b9129250a5af4bef4b7f" resname="%record_count% records match the unique identifier :" approved="yes"> <trans-unit id="4d90df6ce9691d4bc172b9129250a5af4bef4b7f" resname="%record_count% records match the unique identifier :" approved="yes">
<source>%record_count% records match the unique identifier :</source> <source>%record_count% records match the unique identifier :</source>
<target state="translated">%record_count% enregistrements correspondent à des identifiants uniques existants:</target> <target state="translated">%record_count% enregistrements correspondent à des identifiants uniques existants:</target>
<jms:reference-file line="590">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="592">prod/upload/lazaret.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="1d847e60f4e92e438c94f0eb3176ce96113c63e5" resname="%s field has been created with success." approved="yes"> <trans-unit id="1d847e60f4e92e438c94f0eb3176ce96113c63e5" resname="%s field has been created with success." approved="yes">
<source>%s field has been created with success.</source> <source>%s field has been created with success.</source>
@@ -466,12 +466,12 @@
<trans-unit id="fa591b39e82a5a47573a9ed70172620c2660596c" resname="A file with the same UUID already exists in database" approved="yes"> <trans-unit id="fa591b39e82a5a47573a9ed70172620c2660596c" resname="A file with the same UUID already exists in database" approved="yes">
<source>A file with the same UUID already exists in database</source> <source>A file with the same UUID already exists in database</source>
<target state="translated">Un fichier avec le même UUID existe déjà dans la base de données</target> <target state="translated">Un fichier avec le même UUID existe déjà dans la base de données</target>
<jms:reference-file line="95">Border/Checker/UUID.php</jms:reference-file> <jms:reference-file line="84">Border/Checker/UUID.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="3111a4c2d6a675604d8bed8fe7ac2d7ec859bca2" resname="A file with the same checksum already exists in database" approved="yes"> <trans-unit id="3111a4c2d6a675604d8bed8fe7ac2d7ec859bca2" resname="A file with the same checksum already exists in database" approved="yes">
<source>A file with the same checksum already exists in database</source> <source>A file with the same checksum already exists in database</source>
<target state="translated">Un fichier avec la même somme de contrôle existe déjà dans la base de données</target> <target state="translated">Un fichier avec la même somme de contrôle existe déjà dans la base de données</target>
<jms:reference-file line="85">Border/Checker/Sha256.php</jms:reference-file> <jms:reference-file line="77">Border/Checker/Sha256.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="aee62b552774745bfc7778349545413b39c33a9a" resname="A file with the same filename already exists in database" approved="yes"> <trans-unit id="aee62b552774745bfc7778349545413b39c33a9a" resname="A file with the same filename already exists in database" approved="yes">
<source>A file with the same filename already exists in database</source> <source>A file with the same filename already exists in database</source>
@@ -481,7 +481,7 @@
<trans-unit id="e6558cad562de9eeae699e5f7fc7c8ae076d38c8" resname="A record matches the unique identifier :" approved="yes"> <trans-unit id="e6558cad562de9eeae699e5f7fc7c8ae076d38c8" resname="A record matches the unique identifier :" approved="yes">
<source>A record matches the unique identifier :</source> <source>A record matches the unique identifier :</source>
<target state="translated">Un enregistrement correspond à un identifiant unique existant :</target> <target state="translated">Un enregistrement correspond à un identifiant unique existant :</target>
<jms:reference-file line="588">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="590">prod/upload/lazaret.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="b73e8cb42d796f56db9989972e41942d9135c2cc" resname="A required field is missing or has an empty value" approved="yes"> <trans-unit id="b73e8cb42d796f56db9989972e41942d9135c2cc" resname="A required field is missing or has an empty value" approved="yes">
<source>A required field is missing or has an empty value</source> <source>A required field is missing or has an empty value</source>
@@ -670,8 +670,8 @@
<target state="translated">Ajouter</target> <target state="translated">Ajouter</target>
<jms:reference-file line="29">prod/User/Add.html.twig</jms:reference-file> <jms:reference-file line="29">prod/User/Add.html.twig</jms:reference-file>
<jms:reference-file line="161">prod/actions/Push.html.twig</jms:reference-file> <jms:reference-file line="161">prod/actions/Push.html.twig</jms:reference-file>
<jms:reference-file line="514">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="516">prod/upload/lazaret.html.twig</jms:reference-file>
<jms:reference-file line="515">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="517">prod/upload/lazaret.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="983c5aed52d2f74bf36e97dc34dbce97fdd43f5b" resname="Add a&#10; new field" approved="yes"> <trans-unit id="983c5aed52d2f74bf36e97dc34dbce97fdd43f5b" resname="Add a&#10; new field" approved="yes">
<source>Add a new field</source> <source>Add a new field</source>
@@ -970,7 +970,7 @@
<source>An error occured</source> <source>An error occured</source>
<target state="translated">Une erreur est survenue.</target> <target state="translated">Une erreur est survenue.</target>
<jms:reference-file line="120">Model/Manipulator/LazaretManipulator.php</jms:reference-file> <jms:reference-file line="120">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="285">Model/Manipulator/LazaretManipulator.php</jms:reference-file> <jms:reference-file line="245">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="164">Controller/Prod/MoveCollectionController.php</jms:reference-file> <jms:reference-file line="164">Controller/Prod/MoveCollectionController.php</jms:reference-file>
<jms:reference-file line="257">Controller/Prod/LazaretController.php</jms:reference-file> <jms:reference-file line="257">Controller/Prod/LazaretController.php</jms:reference-file>
<jms:reference-file line="262">Controller/Prod/BasketController.php</jms:reference-file> <jms:reference-file line="262">Controller/Prod/BasketController.php</jms:reference-file>
@@ -1595,7 +1595,7 @@
<trans-unit id="ae1f9ef7dc1cee4760e7f208f36c225e3ab1aa1f" resname="Cancel all" approved="yes"> <trans-unit id="ae1f9ef7dc1cee4760e7f208f36c225e3ab1aa1f" resname="Cancel all" approved="yes">
<source>Cancel all</source> <source>Cancel all</source>
<target state="translated">Annuler tout</target> <target state="translated">Annuler tout</target>
<jms:reference-file line="131">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="133">prod/upload/upload.html.twig</jms:reference-file>
<jms:reference-file line="121">prod/upload/upload-flash.html.twig</jms:reference-file> <jms:reference-file line="121">prod/upload/upload-flash.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="82695f04e6097106923a58949a9e1b0fadd1a989" resname="Cannot upload Zero Byte files" approved="yes"> <trans-unit id="82695f04e6097106923a58949a9e1b0fadd1a989" resname="Cannot upload Zero Byte files" approved="yes">
@@ -1791,7 +1791,7 @@
<trans-unit id="7135ee5eaed0e404c4fcf48d6eb7d2808f8e55f2" resname="Clear list" approved="yes"> <trans-unit id="7135ee5eaed0e404c4fcf48d6eb7d2808f8e55f2" resname="Clear list" approved="yes">
<source>Clear list</source> <source>Clear list</source>
<target state="translated">Vider la liste</target> <target state="translated">Vider la liste</target>
<jms:reference-file line="112">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="114">prod/upload/upload.html.twig</jms:reference-file>
<jms:reference-file line="109">prod/upload/upload-flash.html.twig</jms:reference-file> <jms:reference-file line="109">prod/upload/upload-flash.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="0fcdb8c5215c8bd73769c3492e47d86ec3f6837e" resname="Client application" approved="yes"> <trans-unit id="0fcdb8c5215c8bd73769c3492e47d86ec3f6837e" resname="Client application" approved="yes">
@@ -2382,8 +2382,8 @@
<trans-unit id="f6fdbe48dc54dd86f63097a03bd24094dedd713a" resname="Delete" approved="yes"> <trans-unit id="f6fdbe48dc54dd86f63097a03bd24094dedd713a" resname="Delete" approved="yes">
<source>Delete</source> <source>Delete</source>
<target state="translated">Supprimer</target> <target state="translated">Supprimer</target>
<jms:reference-file line="517">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="519">prod/upload/lazaret.html.twig</jms:reference-file>
<jms:reference-file line="518">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="520">prod/upload/lazaret.html.twig</jms:reference-file>
<jms:reference-file line="25">admin/task-manager/templates.html.twig</jms:reference-file> <jms:reference-file line="25">admin/task-manager/templates.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="1b5737dea168495fa0495e00ce58b4832772a492" resname="Delete account successfull" approved="yes"> <trans-unit id="1b5737dea168495fa0495e00ce58b4832772a492" resname="Delete account successfull" approved="yes">
@@ -2455,7 +2455,7 @@
<trans-unit id="dcce9368ad626fe4addfa719b7a16807d464aa9b" resname="Derniers envois" approved="yes"> <trans-unit id="dcce9368ad626fe4addfa719b7a16807d464aa9b" resname="Derniers envois" approved="yes">
<source>Derniers envois</source> <source>Derniers envois</source>
<target state="translated">Derniers envois</target> <target state="translated">Derniers envois</target>
<jms:reference-file line="126">web/developers/application.html.twig</jms:reference-file> <jms:reference-file line="165">web/developers/application.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="ec52b98c45f63139a4bee23fa7d177838f2b3628" resname="Des difficultes ont ete rencontres a la connection au serveur distant" approved="yes"> <trans-unit id="ec52b98c45f63139a4bee23fa7d177838f2b3628" resname="Des difficultes ont ete rencontres a la connection au serveur distant" approved="yes">
<source>Des difficultes ont ete rencontres a la connection au serveur distant</source> <source>Des difficultes ont ete rencontres a la connection au serveur distant</source>
@@ -2534,7 +2534,7 @@
<jms:reference-file line="68">Form/Configuration/ActionsFormType.php</jms:reference-file> <jms:reference-file line="68">Form/Configuration/ActionsFormType.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="fa9fd169cd55f0433c6e7a4b5d758f90d0847411" resname="Display &amp; action settings" approved="yes"> <trans-unit id="fa9fd169cd55f0433c6e7a4b5d758f90d0847411" resname="Display &amp; action settings" approved="yes">
<source>Display &amp; action settings</source> <source><![CDATA[Display & action settings]]></source>
<target state="translated">Paramétrage d'affichage et d'action</target> <target state="translated">Paramétrage d'affichage et d'action</target>
<jms:reference-file line="152">admin/fields/templates.html.twig</jms:reference-file> <jms:reference-file line="152">admin/fields/templates.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
@@ -3283,8 +3283,8 @@
<source>File is not present in quarantine anymore, please refresh</source> <source>File is not present in quarantine anymore, please refresh</source>
<target state="translated">Ce fichier n'est plus en quarantaine, rafraîchissez la page</target> <target state="translated">Ce fichier n'est plus en quarantaine, rafraîchissez la page</target>
<jms:reference-file line="56">Model/Manipulator/LazaretManipulator.php</jms:reference-file> <jms:reference-file line="56">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="140">Model/Manipulator/LazaretManipulator.php</jms:reference-file> <jms:reference-file line="136">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="170">Model/Manipulator/LazaretManipulator.php</jms:reference-file> <jms:reference-file line="157">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="78">Controller/Prod/LazaretController.php</jms:reference-file> <jms:reference-file line="78">Controller/Prod/LazaretController.php</jms:reference-file>
<jms:reference-file line="207">Controller/Prod/LazaretController.php</jms:reference-file> <jms:reference-file line="207">Controller/Prod/LazaretController.php</jms:reference-file>
</trans-unit> </trans-unit>
@@ -5924,7 +5924,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis
<trans-unit id="1d72d3b024f99631791dcfbc8288caa16d3ff388" resname="Résultats des derniers envois effectués pour cette application" approved="yes"> <trans-unit id="1d72d3b024f99631791dcfbc8288caa16d3ff388" resname="Résultats des derniers envois effectués pour cette application" approved="yes">
<source>Résultats des derniers envois effectués pour cette application</source> <source>Résultats des derniers envois effectués pour cette application</source>
<target state="translated">Résultats des derniers envois effectués pour cette application</target> <target state="translated">Résultats des derniers envois effectués pour cette application</target>
<jms:reference-file line="127">web/developers/application.html.twig</jms:reference-file> <jms:reference-file line="166">web/developers/application.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="741cd64a01685389e2fabdb7091a3b70f6be63ee" resname="SMTP encryption" approved="yes"> <trans-unit id="741cd64a01685389e2fabdb7091a3b70f6be63ee" resname="SMTP encryption" approved="yes">
<source>SMTP encryption</source> <source>SMTP encryption</source>
@@ -6115,7 +6115,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis
<jms:reference-file line="46">web/login/forgot-password.html.twig</jms:reference-file> <jms:reference-file line="46">web/login/forgot-password.html.twig</jms:reference-file>
<jms:reference-file line="330">prod/actions/Push.html.twig</jms:reference-file> <jms:reference-file line="330">prod/actions/Push.html.twig</jms:reference-file>
<jms:reference-file line="332">prod/actions/Push.html.twig</jms:reference-file> <jms:reference-file line="332">prod/actions/Push.html.twig</jms:reference-file>
<jms:reference-file line="113">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="115">prod/upload/upload.html.twig</jms:reference-file>
<jms:reference-file line="110">prod/upload/upload-flash.html.twig</jms:reference-file> <jms:reference-file line="110">prod/upload/upload-flash.html.twig</jms:reference-file>
<jms:reference-file line="185">prod/orders/order_item.html.twig</jms:reference-file> <jms:reference-file line="185">prod/orders/order_item.html.twig</jms:reference-file>
<jms:reference-file line="220">prod/orders/order_item.html.twig</jms:reference-file> <jms:reference-file line="220">prod/orders/order_item.html.twig</jms:reference-file>
@@ -6474,8 +6474,8 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis
<trans-unit id="8017bd7de9961cf42f59abc587d0495a9d25c2a9" resname="Substitute" approved="yes"> <trans-unit id="8017bd7de9961cf42f59abc587d0495a9d25c2a9" resname="Substitute" approved="yes">
<source>Substitute</source> <source>Substitute</source>
<target state="translated">Substituer</target> <target state="translated">Substituer</target>
<jms:reference-file line="521">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="523">prod/upload/lazaret.html.twig</jms:reference-file>
<jms:reference-file line="522">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="524">prod/upload/lazaret.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="3d48a1d66362cef46e567ddf521b0dc3233f57a2" resname="Substitution is not possible for this kind of record" approved="yes"> <trans-unit id="3d48a1d66362cef46e567ddf521b0dc3233f57a2" resname="Substitution is not possible for this kind of record" approved="yes">
<source>Substitution is not possible for this kind of record</source> <source>Substitution is not possible for this kind of record</source>
@@ -6747,7 +6747,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis
<trans-unit id="1d5dadcdeeecd294a88baf096ba0440053ecf738" resname="The file was moved to the quarantine" approved="yes"> <trans-unit id="1d5dadcdeeecd294a88baf096ba0440053ecf738" resname="The file was moved to the quarantine" approved="yes">
<source>The file was moved to the quarantine</source> <source>The file was moved to the quarantine</source>
<target state="translated">Le fichier a été déplacé en quarantaine</target> <target state="translated">Le fichier a été déplacé en quarantaine</target>
<jms:reference-file line="338">Controller/Prod/UploadController.php</jms:reference-file> <jms:reference-file line="283">Controller/Prod/UploadController.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="1818502d42e14ffcb9c664fd1365fafa969971ff" resname="The following errors have been detected" approved="yes"> <trans-unit id="1818502d42e14ffcb9c664fd1365fafa969971ff" resname="The following errors have been detected" approved="yes">
<source>The following errors have been detected</source> <source>The following errors have been detected</source>
@@ -6763,7 +6763,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis
<trans-unit id="bae1c72ecbe1459751e4a0fee382a305bbf933b7" resname="The record was successfully created" approved="yes"> <trans-unit id="bae1c72ecbe1459751e4a0fee382a305bbf933b7" resname="The record was successfully created" approved="yes">
<source>The record was successfully created</source> <source>The record was successfully created</source>
<target state="translated">L'enregistrement a été créé</target> <target state="translated">L'enregistrement a été créé</target>
<jms:reference-file line="292">Controller/Prod/UploadController.php</jms:reference-file> <jms:reference-file line="253">Controller/Prod/UploadController.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="209817489c23cec8b7a15f6b8ca3e45daf08656d" resname="The records have been properly ordered" approved="yes"> <trans-unit id="209817489c23cec8b7a15f6b8ca3e45daf08656d" resname="The records have been properly ordered" approved="yes">
<source>The records have been properly ordered</source> <source>The records have been properly ordered</source>
@@ -6998,7 +6998,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis
<trans-unit id="9764c016bb5a296069109116fa95c49815dcba82" resname="Transmited files" approved="yes"> <trans-unit id="9764c016bb5a296069109116fa95c49815dcba82" resname="Transmited files" approved="yes">
<source>Transmited files</source> <source>Transmited files</source>
<target state="translated">Fichiers transmis</target> <target state="translated">Fichiers transmis</target>
<jms:reference-file line="122">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="124">prod/upload/upload.html.twig</jms:reference-file>
<jms:reference-file line="118">prod/upload/upload-flash.html.twig</jms:reference-file> <jms:reference-file line="118">prod/upload/upload-flash.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="6e764776541fbe428a3566f42ee7956312af98b7" resname="Trier par" approved="yes"> <trans-unit id="6e764776541fbe428a3566f42ee7956312af98b7" resname="Trier par" approved="yes">
@@ -7060,7 +7060,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis
<trans-unit id="d32751443628a0d2c5b31b441c1e2b3001f35dfd" resname="Unable to add file to Phraseanet" approved="yes"> <trans-unit id="d32751443628a0d2c5b31b441c1e2b3001f35dfd" resname="Unable to add file to Phraseanet" approved="yes">
<source>Unable to add file to Phraseanet</source> <source>Unable to add file to Phraseanet</source>
<target state="translated">Impossible d'ajouter des fichiers à Phraseanet</target> <target state="translated">Impossible d'ajouter des fichiers à Phraseanet</target>
<jms:reference-file line="350">Controller/Prod/UploadController.php</jms:reference-file> <jms:reference-file line="295">Controller/Prod/UploadController.php</jms:reference-file>
<jms:reference-file line="195">Controller/Admin/FeedController.php</jms:reference-file> <jms:reference-file line="195">Controller/Admin/FeedController.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="8b233593eb66b5be4da2f44ff527bd641b3a6fc1" resname="Unable to add usr to list" approved="yes"> <trans-unit id="8b233593eb66b5be4da2f44ff527bd641b3a6fc1" resname="Unable to add usr to list" approved="yes">
@@ -7850,7 +7850,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis
<trans-unit id="4a67615bcd64fcc9443c499676a462d835ad841e" resname="You can not upload files" approved="yes"> <trans-unit id="4a67615bcd64fcc9443c499676a462d835ad841e" resname="You can not upload files" approved="yes">
<source>You can not upload files</source> <source>You can not upload files</source>
<target state="translated">Vous ne pouvez ajouter des fichiers</target> <target state="translated">Vous ne pouvez ajouter des fichiers</target>
<jms:reference-file line="144">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="146">prod/upload/upload.html.twig</jms:reference-file>
<jms:reference-file line="102">prod/upload/upload-flash.html.twig</jms:reference-file> <jms:reference-file line="102">prod/upload/upload-flash.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="4faca55769348dcbc9714b19438181057aa2510e" resname="You do not enough rights to update status" approved="yes"> <trans-unit id="4faca55769348dcbc9714b19438181057aa2510e" resname="You do not enough rights to update status" approved="yes">
@@ -9991,7 +9991,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le
<trans-unit id="e0af1d0d7872c48928d4faef76c45567426e62f9" resname="boutton::retour" approved="yes"> <trans-unit id="e0af1d0d7872c48928d4faef76c45567426e62f9" resname="boutton::retour" approved="yes">
<source>boutton::retour</source> <source>boutton::retour</source>
<target state="translated">Retour</target> <target state="translated">Retour</target>
<jms:reference-file line="154">web/developers/application.html.twig</jms:reference-file> <jms:reference-file line="193">web/developers/application.html.twig</jms:reference-file>
<jms:reference-file line="116">web/developers/application_form.html.twig</jms:reference-file> <jms:reference-file line="116">web/developers/application_form.html.twig</jms:reference-file>
<jms:reference-file line="20">Bridge/Flickr/photo_deleteelement.html.twig</jms:reference-file> <jms:reference-file line="20">Bridge/Flickr/photo_deleteelement.html.twig</jms:reference-file>
<jms:reference-file line="20">Bridge/Flickr/photoset_deleteelement.html.twig</jms:reference-file> <jms:reference-file line="20">Bridge/Flickr/photoset_deleteelement.html.twig</jms:reference-file>
@@ -10348,6 +10348,101 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le
<target state="translated">Descendant</target> <target state="translated">Descendant</target>
<jms:reference-file line="184">SearchEngine/Elastic/ElasticSearchEngine.php</jms:reference-file> <jms:reference-file line="184">SearchEngine/Elastic/ElasticSearchEngine.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="8e82b164f61602c25d57b485ed09c7a59a8e0919" resname="developers:: Events name">
<source>developers:: Events name</source>
<target state="new">developers:: Events name</target>
<jms:reference-file line="134">web/developers/application.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="f717955140c0a034f0e08cfc1416b8443e86cbb5" resname="developers:: Events trigger this webhook">
<source>developers:: Events trigger this webhook</source>
<target state="new">developers:: Events trigger this webhook</target>
<jms:reference-file line="125">web/developers/application.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="3a425cde38ee310e52988e9e9970f1c8dd376c13" resname="developers:: Events type">
<source>developers:: Events type</source>
<target state="new">developers:: Events type</target>
<jms:reference-file line="131">web/developers/application.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="0b3e5bbe37fa58fc7ce4682309017ffcebe95a23" resname="developers:: Select events to trigger this webhook url">
<source>developers:: Select events to trigger this webhook url</source>
<target state="new">developers:: Select events to trigger this webhook url</target>
<jms:reference-file line="126">web/developers/application.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="bffa41c7a64fc38e50153ea0f6f7c2368b008028" resname="developers:: a order delivered">
<source>developers:: a order delivered</source>
<target state="new">developers:: a order delivered</target>
<jms:reference-file line="372">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="9b74fc2656c9e78eec665260f31b446edf548932" resname="developers:: a order denied">
<source>developers:: a order denied</source>
<target state="new">developers:: a order denied</target>
<jms:reference-file line="373">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="c2d24cc69b826a71661c25cbd5291cdaaf95208c" resname="developers:: collection changed for record">
<source>developers:: collection changed for record</source>
<target state="new">developers:: collection changed for record</target>
<jms:reference-file line="353">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="1066a8925f76bd4aadebd7ec114b0ff771ab05ed" resname="developers:: media substituted for record">
<source>developers:: media substituted for record</source>
<target state="new">developers:: media substituted for record</target>
<jms:reference-file line="352">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="ab1c856fecf799bb87498cb26ea74b3db85b4f0b" resname="developers:: new feed entry on phraseanet">
<source>developers:: new feed entry on phraseanet</source>
<target state="new">developers:: new feed entry on phraseanet</target>
<jms:reference-file line="368">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="92259dc5125d969b7ba7fb1af0afd121147d1839" resname="developers:: new order created">
<source>developers:: new order created</source>
<target state="new">developers:: new order created</target>
<jms:reference-file line="371">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="4d09e2ac8748c5ea4bb66d3cd247941f99478125" resname="developers:: record or story created">
<source>developers:: record or story created</source>
<target state="new">developers:: record or story created</target>
<jms:reference-file line="349">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="1f036a4965ecb781192393a08a5aa0510a94524c" resname="developers:: record or story deleted">
<source>developers:: record or story deleted</source>
<target state="new">developers:: record or story deleted</target>
<jms:reference-file line="351">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="98121e43abc2802cfec12de894e041f54d7c9b2c" resname="developers:: record or story edited">
<source>developers:: record or story edited</source>
<target state="new">developers:: record or story edited</target>
<jms:reference-file line="350">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="7479330e0d56c8b37e71013043acecd329ce5f08" resname="developers:: status changed for record">
<source>developers:: status changed for record</source>
<target state="new">developers:: status changed for record</target>
<jms:reference-file line="354">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="db026e337fa7eeba8352e87ca00a28e19c854453" resname="developers:: subdef created for a record">
<source>developers:: subdef created for a record</source>
<target state="new">developers:: subdef created for a record</target>
<jms:reference-file line="357">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="18fc15413169b19baf33adc2572d53a76b86f1f5" resname="developers:: subdef creation failed for a record">
<source>developers:: subdef creation failed for a record</source>
<target state="new">developers:: subdef creation failed for a record</target>
<jms:reference-file line="358">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="e59d8fc44e34b786247fa5924eeb12a4a1202215" resname="developers:: user deleted on phraseanet">
<source>developers:: user deleted on phraseanet</source>
<target state="new">developers:: user deleted on phraseanet</target>
<jms:reference-file line="361">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="13577491a21410883cb7990ce9fdd481fca5c58b" resname="developers:: user registration granted on phraseanet">
<source>developers:: user registration granted on phraseanet</source>
<target state="new">developers:: user registration granted on phraseanet</target>
<jms:reference-file line="364">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="b7786ecdfe826e6f347dbf643191d79a196c6057" resname="developers:: user registration rejected on phraseanet">
<source>developers:: user registration rejected on phraseanet</source>
<target state="new">developers:: user registration rejected on phraseanet</target>
<jms:reference-file line="365">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="55a2ad6e3d1c02d871104d64fb811f08c54bd1b9" resname="do you want to validate" approved="yes"> <trans-unit id="55a2ad6e3d1c02d871104d64fb811f08c54bd1b9" resname="do you want to validate" approved="yes">
<source>do you want to validate</source> <source>do you want to validate</source>
<target state="translated">Souhaitez vous valider l'opération?</target> <target state="translated">Souhaitez vous valider l'opération?</target>
@@ -11723,7 +11818,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le
<jms:reference-file line="564">Controller/Root/AccountController.php</jms:reference-file> <jms:reference-file line="564">Controller/Root/AccountController.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="bf7028b694aea3fc9ede5014a9f8b5d617b83b6f" resname="phraseanet::account: &lt;&lt; your account can be deleted via admin interface &gt;&gt; " approved="yes"> <trans-unit id="bf7028b694aea3fc9ede5014a9f8b5d617b83b6f" resname="phraseanet::account: &lt;&lt; your account can be deleted via admin interface &gt;&gt; " approved="yes">
<source>phraseanet::account: &lt;&lt; your account can be deleted via admin interface &gt;&gt;</source> <source><![CDATA[phraseanet::account: << your account can be deleted via admin interface >>]]></source>
<target state="translated">Vos droits ne vous permettent pas de réaliser cette action, votre compte ne peut être supprimé que via l'interface d'Administration.</target> <target state="translated">Vos droits ne vous permettent pas de réaliser cette action, votre compte ne peut être supprimé que via l'interface d'Administration.</target>
<jms:reference-file line="289">web/account/account.html.twig</jms:reference-file> <jms:reference-file line="289">web/account/account.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
@@ -13875,12 +13970,12 @@ Attention: les valeurs actuellement en place seront écrasées par ces nouvelles
<trans-unit id="ae34347293abc9a106150c8db2b2a3b1b7739c0b" resname="same UUID" approved="yes"> <trans-unit id="ae34347293abc9a106150c8db2b2a3b1b7739c0b" resname="same UUID" approved="yes">
<source>same UUID</source> <source>same UUID</source>
<target state="translated">Un fichier avec le même UUID existe déjà dans la base de données</target> <target state="translated">Un fichier avec le même UUID existe déjà dans la base de données</target>
<jms:reference-file line="87">Border/Checker/UUID.php</jms:reference-file> <jms:reference-file line="76">Border/Checker/UUID.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="9efb800c6df15d107be9c0aeb19e2d218ebfe135" resname="same checksum" approved="yes"> <trans-unit id="9efb800c6df15d107be9c0aeb19e2d218ebfe135" resname="same checksum" approved="yes">
<source>same checksum</source> <source>same checksum</source>
<target state="translated">Un fichier avec la même somme de contrôle existe déjà dans la base de données</target> <target state="translated">Un fichier avec la même somme de contrôle existe déjà dans la base de données</target>
<jms:reference-file line="77">Border/Checker/Sha256.php</jms:reference-file> <jms:reference-file line="69">Border/Checker/Sha256.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="99e3a652745118f0d3c79e13d81168544afe2b77" resname="same filename" approved="yes"> <trans-unit id="99e3a652745118f0d3c79e13d81168544afe2b77" resname="same filename" approved="yes">
<source>same filename</source> <source>same filename</source>
@@ -14360,7 +14455,7 @@ Attention: les valeurs actuellement en place seront écrasées par ces nouvelles
<jms:reference-file line="1338">web/thesaurus/thesaurus.html.twig</jms:reference-file> <jms:reference-file line="1338">web/thesaurus/thesaurus.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="33df70d7fa528a31071e11d1b987b49dc947ce16" resname="thesaurus:: Supprimer cette branche ?&amp;#10;(les termes concernes remonteront en candidats a la prochaine indexation)" approved="yes"> <trans-unit id="33df70d7fa528a31071e11d1b987b49dc947ce16" resname="thesaurus:: Supprimer cette branche ?&amp;#10;(les termes concernes remonteront en candidats a la prochaine indexation)" approved="yes">
<source>thesaurus:: Supprimer cette branche ?&amp;#10;(les termes concernes remonteront en candidats a la prochaine indexation)</source> <source><![CDATA[thesaurus:: Supprimer cette branche ?&#10;(les termes concernes remonteront en candidats a la prochaine indexation)]]></source>
<target state="translated"><![CDATA[Supprimer cette branche ? &#10; (les termes concernés remonteront en candidats à la prochaine indexation)]]></target> <target state="translated"><![CDATA[Supprimer cette branche ? &#10; (les termes concernés remonteront en candidats à la prochaine indexation)]]></target>
<jms:reference-file line="542">web/thesaurus/thesaurus.html.twig</jms:reference-file> <jms:reference-file line="542">web/thesaurus/thesaurus.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
@@ -14938,9 +15033,9 @@ Attention: les valeurs actuellement en place seront écrasées par ces nouvelles
<trans-unit id="39e4890a2d75f483b1cb2131b2d19f8cf96a502b" resname="upload:: Status :" approved="yes"> <trans-unit id="39e4890a2d75f483b1cb2131b2d19f8cf96a502b" resname="upload:: Status :" approved="yes">
<source>upload:: Status :</source> <source>upload:: Status :</source>
<target state="translated">Appliquer les status</target> <target state="translated">Appliquer les status</target>
<jms:reference-file line="80">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="81">prod/upload/upload.html.twig</jms:reference-file>
<jms:reference-file line="75">prod/upload/upload-flash.html.twig</jms:reference-file> <jms:reference-file line="75">prod/upload/upload-flash.html.twig</jms:reference-file>
<jms:reference-file line="462">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="463">prod/upload/lazaret.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="4fea0574cc81b5fd40ab0537b0905cc4c3806039" resname="users rights have been reseted" approved="yes"> <trans-unit id="4fea0574cc81b5fd40ab0537b0905cc4c3806039" resname="users rights have been reseted" approved="yes">
<source>users rights have been reseted</source> <source>users rights have been reseted</source>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2"> <xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
<file date="2021-09-24T11:11:14Z" source-language="en" target-language="nl" datatype="plaintext" original="not.available"> <file date="2021-11-16T13:31:31Z" source-language="en" target-language="nl" datatype="plaintext" original="not.available">
<header> <header>
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/> <tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note> <note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
@@ -249,7 +249,7 @@
<trans-unit id="d7c38bf41291d1f920c6e0b56a1c4a1cfc0b6743" resname="%quantity% selected files"> <trans-unit id="d7c38bf41291d1f920c6e0b56a1c4a1cfc0b6743" resname="%quantity% selected files">
<source>%quantity% selected files</source> <source>%quantity% selected files</source>
<target state="new">%quantity% selected files</target> <target state="new">%quantity% selected files</target>
<jms:reference-file line="111">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="113">prod/upload/upload.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="eae910e840fe7df8ef8211d587e72af74ab69463" resname="%quantity_records% records have been sent for validation to %quantity_users% users"> <trans-unit id="eae910e840fe7df8ef8211d587e72af74ab69463" resname="%quantity_records% records have been sent for validation to %quantity_users% users">
<source>%quantity_records% records have been sent for validation to %quantity_users% users</source> <source>%quantity_records% records have been sent for validation to %quantity_users% users</source>
@@ -264,7 +264,7 @@
<trans-unit id="4d90df6ce9691d4bc172b9129250a5af4bef4b7f" resname="%record_count% records match the unique identifier :" approved="yes"> <trans-unit id="4d90df6ce9691d4bc172b9129250a5af4bef4b7f" resname="%record_count% records match the unique identifier :" approved="yes">
<source>%record_count% records match the unique identifier :</source> <source>%record_count% records match the unique identifier :</source>
<target state="translated">%record_count% records zijn gelijk aan de unieke id :</target> <target state="translated">%record_count% records zijn gelijk aan de unieke id :</target>
<jms:reference-file line="590">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="592">prod/upload/lazaret.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="1d847e60f4e92e438c94f0eb3176ce96113c63e5" resname="%s field has been created with success." approved="yes"> <trans-unit id="1d847e60f4e92e438c94f0eb3176ce96113c63e5" resname="%s field has been created with success." approved="yes">
<source>%s field has been created with success.</source> <source>%s field has been created with success.</source>
@@ -466,12 +466,12 @@
<trans-unit id="fa591b39e82a5a47573a9ed70172620c2660596c" resname="A file with the same UUID already exists in database" approved="yes"> <trans-unit id="fa591b39e82a5a47573a9ed70172620c2660596c" resname="A file with the same UUID already exists in database" approved="yes">
<source>A file with the same UUID already exists in database</source> <source>A file with the same UUID already exists in database</source>
<target state="translated">Een bestand met dezelfde UUID bestaat al in de database</target> <target state="translated">Een bestand met dezelfde UUID bestaat al in de database</target>
<jms:reference-file line="95">Border/Checker/UUID.php</jms:reference-file> <jms:reference-file line="84">Border/Checker/UUID.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="3111a4c2d6a675604d8bed8fe7ac2d7ec859bca2" resname="A file with the same checksum already exists in database" approved="yes"> <trans-unit id="3111a4c2d6a675604d8bed8fe7ac2d7ec859bca2" resname="A file with the same checksum already exists in database" approved="yes">
<source>A file with the same checksum already exists in database</source> <source>A file with the same checksum already exists in database</source>
<target state="translated">Een bestand met dezelfde checksum bestaat al in de database</target> <target state="translated">Een bestand met dezelfde checksum bestaat al in de database</target>
<jms:reference-file line="85">Border/Checker/Sha256.php</jms:reference-file> <jms:reference-file line="77">Border/Checker/Sha256.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="aee62b552774745bfc7778349545413b39c33a9a" resname="A file with the same filename already exists in database" approved="yes"> <trans-unit id="aee62b552774745bfc7778349545413b39c33a9a" resname="A file with the same filename already exists in database" approved="yes">
<source>A file with the same filename already exists in database</source> <source>A file with the same filename already exists in database</source>
@@ -481,7 +481,7 @@
<trans-unit id="e6558cad562de9eeae699e5f7fc7c8ae076d38c8" resname="A record matches the unique identifier :" approved="yes"> <trans-unit id="e6558cad562de9eeae699e5f7fc7c8ae076d38c8" resname="A record matches the unique identifier :" approved="yes">
<source>A record matches the unique identifier :</source> <source>A record matches the unique identifier :</source>
<target state="translated">Een record is gelijk aan de unieke id :</target> <target state="translated">Een record is gelijk aan de unieke id :</target>
<jms:reference-file line="588">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="590">prod/upload/lazaret.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="b73e8cb42d796f56db9989972e41942d9135c2cc" resname="A required field is missing or has an empty value" approved="yes"> <trans-unit id="b73e8cb42d796f56db9989972e41942d9135c2cc" resname="A required field is missing or has an empty value" approved="yes">
<source>A required field is missing or has an empty value</source> <source>A required field is missing or has an empty value</source>
@@ -670,8 +670,8 @@
<target state="translated">Toevoegen</target> <target state="translated">Toevoegen</target>
<jms:reference-file line="29">prod/User/Add.html.twig</jms:reference-file> <jms:reference-file line="29">prod/User/Add.html.twig</jms:reference-file>
<jms:reference-file line="161">prod/actions/Push.html.twig</jms:reference-file> <jms:reference-file line="161">prod/actions/Push.html.twig</jms:reference-file>
<jms:reference-file line="514">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="516">prod/upload/lazaret.html.twig</jms:reference-file>
<jms:reference-file line="515">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="517">prod/upload/lazaret.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="983c5aed52d2f74bf36e97dc34dbce97fdd43f5b" resname="Add a&#10; new field"> <trans-unit id="983c5aed52d2f74bf36e97dc34dbce97fdd43f5b" resname="Add a&#10; new field">
<source>Add a <source>Add a
@@ -972,7 +972,7 @@
<source>An error occured</source> <source>An error occured</source>
<target state="translated">Er is een fout opgetreden</target> <target state="translated">Er is een fout opgetreden</target>
<jms:reference-file line="120">Model/Manipulator/LazaretManipulator.php</jms:reference-file> <jms:reference-file line="120">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="285">Model/Manipulator/LazaretManipulator.php</jms:reference-file> <jms:reference-file line="245">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="164">Controller/Prod/MoveCollectionController.php</jms:reference-file> <jms:reference-file line="164">Controller/Prod/MoveCollectionController.php</jms:reference-file>
<jms:reference-file line="257">Controller/Prod/LazaretController.php</jms:reference-file> <jms:reference-file line="257">Controller/Prod/LazaretController.php</jms:reference-file>
<jms:reference-file line="262">Controller/Prod/BasketController.php</jms:reference-file> <jms:reference-file line="262">Controller/Prod/BasketController.php</jms:reference-file>
@@ -1597,7 +1597,7 @@
<trans-unit id="ae1f9ef7dc1cee4760e7f208f36c225e3ab1aa1f" resname="Cancel all" approved="yes"> <trans-unit id="ae1f9ef7dc1cee4760e7f208f36c225e3ab1aa1f" resname="Cancel all" approved="yes">
<source>Cancel all</source> <source>Cancel all</source>
<target state="translated">Annuleer alles</target> <target state="translated">Annuleer alles</target>
<jms:reference-file line="131">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="133">prod/upload/upload.html.twig</jms:reference-file>
<jms:reference-file line="121">prod/upload/upload-flash.html.twig</jms:reference-file> <jms:reference-file line="121">prod/upload/upload-flash.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="82695f04e6097106923a58949a9e1b0fadd1a989" resname="Cannot upload Zero Byte files" approved="yes"> <trans-unit id="82695f04e6097106923a58949a9e1b0fadd1a989" resname="Cannot upload Zero Byte files" approved="yes">
@@ -1795,7 +1795,7 @@
<trans-unit id="7135ee5eaed0e404c4fcf48d6eb7d2808f8e55f2" resname="Clear list" approved="yes"> <trans-unit id="7135ee5eaed0e404c4fcf48d6eb7d2808f8e55f2" resname="Clear list" approved="yes">
<source>Clear list</source> <source>Clear list</source>
<target state="translated">Lijst wissen</target> <target state="translated">Lijst wissen</target>
<jms:reference-file line="112">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="114">prod/upload/upload.html.twig</jms:reference-file>
<jms:reference-file line="109">prod/upload/upload-flash.html.twig</jms:reference-file> <jms:reference-file line="109">prod/upload/upload-flash.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="0fcdb8c5215c8bd73769c3492e47d86ec3f6837e" resname="Client application" approved="yes"> <trans-unit id="0fcdb8c5215c8bd73769c3492e47d86ec3f6837e" resname="Client application" approved="yes">
@@ -2388,8 +2388,8 @@
<trans-unit id="f6fdbe48dc54dd86f63097a03bd24094dedd713a" resname="Delete" approved="yes"> <trans-unit id="f6fdbe48dc54dd86f63097a03bd24094dedd713a" resname="Delete" approved="yes">
<source>Delete</source> <source>Delete</source>
<target state="translated">Verwijder</target> <target state="translated">Verwijder</target>
<jms:reference-file line="517">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="519">prod/upload/lazaret.html.twig</jms:reference-file>
<jms:reference-file line="518">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="520">prod/upload/lazaret.html.twig</jms:reference-file>
<jms:reference-file line="25">admin/task-manager/templates.html.twig</jms:reference-file> <jms:reference-file line="25">admin/task-manager/templates.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="1b5737dea168495fa0495e00ce58b4832772a492" resname="Delete account successfull"> <trans-unit id="1b5737dea168495fa0495e00ce58b4832772a492" resname="Delete account successfull">
@@ -2461,7 +2461,7 @@
<trans-unit id="dcce9368ad626fe4addfa719b7a16807d464aa9b" resname="Derniers envois"> <trans-unit id="dcce9368ad626fe4addfa719b7a16807d464aa9b" resname="Derniers envois">
<source>Derniers envois</source> <source>Derniers envois</source>
<target state="new">Derniers envois</target> <target state="new">Derniers envois</target>
<jms:reference-file line="126">web/developers/application.html.twig</jms:reference-file> <jms:reference-file line="165">web/developers/application.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="ec52b98c45f63139a4bee23fa7d177838f2b3628" resname="Des difficultes ont ete rencontres a la connection au serveur distant" approved="yes"> <trans-unit id="ec52b98c45f63139a4bee23fa7d177838f2b3628" resname="Des difficultes ont ete rencontres a la connection au serveur distant" approved="yes">
<source>Des difficultes ont ete rencontres a la connection au serveur distant</source> <source>Des difficultes ont ete rencontres a la connection au serveur distant</source>
@@ -3295,8 +3295,8 @@
<source>File is not present in quarantine anymore, please refresh</source> <source>File is not present in quarantine anymore, please refresh</source>
<target state="translated">Bestand is niet meer in de quarantiane aanwezig, gelieve te vernieuwen</target> <target state="translated">Bestand is niet meer in de quarantiane aanwezig, gelieve te vernieuwen</target>
<jms:reference-file line="56">Model/Manipulator/LazaretManipulator.php</jms:reference-file> <jms:reference-file line="56">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="140">Model/Manipulator/LazaretManipulator.php</jms:reference-file> <jms:reference-file line="136">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="170">Model/Manipulator/LazaretManipulator.php</jms:reference-file> <jms:reference-file line="157">Model/Manipulator/LazaretManipulator.php</jms:reference-file>
<jms:reference-file line="78">Controller/Prod/LazaretController.php</jms:reference-file> <jms:reference-file line="78">Controller/Prod/LazaretController.php</jms:reference-file>
<jms:reference-file line="207">Controller/Prod/LazaretController.php</jms:reference-file> <jms:reference-file line="207">Controller/Prod/LazaretController.php</jms:reference-file>
</trans-unit> </trans-unit>
@@ -5934,7 +5934,7 @@
<trans-unit id="1d72d3b024f99631791dcfbc8288caa16d3ff388" resname="Résultats des derniers envois effectués pour cette application"> <trans-unit id="1d72d3b024f99631791dcfbc8288caa16d3ff388" resname="Résultats des derniers envois effectués pour cette application">
<source>Résultats des derniers envois effectués pour cette application</source> <source>Résultats des derniers envois effectués pour cette application</source>
<target state="new">Résultats des derniers envois effectués pour cette application</target> <target state="new">Résultats des derniers envois effectués pour cette application</target>
<jms:reference-file line="127">web/developers/application.html.twig</jms:reference-file> <jms:reference-file line="166">web/developers/application.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="741cd64a01685389e2fabdb7091a3b70f6be63ee" resname="SMTP encryption" approved="yes"> <trans-unit id="741cd64a01685389e2fabdb7091a3b70f6be63ee" resname="SMTP encryption" approved="yes">
<source>SMTP encryption</source> <source>SMTP encryption</source>
@@ -6125,7 +6125,7 @@
<jms:reference-file line="46">web/login/forgot-password.html.twig</jms:reference-file> <jms:reference-file line="46">web/login/forgot-password.html.twig</jms:reference-file>
<jms:reference-file line="330">prod/actions/Push.html.twig</jms:reference-file> <jms:reference-file line="330">prod/actions/Push.html.twig</jms:reference-file>
<jms:reference-file line="332">prod/actions/Push.html.twig</jms:reference-file> <jms:reference-file line="332">prod/actions/Push.html.twig</jms:reference-file>
<jms:reference-file line="113">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="115">prod/upload/upload.html.twig</jms:reference-file>
<jms:reference-file line="110">prod/upload/upload-flash.html.twig</jms:reference-file> <jms:reference-file line="110">prod/upload/upload-flash.html.twig</jms:reference-file>
<jms:reference-file line="185">prod/orders/order_item.html.twig</jms:reference-file> <jms:reference-file line="185">prod/orders/order_item.html.twig</jms:reference-file>
<jms:reference-file line="220">prod/orders/order_item.html.twig</jms:reference-file> <jms:reference-file line="220">prod/orders/order_item.html.twig</jms:reference-file>
@@ -6484,8 +6484,8 @@
<trans-unit id="8017bd7de9961cf42f59abc587d0495a9d25c2a9" resname="Substitute" approved="yes"> <trans-unit id="8017bd7de9961cf42f59abc587d0495a9d25c2a9" resname="Substitute" approved="yes">
<source>Substitute</source> <source>Substitute</source>
<target state="translated">Vervangen</target> <target state="translated">Vervangen</target>
<jms:reference-file line="521">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="523">prod/upload/lazaret.html.twig</jms:reference-file>
<jms:reference-file line="522">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="524">prod/upload/lazaret.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="3d48a1d66362cef46e567ddf521b0dc3233f57a2" resname="Substitution is not possible for this kind of record" approved="yes"> <trans-unit id="3d48a1d66362cef46e567ddf521b0dc3233f57a2" resname="Substitution is not possible for this kind of record" approved="yes">
<source>Substitution is not possible for this kind of record</source> <source>Substitution is not possible for this kind of record</source>
@@ -6757,7 +6757,7 @@
<trans-unit id="1d5dadcdeeecd294a88baf096ba0440053ecf738" resname="The file was moved to the quarantine" approved="yes"> <trans-unit id="1d5dadcdeeecd294a88baf096ba0440053ecf738" resname="The file was moved to the quarantine" approved="yes">
<source>The file was moved to the quarantine</source> <source>The file was moved to the quarantine</source>
<target state="translated">De file werd naar de quarantaine verplaatst</target> <target state="translated">De file werd naar de quarantaine verplaatst</target>
<jms:reference-file line="338">Controller/Prod/UploadController.php</jms:reference-file> <jms:reference-file line="283">Controller/Prod/UploadController.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="1818502d42e14ffcb9c664fd1365fafa969971ff" resname="The following errors have been detected" approved="yes"> <trans-unit id="1818502d42e14ffcb9c664fd1365fafa969971ff" resname="The following errors have been detected" approved="yes">
<source>The following errors have been detected</source> <source>The following errors have been detected</source>
@@ -6773,7 +6773,7 @@
<trans-unit id="bae1c72ecbe1459751e4a0fee382a305bbf933b7" resname="The record was successfully created" approved="yes"> <trans-unit id="bae1c72ecbe1459751e4a0fee382a305bbf933b7" resname="The record was successfully created" approved="yes">
<source>The record was successfully created</source> <source>The record was successfully created</source>
<target state="translated">De record werd met succes gemaakt</target> <target state="translated">De record werd met succes gemaakt</target>
<jms:reference-file line="292">Controller/Prod/UploadController.php</jms:reference-file> <jms:reference-file line="253">Controller/Prod/UploadController.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="209817489c23cec8b7a15f6b8ca3e45daf08656d" resname="The records have been properly ordered" approved="yes"> <trans-unit id="209817489c23cec8b7a15f6b8ca3e45daf08656d" resname="The records have been properly ordered" approved="yes">
<source>The records have been properly ordered</source> <source>The records have been properly ordered</source>
@@ -7008,7 +7008,7 @@
<trans-unit id="9764c016bb5a296069109116fa95c49815dcba82" resname="Transmited files" approved="yes"> <trans-unit id="9764c016bb5a296069109116fa95c49815dcba82" resname="Transmited files" approved="yes">
<source>Transmited files</source> <source>Transmited files</source>
<target state="translated">Verzonden bestanden</target> <target state="translated">Verzonden bestanden</target>
<jms:reference-file line="122">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="124">prod/upload/upload.html.twig</jms:reference-file>
<jms:reference-file line="118">prod/upload/upload-flash.html.twig</jms:reference-file> <jms:reference-file line="118">prod/upload/upload-flash.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="6e764776541fbe428a3566f42ee7956312af98b7" resname="Trier par" approved="yes"> <trans-unit id="6e764776541fbe428a3566f42ee7956312af98b7" resname="Trier par" approved="yes">
@@ -7070,7 +7070,7 @@
<trans-unit id="d32751443628a0d2c5b31b441c1e2b3001f35dfd" resname="Unable to add file to Phraseanet" approved="yes"> <trans-unit id="d32751443628a0d2c5b31b441c1e2b3001f35dfd" resname="Unable to add file to Phraseanet" approved="yes">
<source>Unable to add file to Phraseanet</source> <source>Unable to add file to Phraseanet</source>
<target state="translated">Onmogelijk om een bestand aan Phraseanet toe te voegen</target> <target state="translated">Onmogelijk om een bestand aan Phraseanet toe te voegen</target>
<jms:reference-file line="350">Controller/Prod/UploadController.php</jms:reference-file> <jms:reference-file line="295">Controller/Prod/UploadController.php</jms:reference-file>
<jms:reference-file line="195">Controller/Admin/FeedController.php</jms:reference-file> <jms:reference-file line="195">Controller/Admin/FeedController.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="8b233593eb66b5be4da2f44ff527bd641b3a6fc1" resname="Unable to add usr to list" approved="yes"> <trans-unit id="8b233593eb66b5be4da2f44ff527bd641b3a6fc1" resname="Unable to add usr to list" approved="yes">
@@ -7860,7 +7860,7 @@
<trans-unit id="4a67615bcd64fcc9443c499676a462d835ad841e" resname="You can not upload files" approved="yes"> <trans-unit id="4a67615bcd64fcc9443c499676a462d835ad841e" resname="You can not upload files" approved="yes">
<source>You can not upload files</source> <source>You can not upload files</source>
<target state="translated">U kunt geen files uploaden</target> <target state="translated">U kunt geen files uploaden</target>
<jms:reference-file line="144">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="146">prod/upload/upload.html.twig</jms:reference-file>
<jms:reference-file line="102">prod/upload/upload-flash.html.twig</jms:reference-file> <jms:reference-file line="102">prod/upload/upload-flash.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="4faca55769348dcbc9714b19438181057aa2510e" resname="You do not enough rights to update status" approved="yes"> <trans-unit id="4faca55769348dcbc9714b19438181057aa2510e" resname="You do not enough rights to update status" approved="yes">
@@ -10000,7 +10000,7 @@
<trans-unit id="e0af1d0d7872c48928d4faef76c45567426e62f9" resname="boutton::retour" approved="yes"> <trans-unit id="e0af1d0d7872c48928d4faef76c45567426e62f9" resname="boutton::retour" approved="yes">
<source>boutton::retour</source> <source>boutton::retour</source>
<target state="translated">terug</target> <target state="translated">terug</target>
<jms:reference-file line="154">web/developers/application.html.twig</jms:reference-file> <jms:reference-file line="193">web/developers/application.html.twig</jms:reference-file>
<jms:reference-file line="116">web/developers/application_form.html.twig</jms:reference-file> <jms:reference-file line="116">web/developers/application_form.html.twig</jms:reference-file>
<jms:reference-file line="20">Bridge/Flickr/photo_deleteelement.html.twig</jms:reference-file> <jms:reference-file line="20">Bridge/Flickr/photo_deleteelement.html.twig</jms:reference-file>
<jms:reference-file line="20">Bridge/Flickr/photoset_deleteelement.html.twig</jms:reference-file> <jms:reference-file line="20">Bridge/Flickr/photoset_deleteelement.html.twig</jms:reference-file>
@@ -10357,6 +10357,101 @@
<target state="translated">oplopend</target> <target state="translated">oplopend</target>
<jms:reference-file line="184">SearchEngine/Elastic/ElasticSearchEngine.php</jms:reference-file> <jms:reference-file line="184">SearchEngine/Elastic/ElasticSearchEngine.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="8e82b164f61602c25d57b485ed09c7a59a8e0919" resname="developers:: Events name">
<source>developers:: Events name</source>
<target state="new">developers:: Events name</target>
<jms:reference-file line="134">web/developers/application.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="f717955140c0a034f0e08cfc1416b8443e86cbb5" resname="developers:: Events trigger this webhook">
<source>developers:: Events trigger this webhook</source>
<target state="new">developers:: Events trigger this webhook</target>
<jms:reference-file line="125">web/developers/application.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="3a425cde38ee310e52988e9e9970f1c8dd376c13" resname="developers:: Events type">
<source>developers:: Events type</source>
<target state="new">developers:: Events type</target>
<jms:reference-file line="131">web/developers/application.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="0b3e5bbe37fa58fc7ce4682309017ffcebe95a23" resname="developers:: Select events to trigger this webhook url">
<source>developers:: Select events to trigger this webhook url</source>
<target state="new">developers:: Select events to trigger this webhook url</target>
<jms:reference-file line="126">web/developers/application.html.twig</jms:reference-file>
</trans-unit>
<trans-unit id="bffa41c7a64fc38e50153ea0f6f7c2368b008028" resname="developers:: a order delivered">
<source>developers:: a order delivered</source>
<target state="new">developers:: a order delivered</target>
<jms:reference-file line="372">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="9b74fc2656c9e78eec665260f31b446edf548932" resname="developers:: a order denied">
<source>developers:: a order denied</source>
<target state="new">developers:: a order denied</target>
<jms:reference-file line="373">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="c2d24cc69b826a71661c25cbd5291cdaaf95208c" resname="developers:: collection changed for record">
<source>developers:: collection changed for record</source>
<target state="new">developers:: collection changed for record</target>
<jms:reference-file line="353">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="1066a8925f76bd4aadebd7ec114b0ff771ab05ed" resname="developers:: media substituted for record">
<source>developers:: media substituted for record</source>
<target state="new">developers:: media substituted for record</target>
<jms:reference-file line="352">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="ab1c856fecf799bb87498cb26ea74b3db85b4f0b" resname="developers:: new feed entry on phraseanet">
<source>developers:: new feed entry on phraseanet</source>
<target state="new">developers:: new feed entry on phraseanet</target>
<jms:reference-file line="368">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="92259dc5125d969b7ba7fb1af0afd121147d1839" resname="developers:: new order created">
<source>developers:: new order created</source>
<target state="new">developers:: new order created</target>
<jms:reference-file line="371">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="4d09e2ac8748c5ea4bb66d3cd247941f99478125" resname="developers:: record or story created">
<source>developers:: record or story created</source>
<target state="new">developers:: record or story created</target>
<jms:reference-file line="349">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="1f036a4965ecb781192393a08a5aa0510a94524c" resname="developers:: record or story deleted">
<source>developers:: record or story deleted</source>
<target state="new">developers:: record or story deleted</target>
<jms:reference-file line="351">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="98121e43abc2802cfec12de894e041f54d7c9b2c" resname="developers:: record or story edited">
<source>developers:: record or story edited</source>
<target state="new">developers:: record or story edited</target>
<jms:reference-file line="350">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="7479330e0d56c8b37e71013043acecd329ce5f08" resname="developers:: status changed for record">
<source>developers:: status changed for record</source>
<target state="new">developers:: status changed for record</target>
<jms:reference-file line="354">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="db026e337fa7eeba8352e87ca00a28e19c854453" resname="developers:: subdef created for a record">
<source>developers:: subdef created for a record</source>
<target state="new">developers:: subdef created for a record</target>
<jms:reference-file line="357">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="18fc15413169b19baf33adc2572d53a76b86f1f5" resname="developers:: subdef creation failed for a record">
<source>developers:: subdef creation failed for a record</source>
<target state="new">developers:: subdef creation failed for a record</target>
<jms:reference-file line="358">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="e59d8fc44e34b786247fa5924eeb12a4a1202215" resname="developers:: user deleted on phraseanet">
<source>developers:: user deleted on phraseanet</source>
<target state="new">developers:: user deleted on phraseanet</target>
<jms:reference-file line="361">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="13577491a21410883cb7990ce9fdd481fca5c58b" resname="developers:: user registration granted on phraseanet">
<source>developers:: user registration granted on phraseanet</source>
<target state="new">developers:: user registration granted on phraseanet</target>
<jms:reference-file line="364">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="b7786ecdfe826e6f347dbf643191d79a196c6057" resname="developers:: user registration rejected on phraseanet">
<source>developers:: user registration rejected on phraseanet</source>
<target state="new">developers:: user registration rejected on phraseanet</target>
<jms:reference-file line="365">Controller/Root/DeveloperController.php</jms:reference-file>
</trans-unit>
<trans-unit id="55a2ad6e3d1c02d871104d64fb811f08c54bd1b9" resname="do you want to validate" approved="yes"> <trans-unit id="55a2ad6e3d1c02d871104d64fb811f08c54bd1b9" resname="do you want to validate" approved="yes">
<source>do you want to validate</source> <source>do you want to validate</source>
<target state="translated">Wilt u goedkeuren</target> <target state="translated">Wilt u goedkeuren</target>
@@ -13875,12 +13970,12 @@
<trans-unit id="ae34347293abc9a106150c8db2b2a3b1b7739c0b" resname="same UUID"> <trans-unit id="ae34347293abc9a106150c8db2b2a3b1b7739c0b" resname="same UUID">
<source>same UUID</source> <source>same UUID</source>
<target state="new">same UUID</target> <target state="new">same UUID</target>
<jms:reference-file line="87">Border/Checker/UUID.php</jms:reference-file> <jms:reference-file line="76">Border/Checker/UUID.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="9efb800c6df15d107be9c0aeb19e2d218ebfe135" resname="same checksum"> <trans-unit id="9efb800c6df15d107be9c0aeb19e2d218ebfe135" resname="same checksum">
<source>same checksum</source> <source>same checksum</source>
<target state="new">same checksum</target> <target state="new">same checksum</target>
<jms:reference-file line="77">Border/Checker/Sha256.php</jms:reference-file> <jms:reference-file line="69">Border/Checker/Sha256.php</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="99e3a652745118f0d3c79e13d81168544afe2b77" resname="same filename"> <trans-unit id="99e3a652745118f0d3c79e13d81168544afe2b77" resname="same filename">
<source>same filename</source> <source>same filename</source>
@@ -14938,9 +15033,9 @@
<trans-unit id="39e4890a2d75f483b1cb2131b2d19f8cf96a502b" resname="upload:: Status :" approved="yes"> <trans-unit id="39e4890a2d75f483b1cb2131b2d19f8cf96a502b" resname="upload:: Status :" approved="yes">
<source>upload:: Status :</source> <source>upload:: Status :</source>
<target state="translated">Status</target> <target state="translated">Status</target>
<jms:reference-file line="80">prod/upload/upload.html.twig</jms:reference-file> <jms:reference-file line="81">prod/upload/upload.html.twig</jms:reference-file>
<jms:reference-file line="75">prod/upload/upload-flash.html.twig</jms:reference-file> <jms:reference-file line="75">prod/upload/upload-flash.html.twig</jms:reference-file>
<jms:reference-file line="462">prod/upload/lazaret.html.twig</jms:reference-file> <jms:reference-file line="463">prod/upload/lazaret.html.twig</jms:reference-file>
</trans-unit> </trans-unit>
<trans-unit id="4fea0574cc81b5fd40ab0537b0905cc4c3806039" resname="users rights have been reseted" approved="yes"> <trans-unit id="4fea0574cc81b5fd40ab0537b0905cc4c3806039" resname="users rights have been reseted" approved="yes">
<source>users rights have been reseted</source> <source>users rights have been reseted</source>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2"> <xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
<file date="2021-09-24T11:10:19Z" source-language="en" target-language="de" datatype="plaintext" original="not.available"> <file date="2021-11-16T13:30:36Z" source-language="en" target-language="de" datatype="plaintext" original="not.available">
<header> <header>
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/> <tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note> <note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2"> <xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
<file date="2021-09-24T11:10:36Z" source-language="en" target-language="en" datatype="plaintext" original="not.available"> <file date="2021-11-16T13:30:52Z" source-language="en" target-language="en" datatype="plaintext" original="not.available">
<header> <header>
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/> <tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note> <note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2"> <xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
<file date="2021-09-24T11:10:54Z" source-language="en" target-language="fr" datatype="plaintext" original="not.available"> <file date="2021-11-16T13:31:10Z" source-language="en" target-language="fr" datatype="plaintext" original="not.available">
<header> <header>
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/> <tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note> <note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2"> <xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
<file date="2021-09-24T11:11:14Z" source-language="en" target-language="nl" datatype="plaintext" original="not.available"> <file date="2021-11-16T13:31:31Z" source-language="en" target-language="nl" datatype="plaintext" original="not.available">
<header> <header>
<tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/> <tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
<note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note> <note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>

View File

@@ -64,10 +64,10 @@ class ApiApplication extends \Alchemy\Phrasea\Model\Entities\ApiApplication impl
public function __sleep() public function __sleep()
{ {
if ($this->__isInitialized__) { if ($this->__isInitialized__) {
return ['__isInitialized__', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'id', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'creator', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'type', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'name', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'description', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'website', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'created', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'updated', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'clientId', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'clientSecret', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'nonce', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'redirectUri', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'activated', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'grantPassword', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'accounts', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'webhookUrl']; return ['__isInitialized__', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'id', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'creator', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'type', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'name', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'description', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'website', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'created', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'updated', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'clientId', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'clientSecret', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'nonce', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'redirectUri', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'activated', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'grantPassword', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'accounts', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'webhookUrl', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'listenedEvents', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'hmacKey', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'webhookUnactivate'];
} }
return ['__isInitialized__', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'id', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'creator', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'type', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'name', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'description', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'website', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'created', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'updated', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'clientId', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'clientSecret', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'nonce', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'redirectUri', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'activated', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'grantPassword', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'accounts', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'webhookUrl']; return ['__isInitialized__', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'id', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'creator', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'type', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'name', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'description', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'website', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'created', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'updated', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'clientId', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'clientSecret', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'nonce', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'redirectUri', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'activated', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'grantPassword', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'accounts', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'webhookUrl', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'listenedEvents', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'hmacKey', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\ApiApplication' . "\0" . 'webhookUnactivate'];
} }
/** /**
@@ -507,4 +507,92 @@ class ApiApplication extends \Alchemy\Phrasea\Model\Entities\ApiApplication impl
return parent::addAccount($account); return parent::addAccount($account);
} }
/**
* {@inheritDoc}
*/
public function setListenedEvents(array $listenedEvents)
{
$this->__initializer__ && $this->__initializer__->__invoke($this, 'setListenedEvents', [$listenedEvents]);
return parent::setListenedEvents($listenedEvents);
}
/**
* {@inheritDoc}
*/
public function addListenedEvent($eventName)
{
$this->__initializer__ && $this->__initializer__->__invoke($this, 'addListenedEvent', [$eventName]);
return parent::addListenedEvent($eventName);
}
/**
* {@inheritDoc}
*/
public function removeListenedEvent($eventName)
{
$this->__initializer__ && $this->__initializer__->__invoke($this, 'removeListenedEvent', [$eventName]);
return parent::removeListenedEvent($eventName);
}
/**
* {@inheritDoc}
*/
public function getListenedEvents()
{
$this->__initializer__ && $this->__initializer__->__invoke($this, 'getListenedEvents', []);
return parent::getListenedEvents();
}
/**
* {@inheritDoc}
*/
public function getHmacKey()
{
$this->__initializer__ && $this->__initializer__->__invoke($this, 'getHmacKey', []);
return parent::getHmacKey();
}
/**
* {@inheritDoc}
*/
public function setHmacKey($hmacKey)
{
$this->__initializer__ && $this->__initializer__->__invoke($this, 'setHmacKey', [$hmacKey]);
return parent::setHmacKey($hmacKey);
}
/**
* {@inheritDoc}
*/
public function isWebhookUnactivate()
{
$this->__initializer__ && $this->__initializer__->__invoke($this, 'isWebhookUnactivate', []);
return parent::isWebhookUnactivate();
}
/**
* {@inheritDoc}
*/
public function setWebhookUnactivate($webhookUnactivate)
{
$this->__initializer__ && $this->__initializer__->__invoke($this, 'setWebhookUnactivate', [$webhookUnactivate]);
return parent::setWebhookUnactivate($webhookUnactivate);
}
} }

View File

@@ -64,10 +64,10 @@ class FeedEntry extends \Alchemy\Phrasea\Model\Entities\FeedEntry implements \Do
public function __sleep() public function __sleep()
{ {
if ($this->__isInitialized__) { if ($this->__isInitialized__) {
return ['__isInitialized__', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'id', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'title', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'subtitle', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'authorName', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'authorEmail', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'createdOn', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'updatedOn', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'items', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'publisher', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'feed']; return ['__isInitialized__', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'id', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'title', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'subtitle', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'authorName', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'authorEmail', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'createdOn', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'updatedOn', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'items', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'publisher', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'feed', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'notifyEmailOn'];
} }
return ['__isInitialized__', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'id', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'title', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'subtitle', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'authorName', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'authorEmail', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'createdOn', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'updatedOn', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'items', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'publisher', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'feed']; return ['__isInitialized__', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'id', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'title', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'subtitle', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'authorName', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'authorEmail', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'createdOn', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'updatedOn', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'items', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'publisher', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'feed', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\FeedEntry' . "\0" . 'notifyEmailOn'];
} }
/** /**
@@ -397,6 +397,28 @@ class FeedEntry extends \Alchemy\Phrasea\Model\Entities\FeedEntry implements \Do
return parent::getFeed(); return parent::getFeed();
} }
/**
* {@inheritDoc}
*/
public function getNotifyEmailOn()
{
$this->__initializer__ && $this->__initializer__->__invoke($this, 'getNotifyEmailOn', []);
return parent::getNotifyEmailOn();
}
/**
* {@inheritDoc}
*/
public function setNotifyEmailOn($notifyEmailOn)
{
$this->__initializer__ && $this->__initializer__->__invoke($this, 'setNotifyEmailOn', [$notifyEmailOn]);
return parent::setNotifyEmailOn($notifyEmailOn);
}
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */

View File

@@ -64,10 +64,10 @@ class User extends \Alchemy\Phrasea\Model\Entities\User implements \Doctrine\ORM
public function __sleep() public function __sleep()
{ {
if ($this->__isInitialized__) { if ($this->__isInitialized__) {
return ['__isInitialized__', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'id', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'login', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'email', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'password', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'nonce', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'saltedPassword', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'firstName', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'lastName', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'gender', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'address', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'city', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'country', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'zipCode', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'geonameId', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'locale', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'timezone', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'job', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'activity', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'company', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'phone', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'fax', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'admin', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'guest', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'mailNotificationsActivated', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'requestNotificationsActivated', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'ldapCreated', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'lastAppliedTemplate', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'pushList', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'canChangeProfil', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'canChangeFtpProfil', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'lastConnection', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'mailLocked', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'deleted', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'created', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'updated', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'templateOwner', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'ftpCredential', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'queries', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'settings', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'notificationSettings']; return ['__isInitialized__', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'id', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'login', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'email', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'password', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'nonce', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'saltedPassword', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'firstName', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'lastName', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'gender', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'address', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'city', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'country', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'zipCode', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'geonameId', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'locale', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'timezone', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'job', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'activity', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'company', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'phone', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'fax', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'admin', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'guest', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'mailNotificationsActivated', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'requestNotificationsActivated', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'ldapCreated', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'lastAppliedTemplate', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'pushList', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'canChangeProfil', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'canChangeFtpProfil', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'lastConnection', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'mailLocked', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'deleted', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'created', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'updated', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'templateOwner', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'ftpCredential', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'queries', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'settings', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'notificationSettings', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'grantedApi'];
} }
return ['__isInitialized__', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'id', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'login', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'email', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'password', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'nonce', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'saltedPassword', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'firstName', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'lastName', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'gender', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'address', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'city', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'country', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'zipCode', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'geonameId', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'locale', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'timezone', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'job', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'activity', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'company', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'phone', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'fax', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'admin', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'guest', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'mailNotificationsActivated', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'requestNotificationsActivated', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'ldapCreated', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'lastAppliedTemplate', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'pushList', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'canChangeProfil', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'canChangeFtpProfil', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'lastConnection', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'mailLocked', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'deleted', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'created', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'updated', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'templateOwner', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'ftpCredential', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'queries', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'settings', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'notificationSettings']; return ['__isInitialized__', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'id', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'login', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'email', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'password', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'nonce', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'saltedPassword', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'firstName', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'lastName', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'gender', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'address', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'city', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'country', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'zipCode', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'geonameId', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'locale', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'timezone', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'job', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'activity', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'company', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'phone', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'fax', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'admin', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'guest', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'mailNotificationsActivated', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'requestNotificationsActivated', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'ldapCreated', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'lastAppliedTemplate', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'pushList', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'canChangeProfil', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'canChangeFtpProfil', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'lastConnection', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'mailLocked', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'deleted', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'created', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'updated', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'templateOwner', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'ftpCredential', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'queries', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'settings', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'notificationSettings', '' . "\0" . 'Alchemy\\Phrasea\\Model\\Entities\\User' . "\0" . 'grantedApi'];
} }
/** /**
@@ -1046,6 +1046,28 @@ class User extends \Alchemy\Phrasea\Model\Entities\User implements \Doctrine\ORM
return parent::addNotificationSettings($notificationSetting); return parent::addNotificationSettings($notificationSetting);
} }
/**
* {@inheritDoc}
*/
public function hasGrantedApi()
{
$this->__initializer__ && $this->__initializer__->__invoke($this, 'hasGrantedApi', []);
return parent::hasGrantedApi();
}
/**
* {@inheritDoc}
*/
public function setGrantedApi($grantedApi)
{
$this->__initializer__ && $this->__initializer__->__invoke($this, 'setGrantedApi', [$grantedApi]);
return parent::setGrantedApi($grantedApi);
}
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */

View File

@@ -122,6 +122,45 @@
</tbody> </tbody>
</table> </table>
<h1>{{ "developers:: Events trigger this webhook" | trans }}</h1>
<p>{{ "developers:: Select events to trigger this webhook url" | trans }}</p>
<table class="table table-condensed table-bordered">
<thead>
<tr>
<th>
{{ "developers:: Events type" | trans }}
</th>
<th>
{{ "developers:: Events name" | trans }}
</th>
</tr>
</thead>
<tbody>
{% for webhook_type, webhooks in webhook_event_list %}
<tr>
<td>
{{ webhook_type }}
</td>
<td>
<ul class="unstyled">
{% for webhook_name, webhook_description in webhooks %}
<li>
<label class="checkbox" for="{{ webhook_name }}" >
<input class="update-listened-event" type="checkbox" id="{{ webhook_name }}"
data-path="{{ path('developers_application_listened_event', {"application" : application.getId(), "event_name": webhook_name}) }}"
{% if webhook_name in application.getListenedEvents() %} checked {% endif %}
name="{{ webhook_name }}" value="1"/>
<strong> {{ webhook_name }} </strong>
<p> {{ webhook_description }} </p>
</label>
</li>
{% endfor %}
</ul>
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% if deliveries | length > 0 %} {% if deliveries | length > 0 %}
<h1>{{ "Derniers envois" | trans }}</h1> <h1>{{ "Derniers envois" | trans }}</h1>
<p> {{ "Résultats des derniers envois effectués pour cette application" | trans }}</p> <p> {{ "Résultats des derniers envois effectués pour cette application" | trans }}</p>

View File

@@ -1,17 +0,0 @@
<?php
namespace Alchemy\Tests\Phrasea\Model\Repositories;
/**
* @group functional
* @group legacy
*/
class WebhookEventRepositoryTest extends \PhraseanetTestCase
{
public function testFindUnprocessedEvents()
{
$events = self::$DI['app']['orm.em']->getRepository('Phraseanet:WebhookEvent')->findUnprocessedEvents();
// I have no clue as to why this magic number is here, probably best to discard test
$this->assertCount(34, $events);
}
}

View File

@@ -36,6 +36,10 @@ class EventProcessorFactoryTest extends \PhraseanetTestCase
{ {
return [ return [
[WebhookEvent::FEED_ENTRY_TYPE, 'Alchemy\Phrasea\Webhook\Processor\FeedEntryProcessor'], [WebhookEvent::FEED_ENTRY_TYPE, 'Alchemy\Phrasea\Webhook\Processor\FeedEntryProcessor'],
[WebhookEvent::RECORD_TYPE, 'Alchemy\Phrasea\Webhook\Processor\RecordEventProcessor'],
[WebhookEvent::RECORD_SUBDEF_TYPE, 'Alchemy\Phrasea\Webhook\Processor\SubdefEventProcessor'],
[WebhookEvent::ORDER_TYPE, 'Alchemy\Phrasea\Webhook\Processor\OrderNotificationProcessor'],
[WebhookEvent::USER_TYPE, 'Alchemy\Phrasea\Webhook\Processor\UserProcessor']
]; ];
} }
} }

View File

@@ -49,8 +49,11 @@ class FeedEntryProcessorTest extends \PhraseanetTestCase
{ {
$event = new WebhookEvent(); $event = new WebhookEvent();
$event->setData([ $event->setData([
'feed_id' => self::$DI['feed_public_entry']->getFeed()->getId(), 'feed_id' => self::$DI['feed_public_entry']->getFeed()->getId(),
'entry_id' => self::$DI['feed_public_entry']->getId() 'entry_id' => self::$DI['feed_public_entry']->getId(),
'url' => 'server_name',
'instance_name' => 'instance_name',
'event_time' => new \DateTime()
]); ]);
$event->setName(WebhookEvent::NEW_FEED_ENTRY); $event->setName(WebhookEvent::NEW_FEED_ENTRY);
$event->setType(WebhookEvent::FEED_ENTRY_TYPE); $event->setType(WebhookEvent::FEED_ENTRY_TYPE);

View File

@@ -0,0 +1,493 @@
<?php
namespace Alchemy\Tests\Phrasea\WorkerManager\Worker;
use Alchemy\Phrasea\Model\Entities\Order;
use Alchemy\Phrasea\Model\Entities\WebhookEvent;
use Alchemy\Phrasea\WorkerManager\Worker\WebhookWorker;
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;
class WebhookWorkerTest extends \PhraseanetTestCase
{
private $events = [
WebhookEvent::RECORD_TYPE => [
WebhookEvent::RECORD_CREATED,
WebhookEvent::RECORD_EDITED,
WebhookEvent::RECORD_DELETED,
WebhookEvent::RECORD_MEDIA_SUBSTITUTED,
WebhookEvent::RECORD_COLLECTION_CHANGED,
WebhookEvent::RECORD_STATUS_CHANGED,
],
WebhookEvent::RECORD_SUBDEF_TYPE => [
WebhookEvent::RECORD_SUBDEF_CREATED,
WebhookEvent::RECORD_SUBDEF_FAILED,
],
WebhookEvent::USER_TYPE => [
WebhookEvent::USER_CREATED,
WebhookEvent::USER_DELETED,
],
WebhookEvent::USER_REGISTRATION_TYPE => [
WebhookEvent::USER_REGISTRATION_GRANTED,
WebhookEvent::USER_REGISTRATION_REJECTED,
],
WebhookEvent::FEED_ENTRY_TYPE => [
WebhookEvent::NEW_FEED_ENTRY,
],
WebhookEvent::ORDER_TYPE => [
WebhookEvent::ORDER_CREATED,
WebhookEvent::ORDER_DELIVERED,
WebhookEvent::ORDER_DENIED
]
];
private $eventsData;
public function testDeliverDataWithoutRestriction()
{
$em = self::$DI['app']['orm.em'];
$webhookUrl = 'http://webhook.com/webhook/';
$event = new WebhookEvent();
$event->setName('record.created')
->setType('record')
->setData([
'databox_id' => self::$DI['record_1']->get_sbas_id(),
'record_id' => self::$DI['record_1']->get_record_id(),
'collection_name' => self::$DI['record_1']->getCollection()->get_name(),
'record_type' => 'record'
])
->setCollectionBaseIds([])
;
//minimum the app user access to the record collection
self::$DI['app']->getAclForUser(self::$DI['user_1'])->give_access_to_base([self::$DI['record_1']->getBaseId()]);
$em->persist($event);
$em->flush();
self::$DI['app']['manipulator.api-application']->setWebhookUrl(self::$DI['oauth2-app-user1'], $webhookUrl);
$payload = [
'id' => $event->getId(),
'published' => time()
];
$client = new Client();
$this->deliverEventTest($client, $event, $payload);
return $event;
}
private function deliverEventTest(Client $client, WebhookEvent $event, $payload)
{
$webhookWorker = new WebhookWorker(self::$DI['app']);
$webhookWorker->setApplicationBox(self::$DI['app']['phraseanet.appbox']);
$webhookWorker->setDispatcher(self::$DI['app']['dispatcher']);
$requestResult = $webhookWorker->deliverEvent($client, [self::$DI['oauth2-app-user1']], $event, $payload);
$this->assertCount(1, $requestResult);
$deliveryCreated = self::$DI['app']['repo.webhook-delivery']->findOneBy(['event' => $event]);
$deliveryId = $deliveryCreated != null ? $deliveryCreated->getId() : null;
$this->assertEquals($deliveryId, key($requestResult));
/** @var Request $request */
foreach ($requestResult as $request) {
$this->assertEquals('POST', $request->getMethod());
$this->assertEquals('http://webhook.com/webhook/'."#".$deliveryId, $request->getUri());
$this->assertArrayHasKey('Content-Type', $request->getHeaders());
$this->assertContains('application/vnd.phraseanet.event+json', $request->getHeader('Content-Type'));
$requestBody = json_decode($request->getBody()->__tostring(), true);
$this->assertEquals('record.created', $requestBody['event']);
$this->assertEquals(self::$DI['record_1']->get_sbas_id(), $requestBody['data']['databox_id']);
$this->assertEquals(self::$DI['record_1']->get_record_id(), $requestBody['data']['record_id']);
$this->assertEquals('record', $requestBody['data']['record_type']);
$this->assertArrayHasKey('event_time', $requestBody);
}
}
/**
* @depends testDeliverDataWithoutRestriction
*
* @param WebhookEvent $event
*/
public function testNoDeliverWithSpecifiedListenedEvent(WebhookEvent $event)
{
self::$DI['oauth2-app-user1']->setListenedEvents(['record.edited']);
$payload = [
'id' => $event->getId(),
'published' => time()
];
$client = new Client();
$webhookWorker = new WebhookWorker(self::$DI['app']);
$webhookWorker->setApplicationBox(self::$DI['app']['phraseanet.appbox']);
$webhookWorker->setDispatcher(self::$DI['app']['dispatcher']);
$requestResult = $webhookWorker->deliverEvent($client, [self::$DI['oauth2-app-user1']], $event, $payload);
// normally no request sended because record.created sended
$this->assertCount(0, $requestResult);
}
/**
* @depends testDeliverDataWithoutRestriction
*/
public function testNoDeliverWithCreatorNoCollectionRight()
{
$em = self::$DI['app']['orm.em'];
// revoke user creator access for the record collection
self::$DI['app']->getAclForUser(self::$DI['user_1'])->revoke_access_from_bases([self::$DI['record_1']->getBaseId()]);
$event = new WebhookEvent();
$event->setName('record.created')
->setType('record')
->setData([
'databox_id' => self::$DI['record_1']->get_sbas_id(),
'record_id' => self::$DI['record_1']->get_record_id(),
'collection_name' => self::$DI['record_1']->getCollection()->get_name(),
'record_type' => 'record'
])
->setCollectionBaseIds([self::$DI['record_1']->getBaseId()])
;
$em->persist($event);
$em->flush();
$payload = [
'id' => $event->getId(),
'published' => time()
];
$client = new Client();
$webhookWorker = new WebhookWorker(self::$DI['app']);
$webhookWorker->setApplicationBox(self::$DI['app']['phraseanet.appbox']);
$webhookWorker->setDispatcher(self::$DI['app']['dispatcher']);
$requestResult = $webhookWorker->deliverEvent($client, [self::$DI['oauth2-app-user1']], $event, $payload);
// normally no request sended because user creator have no access to the record collection
$this->assertCount(0, $requestResult);
// restitute the old right for others test
self::$DI['app']->getAclForUser(self::$DI['user_1'])->give_access_to_base([self::$DI['record_1']->getBaseId()]);
}
public function testDeliverAllEventWithoutBaseIdRestrictions()
{
$this->loadEventsData();
// add right canadmin for a creatorUser in at least one collection
// needed for test user.created and deleting phantom user.deleted
self::$DI['app']->getAclForUser(self::$DI['user_1'])->update_rights_to_base(self::$DI['record_1']->getBaseId(), [\ACL::CANADMIN => true]);
$em = self::$DI['app']['orm.em'];
$client = new Client();
$webhookWorker = new WebhookWorker(self::$DI['app']);
$webhookWorker->setApplicationBox(self::$DI['app']['phraseanet.appbox']);
$webhookWorker->setDispatcher(self::$DI['app']['dispatcher']);
foreach ($this->events as $type => $tEvent) {
foreach ($tEvent as $eventName) {
$event = new WebhookEvent();
$event
->setName($eventName)
->setType($type)
->setData($this->eventsData[$type])
->setCollectionBaseIds([])
;
$em->persist($event);
$em->flush();
$payload = [
'id' => $event->getId(),
'published' => time()
];
$requestResult = $webhookWorker->deliverEvent($client, [self::$DI['oauth2-app-user1']], $event, $payload);
$this->assertCount(1, $requestResult);
/** @var Request $request */
$request = current($requestResult);
$requestBody = json_decode($request->getBody()->__tostring(), true);
$this->assertInternalType('array', $requestBody);
$this->assertArrayHasKey('event', $requestBody);
$this->assertArrayHasKey('event_time', $requestBody);
$this->assertArrayHasKey('webhookId', $requestBody);
switch (true) {
case (in_array($requestBody['event'], $this->events[WebhookEvent::RECORD_TYPE])):
$this->assertArrayHasKey('data', $requestBody);
$this->assertEquals(self::$DI['record_1']->get_sbas_id(), $requestBody['data']['databox_id']);
$this->assertEquals(self::$DI['record_1']->get_record_id(), $requestBody['data']['record_id']);
$this->assertEquals('record', $requestBody['data']['record_type']);
$this->assertEquals(self::$DI['record_1']->getCollection()->get_name(), $requestBody['data']['collection_name']);
$this->assertCount(7, $requestBody);
break;
case (in_array($requestBody['event'], $this->events[WebhookEvent::RECORD_SUBDEF_TYPE])):
$this->assertArrayHasKey('data', $requestBody);
$this->assertEquals(self::$DI['record_1']->get_sbas_id(), $requestBody['data']['databox_id']);
$this->assertEquals(self::$DI['record_1']->get_record_id(), $requestBody['data']['record_id']);
$this->assertEquals('thumbnail', $requestBody['data']['subdef']);
$this->assertCount(7, $requestBody);
break;
case (in_array($requestBody['event'], $this->events[WebhookEvent::USER_TYPE])):
$this->assertArrayNotHasKey('data', $requestBody);
$this->assertArrayHasKey('user', $requestBody);
$this->assertEquals(self::$DI['user_notAdmin']->getId(), $requestBody['user']['id']);
$this->assertEquals('noone_not_admin@example.com', $requestBody['user']['email']);
$this->assertEquals('noone_not_admin@example.com', $requestBody['user']['login']);
$this->assertCount(7, $requestBody);
break;
case (in_array($requestBody['event'], $this->events[WebhookEvent::USER_REGISTRATION_TYPE])):
$this->assertArrayNotHasKey('data', $requestBody);
$this->assertArrayHasKey('user', $requestBody);
$this->assertArrayHasKey('granted', $requestBody);
$this->assertArrayHasKey('rejected', $requestBody);
$this->assertEquals(self::$DI['user_notAdmin']->getId(), $requestBody['user']['id']);
$this->assertEquals(['rejected'], $requestBody['rejected']);
$this->assertEquals(['granted'], $requestBody['granted']);
$this->assertCount(9, $requestBody);
break;
case (in_array($requestBody['event'], $this->events[WebhookEvent::FEED_ENTRY_TYPE])):
$this->assertArrayNotHasKey('data', $requestBody);
$this->assertArrayHasKey('feed', $requestBody);
$this->assertArrayHasKey('entry', $requestBody);
$this->assertEquals(self::$DI['feed_public_entry']->getId(), $requestBody['entry']['id']);
$this->assertCount(10, $requestBody);
break;
case (in_array($requestBody['event'], $this->events[WebhookEvent::ORDER_TYPE])):
$this->assertArrayNotHasKey('data', $requestBody);
$this->assertArrayHasKey('user', $requestBody);
$this->assertArrayHasKey('order', $requestBody);
$this->assertEquals(self::$DI['user_notAdmin']->getId(), $requestBody['user']['id']);
$this->assertCount(8, $requestBody);
break;
}
}
}
}
public function testDeliverWithValidRight()
{
$this->loadEventsData();
$em = self::$DI['app']['orm.em'];
foreach ($this->events as $type => $tEvent) {
foreach ($tEvent as $eventName) {
$event = new WebhookEvent();
$event
->setName($eventName)
->setType($type)
->setData($this->eventsData[$type])
->setCollectionBaseIds([self::$DI['record_1']->getBaseId()])
;
$em->persist($event);
$em->flush();
list($rightSbas, $rightBase) = $this->getUserActiveRights(WebhookEvent::$eventsAccessRight, $eventName);
$rightSbasReset = [
\ACL::BAS_MODIFY_STRUCT => false,
\ACL::BAS_MODIF_TH => false,
\ACL::BAS_CHUPUB => false,
\ACL::BAS_MANAGE => false,
];
// re-initialize user right
self::$DI['app']->getAclForUser(self::$DI['user_1'])->revoke_access_from_bases([self::$DI['record_1']->getBaseId()]);
self::$DI['app']->getAclForUser(self::$DI['user_1'])->update_rights_to_base(self::$DI['record_1']->getBaseId(), $rightBase);
self::$DI['app']->getAclForUser(self::$DI['user_1'])->update_rights_to_sbas(self::$DI['record_1']->get_sbas_id(), $rightSbasReset);
self::$DI['app']->getAclForUser(self::$DI['user_1'])->update_rights_to_sbas(self::$DI['record_1']->get_sbas_id(), $rightSbas);
$client = new Client();
$webhookWorker = new WebhookWorker(self::$DI['app']);
$webhookWorker->setApplicationBox(self::$DI['app']['phraseanet.appbox']);
$webhookWorker->setDispatcher(self::$DI['app']['dispatcher']);
$payload = [
'id' => $event->getId(),
'published' => time()
];
$requestResult = $webhookWorker->deliverEvent($client, [self::$DI['oauth2-app-user1']], $event, $payload);
$this->assertCount(1, $requestResult);
/** @var Request $request */
$request = current($requestResult);
$requestBody = json_decode($request->getBody()->__tostring(), true);
$this->assertInternalType('array', $requestBody);
$this->assertArrayHasKey('event', $requestBody);
}
}
}
public function testNoDeliverWithInvalidRight()
{
$this->loadEventsData();
$eventsTestInvalidUserRight = [
WebhookEvent::RECORD_CREATED => [],
WebhookEvent::RECORD_EDITED => [\ACL::ACCESS, \ACL::ACTIF, \ACL::CANADDRECORD],
WebhookEvent::RECORD_DELETED => [\ACL::ACCESS, \ACL::ACTIF, \ACL::CANADDRECORD],
WebhookEvent::RECORD_MEDIA_SUBSTITUTED => [\ACL::ACCESS, \ACL::ACTIF, \ACL::CANMODIFRECORD],
WebhookEvent::RECORD_COLLECTION_CHANGED => [\ACL::ACCESS, \ACL::ACTIF, \ACL::CANMODIFRECORD, \ACL::CHGSTATUS],
WebhookEvent::RECORD_STATUS_CHANGED => [\ACL::ACCESS, \ACL::ACTIF, \ACL::IMGTOOLS],
WebhookEvent::RECORD_SUBDEF_CREATED => [\ACL::ACCESS, \ACL::ACTIF, [\ACL::CANMODIFRECORD, \ACL::BAS_CHUPUB]],// only one right required from the sub-array
WebhookEvent::RECORD_SUBDEF_FAILED => [\ACL::ACCESS, \ACL::ACTIF, [\ACL::ORDER_MASTER, \ACL::COLL_MANAGE]],
WebhookEvent::USER_CREATED => [\ACL::ACCESS, \ACL::ACTIF, \ACL::ORDER_MASTER],
WebhookEvent::USER_DELETED => [\ACL::ACCESS, \ACL::ACTIF, \ACL::CANMODIFRECORD],
WebhookEvent::USER_REGISTRATION_GRANTED => [\ACL::ACCESS, \ACL::ACTIF, \ACL::CANMODIFRECORD],
WebhookEvent::USER_REGISTRATION_REJECTED=> [\ACL::ACCESS, \ACL::ACTIF, \ACL::CANMODIFRECORD],
WebhookEvent::NEW_FEED_ENTRY => [\ACL::ACCESS, \ACL::ACTIF, \ACL::CHGSTATUS],
WebhookEvent::ORDER_CREATED => [\ACL::ACCESS, \ACL::ACTIF, \ACL::BAS_CHUPUB],
WebhookEvent::ORDER_DELIVERED => [\ACL::ACCESS, \ACL::ACTIF, \ACL::BAS_CHUPUB],
WebhookEvent::ORDER_DENIED => [\ACL::ACCESS, \ACL::ACTIF, \ACL::BAS_CHUPUB]
];
$em = self::$DI['app']['orm.em'];
foreach ($this->events as $type => $tEvent) {
foreach ($tEvent as $eventName) {
$event = new WebhookEvent();
$event
->setName($eventName)
->setType($type)
->setData($this->eventsData[$type])
->setCollectionBaseIds([self::$DI['record_1']->getBaseId()])
;
$em->persist($event);
$em->flush();
list($rightSbas, $rightBase) = $this->getUserActiveRights($eventsTestInvalidUserRight, $eventName);
$rightSbasReset = [
\ACL::BAS_MODIFY_STRUCT => false,
\ACL::BAS_MODIF_TH => false,
\ACL::BAS_CHUPUB => false,
\ACL::BAS_MANAGE => false,
];
// re-initialize user right for the test
self::$DI['app']->getAclForUser(self::$DI['user_1'])->revoke_access_from_bases([self::$DI['record_1']->getBaseId()]);
if (count($rightBase) > 0) {
self::$DI['app']->getAclForUser(self::$DI['user_1'])->update_rights_to_base(self::$DI['record_1']->getBaseId(), $rightBase);
}
self::$DI['app']->getAclForUser(self::$DI['user_1'])->update_rights_to_sbas(self::$DI['record_1']->get_sbas_id(), $rightSbasReset);
if (count($rightSbas) > 0) {
self::$DI['app']->getAclForUser(self::$DI['user_1'])->update_rights_to_sbas(self::$DI['record_1']->get_sbas_id(), $rightSbas);
}
$client = new Client();
$webhookWorker = new WebhookWorker(self::$DI['app']);
$webhookWorker->setApplicationBox(self::$DI['app']['phraseanet.appbox']);
$webhookWorker->setDispatcher(self::$DI['app']['dispatcher']);
$payload = [
'id' => $event->getId(),
'published' => time()
];
$requestResult = $webhookWorker->deliverEvent($client, [self::$DI['oauth2-app-user1']], $event, $payload);
// Normaly no request send
$this->assertCount(0, $requestResult);
}
}
}
private function loadEventsData()
{
$em = self::$DI['app']['orm.em'];
$order = new Order();
$order
->setUser(self::$DI['user_notAdmin'])
->setOrderUsage('test')
->setDeadline(new \DateTime('+1 day'))
;
$em->persist($order);
$em->flush();
$this->eventsData = [
WebhookEvent::RECORD_TYPE => [
'databox_id' => self::$DI['record_1']->get_sbas_id(),
'record_id' => self::$DI['record_1']->get_record_id(),
'collection_name' => self::$DI['record_1']->getCollection()->get_name(),
'record_type' => 'record'
],
WebhookEvent::RECORD_SUBDEF_TYPE => [
'databox_id' => self::$DI['record_1']->get_sbas_id(),
'record_id' => self::$DI['record_1']->get_record_id(),
'subdef' => 'thumbnail'
],
WebhookEvent::USER_TYPE => [
'user_id' => self::$DI['user_notAdmin']->getId(),
'email' => 'noone_not_admin@example.com',
'login' => 'noone_not_admin@example.com'
],
WebhookEvent::USER_REGISTRATION_TYPE => [
'user_id' => self::$DI['user_notAdmin']->getId(),
'granted' => ['granted'],
'rejected' => ['rejected']
],
WebhookEvent::FEED_ENTRY_TYPE => [
'entry_id' => self::$DI['feed_public_entry']->getId(),
'feed_id' => self::$DI['feed_public']->getId()
],
WebhookEvent::ORDER_TYPE => [
'order_id' => $order->getId(),
'user_id' => self::$DI['user_notAdmin']->getId(),
]
];
}
private function getUserActiveRights(array $eventsRights, $eventName)
{
$rightBase = [];
$rightSbas = [];
foreach ($eventsRights[$eventName] as $eventRight) {
if (is_array($eventRight)) {
foreach ($eventRight as $r) {
if ($r == \ACL::ACCESS) {
continue;
}
if (strpos($r, 'bas_') === 0) {
$rightSbas[$r] = true;
} else {
$rightBase[$r] = true;
}
}
} elseif ($eventRight != \ACL::ACCESS) { // access is not a real sql column
if (strpos($eventRight, 'bas_') === 0) {
$rightSbas[$eventRight] = true;
} else {
$rightBase[$eventRight] = true;
}
}
}
return [$rightSbas, $rightBase];
}
}

View File

@@ -173,6 +173,10 @@ abstract class PhraseanetTestCase extends WebTestCase
return $DI['app']['repo.api-applications']->find(self::$fixtureIds['oauth']['user']); return $DI['app']['repo.api-applications']->find(self::$fixtureIds['oauth']['user']);
}); });
self::$DI['oauth2-app-user1'] = self::$DI->share(function ($DI) {
return $DI['app']['repo.api-applications']->find(self::$fixtureIds['oauth']['user1']);
});
self::$DI['webhook-event'] = self::$DI->share(function ($DI) { self::$DI['webhook-event'] = self::$DI->share(function ($DI) {
return $DI['app']['repo.webhook-event']->find(self::$fixtureIds['webhook']['event']); return $DI['app']['repo.webhook-event']->find(self::$fixtureIds['webhook']['event']);
}); });