mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-14 13:33:14 +00:00
Merge branch '3.7'
This commit is contained in:
53
lib/classes/API/V1/Timer.class.php
Normal file
53
lib/classes/API/V1/Timer.class.php
Normal file
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
use Silex\Application;
|
||||
use Silex\ServiceProviderInterface;
|
||||
use Alchemy\Phrasea\Core\PhraseaEvents;
|
||||
use Doctrine\Common\Collections\ArrayCollection;
|
||||
use Symfony\Component\EventDispatcher\Event;
|
||||
use Symfony\Component\HttpKernel\KernelEvents;
|
||||
|
||||
class API_V1_Timer implements ServiceProviderInterface
|
||||
{
|
||||
private $app;
|
||||
private $starting;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->starting = microtime(true);
|
||||
}
|
||||
|
||||
public function register(Application $app)
|
||||
{
|
||||
$app['api.timers'] = new ArrayCollection();
|
||||
$app['api.timers.start'] = $this->starting;
|
||||
|
||||
$callback = function (Event $event) use ($app) {
|
||||
$name = $event->getName();
|
||||
$n = 1;
|
||||
while(isset($app['api.timers']->{$name})) {
|
||||
$n++;
|
||||
$name = $event->getName() . '#' . $n;
|
||||
}
|
||||
$app['api.timers']->add(array(
|
||||
'name' => $name,
|
||||
'memory' => memory_get_usage(),
|
||||
'time' => microtime(true) - $app['api.timers.start'],
|
||||
));
|
||||
};
|
||||
|
||||
$app['dispatcher']->addListener(KernelEvents::CONTROLLER, $callback, -999999);
|
||||
$app['dispatcher']->addListener(KernelEvents::REQUEST, $callback, 999999);
|
||||
$app['dispatcher']->addListener(KernelEvents::REQUEST, $callback, -999999);
|
||||
$app['dispatcher']->addListener(KernelEvents::RESPONSE, $callback, -999999);
|
||||
$app['dispatcher']->addListener(KernelEvents::EXCEPTION, $callback, 999999);
|
||||
$app['dispatcher']->addListener(PhraseaEvents::API_OAUTH2_START, $callback);
|
||||
$app['dispatcher']->addListener(PhraseaEvents::API_OAUTH2_END, $callback);
|
||||
$app['dispatcher']->addListener(PhraseaEvents::API_LOAD_END, $callback);
|
||||
$app['dispatcher']->addListener(PhraseaEvents::API_RESULT, $callback);
|
||||
}
|
||||
|
||||
public function boot(Application $app)
|
||||
{
|
||||
}
|
||||
}
|
@@ -64,7 +64,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function get_error_message(Request $request, $error, $message)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
$result->set_error_message($error, $message);
|
||||
|
||||
return $result;
|
||||
@@ -78,7 +78,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function get_error_code(Request $request, $code)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
$result->set_error_code($code);
|
||||
|
||||
return $result;
|
||||
@@ -102,7 +102,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function get_scheduler(Application $app)
|
||||
{
|
||||
$result = new \API_V1_result($app['request'], $this);
|
||||
$result = new \API_V1_result($app, $app['request'], $this);
|
||||
|
||||
$taskManager = $app['task-manager'];
|
||||
$ret = $taskManager->getSchedulerState();
|
||||
@@ -129,7 +129,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function get_task_list(Application $app)
|
||||
{
|
||||
$result = new \API_V1_result($app['request'], $this);
|
||||
$result = new \API_V1_result($app, $app['request'], $this);
|
||||
|
||||
$taskManager = $app['task-manager'];
|
||||
$tasks = $taskManager->getTasks();
|
||||
@@ -168,7 +168,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function get_task(Application $app, $taskId)
|
||||
{
|
||||
$result = new \API_V1_result($app['request'], $this);
|
||||
$result = new \API_V1_result($app, $app['request'], $this);
|
||||
|
||||
$taskManager = $app['task-manager'];
|
||||
|
||||
@@ -190,7 +190,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function start_task(Application $app, $taskId)
|
||||
{
|
||||
$result = new \API_V1_result($app['request'], $this);
|
||||
$result = new \API_V1_result($app, $app['request'], $this);
|
||||
|
||||
$taskManager = $app['task-manager'];
|
||||
|
||||
@@ -213,7 +213,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function stop_task(Application $app, $taskId)
|
||||
{
|
||||
$result = new API_V1_result($app['request'], $this);
|
||||
$result = new API_V1_result($app, $app['request'], $this);
|
||||
|
||||
$taskManager = $app['task-manager'];
|
||||
|
||||
@@ -238,7 +238,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function set_task_property(Application $app, $taskId)
|
||||
{
|
||||
$result = new API_V1_result($app['request'], $this);
|
||||
$result = new API_V1_result($app, $app['request'], $this);
|
||||
|
||||
$title = $app['request']->get('title');
|
||||
$autostart = $app['request']->get('autostart');
|
||||
@@ -499,7 +499,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function get_phraseanet_monitor(Application $app)
|
||||
{
|
||||
$result = new API_V1_result($app['request'], $this);
|
||||
$result = new API_V1_result($app, $app['request'], $this);
|
||||
|
||||
$ret = array_merge(
|
||||
$this->get_config_info($app), $this->get_cache_info($app), $this->get_gv_info($app)
|
||||
@@ -519,7 +519,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function get_databoxes(Request $request)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
|
||||
$result->set_datas(array("databoxes" => $this->list_databoxes()));
|
||||
|
||||
@@ -536,7 +536,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function get_databox_collections(Request $request, $databox_id)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
|
||||
$result->set_datas(
|
||||
array(
|
||||
@@ -559,7 +559,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function get_databox_status(Request $request, $databox_id)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
|
||||
$result->set_datas(
|
||||
array(
|
||||
@@ -583,7 +583,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function get_databox_metadatas(Request $request, $databox_id)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
|
||||
$result->set_datas(
|
||||
array(
|
||||
@@ -608,7 +608,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function get_databox_terms(Request $request, $databox_id)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
|
||||
$result->set_datas(
|
||||
array(
|
||||
@@ -622,7 +622,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
|
||||
public function caption_records(Request $request, $databox_id, $record_id)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
|
||||
$record = $this->app['phraseanet.appbox']->get_databox($databox_id)->get_record($record_id);
|
||||
$fields = $record->get_caption()->get_fields();
|
||||
@@ -728,7 +728,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
$ret['url'] = '/quarantine/item/' . $output->getId() . '/';
|
||||
}
|
||||
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
|
||||
$result->set_datas($ret);
|
||||
|
||||
@@ -758,7 +758,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
$ret[] = $this->list_lazaret_file($lazaretFile);
|
||||
}
|
||||
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
|
||||
$result->set_datas(array(
|
||||
'offset_start' => $offset_start,
|
||||
@@ -784,7 +784,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
|
||||
$ret = array('quarantine_item' => $this->list_lazaret_file($lazaretFile));
|
||||
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
|
||||
$result->set_datas($ret);
|
||||
|
||||
@@ -834,7 +834,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function search(Request $request)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
|
||||
list($ret, $search_result) = $this->prepare_search_request($request);
|
||||
|
||||
@@ -867,7 +867,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function search_records(Request $request)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
|
||||
list($ret, $search_result) = $this->prepare_search_request($request);
|
||||
|
||||
@@ -935,7 +935,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function get_record_related(Request $request, $databox_id, $record_id)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
|
||||
$that = $this;
|
||||
$baskets = array_map(function ($basket) use ($that) {
|
||||
@@ -971,7 +971,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function get_record_metadatas(Request $request, $databox_id, $record_id)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
|
||||
$record = $this->app['phraseanet.appbox']->get_databox($databox_id)->get_record($record_id);
|
||||
|
||||
@@ -995,7 +995,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function get_record_status(Request $request, $databox_id, $record_id)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
|
||||
$record = $this->app['phraseanet.appbox']
|
||||
->get_databox($databox_id)
|
||||
@@ -1026,7 +1026,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
public function get_record_embed(Request $request, $databox_id, $record_id)
|
||||
{
|
||||
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
|
||||
$record = $this->app['phraseanet.appbox']->get_databox($databox_id)->get_record($record_id);
|
||||
|
||||
@@ -1056,7 +1056,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
public function get_story_embed(Request $request, $databox_id, $record_id)
|
||||
{
|
||||
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
|
||||
$record = $this->app['phraseanet.appbox']
|
||||
->get_databox($databox_id)
|
||||
@@ -1078,7 +1078,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
|
||||
public function set_record_metadatas(Request $request, $databox_id, $record_id)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
$record = $this->app['phraseanet.appbox']->get_databox($databox_id)->get_record($record_id);
|
||||
|
||||
try {
|
||||
@@ -1105,7 +1105,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
|
||||
public function set_record_status(Request $request, $databox_id, $record_id)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
$databox = $this->app['phraseanet.appbox']->get_databox($databox_id);
|
||||
$record = $databox->get_record($record_id);
|
||||
$status_bits = $databox->get_statusbits();
|
||||
@@ -1159,7 +1159,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function set_record_collection(Request $request, $databox_id, $record_id)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
$databox = $this->app['phraseanet.appbox']->get_databox($databox_id);
|
||||
$record = $databox->get_record($record_id);
|
||||
|
||||
@@ -1185,7 +1185,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function get_record(Request $request, $databox_id, $record_id)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
$databox = $this->app['phraseanet.appbox']->get_databox($databox_id);
|
||||
try {
|
||||
$record = $databox->get_record($record_id);
|
||||
@@ -1209,7 +1209,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function get_story(Request $request, $databox_id, $story_id)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
$databox = $this->app['phraseanet.appbox']->get_databox($databox_id);
|
||||
try {
|
||||
$story = $databox->get_record($story_id);
|
||||
@@ -1231,7 +1231,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function search_baskets(Request $request)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
|
||||
$usr_id = $session = $this->app['phraseanet.user']->get_id();
|
||||
|
||||
@@ -1269,7 +1269,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function create_basket(Request $request)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
|
||||
$name = $request->get('name');
|
||||
|
||||
@@ -1318,7 +1318,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function get_basket(Request $request, $basket_id)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
|
||||
$repository = $this->app['EM']->getRepository('\Entities\Basket');
|
||||
|
||||
@@ -1415,7 +1415,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function set_basket_title(Request $request, $basket_id)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
|
||||
$name = $request->get('name');
|
||||
|
||||
@@ -1443,7 +1443,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function set_basket_description(Request $request, $basket_id)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
|
||||
$desc = $request->get('description');
|
||||
|
||||
@@ -1471,7 +1471,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function search_publications(Request $request, User_Adapter $user)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
|
||||
$coll = Feed_Collection::load_all($this->app, $user);
|
||||
|
||||
@@ -1504,7 +1504,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
*/
|
||||
public function get_publication(Request $request, $publication_id, User_Adapter $user)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
|
||||
$feed = Feed_Adapter::load_with_user($this->app, $user, $publication_id);
|
||||
|
||||
@@ -1527,7 +1527,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
|
||||
public function get_publications(Request $request, User_Adapter $user)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
|
||||
$feed = Feed_Aggregate::load_with_user($this->app, $user);
|
||||
|
||||
@@ -1550,7 +1550,7 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
|
||||
public function get_feed_entry(Request $request, $entry_id, User_Adapter $user)
|
||||
{
|
||||
$result = new API_V1_result($request, $this);
|
||||
$result = new API_V1_result($this->app, $request, $this);
|
||||
|
||||
$entry = Feed_Entry_Adapter::load_from_id($this->app, $entry_id);
|
||||
|
||||
@@ -1729,8 +1729,9 @@ class API_V1_adapter extends API_V1_Abstract
|
||||
'is_activated' => $permalink->get_is_activated(),
|
||||
'label' => $permalink->get_label(),
|
||||
'updated_on' => $permalink->get_last_modified()->format(DATE_ATOM),
|
||||
'page_url' => $permalink->get_page($registry),
|
||||
'url' => $permalink->get_url($registry)
|
||||
'page_url' => $permalink->get_page(),
|
||||
'download_url' => $permalink->get_url() . '&download',
|
||||
'url' => $permalink->get_url()
|
||||
);
|
||||
}
|
||||
|
||||
|
@@ -9,19 +9,16 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Alchemy\Phrasea\Core\Event\ApiResultEvent;
|
||||
use Alchemy\Phrasea\Core\PhraseaEvents;
|
||||
use Silex\Application;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*
|
||||
* @package APIv1
|
||||
* @license http://opensource.org/licenses/gpl-3.0 GPLv3
|
||||
* @link www.phraseanet.com
|
||||
*/
|
||||
class API_V1_result
|
||||
{
|
||||
protected $app;
|
||||
|
||||
/**
|
||||
*
|
||||
* @var string
|
||||
@@ -103,10 +100,11 @@ class API_V1_result
|
||||
*
|
||||
* @return API_V1_result
|
||||
*/
|
||||
public function __construct(Request $request, API_V1_adapter $api)
|
||||
public function __construct(Application $app, Request $request, API_V1_adapter $api)
|
||||
{
|
||||
$date = new DateTime();
|
||||
|
||||
$this->app = $app;
|
||||
$this->request = $request;
|
||||
$this->api_version = $api->get_version();
|
||||
$this->response_time = $date->format(DATE_ATOM);
|
||||
@@ -197,6 +195,14 @@ class API_V1_result
|
||||
, 'response' => $this->response
|
||||
);
|
||||
|
||||
$this->app['dispatcher']->dispatch(PhraseaEvents::API_RESULT, new ApiResultEvent());
|
||||
|
||||
$conf = $this->app['phraseanet.configuration']->getPhraseanet();
|
||||
|
||||
if ($conf->has('api-timers') && true === $conf->get('api-timers')) {
|
||||
$ret['timers'] = $this->app['api.timers']->toArray();
|
||||
}
|
||||
|
||||
$return_value = false;
|
||||
|
||||
switch ($this->response_type) {
|
||||
|
Reference in New Issue
Block a user