mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-18 07:23:13 +00:00
Fix PR
Conflicts: lib/Alchemy/Phrasea/Controller/Prod/Records.php templates/web/prod/Share/record.html.twig
This commit is contained in:
@@ -65,175 +65,175 @@ use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
|
|||||||
|
|
||||||
return call_user_func(function($environment = null) {
|
return call_user_func(function($environment = null) {
|
||||||
|
|
||||||
$app = new PhraseaApplication($environment);
|
$app = new PhraseaApplication($environment);
|
||||||
|
|
||||||
$app->before(function () use ($app) {
|
$app->before(function () use ($app) {
|
||||||
$app['firewall']->requireSetup();
|
$app['firewall']->requireSetup();
|
||||||
});
|
});
|
||||||
|
|
||||||
$app->before(function(Request $request) use ($app) {
|
$app->before(function(Request $request) use ($app) {
|
||||||
if ($request->cookies->has('persistent') && !$app->isAuthenticated()) {
|
if ($request->cookies->has('persistent') && !$app->isAuthenticated()) {
|
||||||
try {
|
try {
|
||||||
$auth = new \Session_Authentication_PersistentCookie($app, $request->cookies->get('persistent'));
|
$auth = new \Session_Authentication_PersistentCookie($app, $request->cookies->get('persistent'));
|
||||||
$app->openAccount($auth, $auth->getSessionId());
|
$app->openAccount($auth, $auth->getSessionId());
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
});
|
||||||
|
|
||||||
$app->get('/', function(PhraseaApplication $app) {
|
$app->get('/', function(PhraseaApplication $app) {
|
||||||
if ($app['browser']->isMobile()) {
|
if ($app['browser']->isMobile()) {
|
||||||
return $app->redirect("/login/?redirect=lightbox");
|
return $app->redirect("/login/?redirect=lightbox");
|
||||||
} elseif ($app['browser']->isNewGeneration()) {
|
} elseif ($app['browser']->isNewGeneration()) {
|
||||||
return $app->redirect("/login/?redirect=prod");
|
return $app->redirect("/login/?redirect=prod");
|
||||||
|
} else {
|
||||||
|
return $app->redirect("/login/?redirect=client");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$app->get('/robots.txt', function(PhraseaApplication $app) {
|
||||||
|
|
||||||
|
if ($app['phraseanet.registry']->get('GV_allow_search_engine') === true) {
|
||||||
|
$buffer = "User-Agent: *\n" . "Allow: /\n";
|
||||||
|
} else {
|
||||||
|
$buffer = "User-Agent: *\n" . "Disallow: /\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Response($buffer, 200, array('Content-Type' => 'text/plain'));
|
||||||
|
})->bind('robots');
|
||||||
|
|
||||||
|
$app->mount('/feeds/', new RSSFeeds());
|
||||||
|
$app->mount('/account/', new Account());
|
||||||
|
$app->mount('/login/', new Login());
|
||||||
|
$app->mount('/developers/', new Developers());
|
||||||
|
$app->mount('/lightbox/', new Lightbox());
|
||||||
|
|
||||||
|
$app->mount('/datafiles/', new Datafiles());
|
||||||
|
$app->mount('/permalink/', new Permalink());
|
||||||
|
|
||||||
|
$app->mount('/admin/', new Root());
|
||||||
|
$app->mount('/admin/dashboard', new Dashboard());
|
||||||
|
$app->mount('/admin/collection', new Collection());
|
||||||
|
$app->mount('/admin/databox', new Databox());
|
||||||
|
$app->mount('/admin/databoxes', new Databoxes());
|
||||||
|
$app->mount('/admin/setup', new Setup());
|
||||||
|
$app->mount('/admin/sphinx', new Sphinx());
|
||||||
|
$app->mount('/admin/connected-users', new ConnectedUsers());
|
||||||
|
$app->mount('/admin/publications', new Publications());
|
||||||
|
$app->mount('/admin/users', new Users());
|
||||||
|
$app->mount('/admin/fields', new Fields());
|
||||||
|
$app->mount('/admin/task-manager', new TaskManager());
|
||||||
|
$app->mount('/admin/subdefs', new Subdefs());
|
||||||
|
$app->mount('/admin/description', new Description());
|
||||||
|
$app->mount('/admin/tests/connection', new ConnectionTest());
|
||||||
|
$app->mount('/admin/tests/pathurl', new PathFileTest());
|
||||||
|
|
||||||
|
$app->mount('/prod/query/', new Query());
|
||||||
|
$app->mount('/prod/order/', new Order());
|
||||||
|
$app->mount('/prod/baskets', new Basket());
|
||||||
|
$app->mount('/prod/story', new Story());
|
||||||
|
$app->mount('/prod/WorkZone', new WorkZone());
|
||||||
|
$app->mount('/prod/lists', new UsrLists());
|
||||||
|
$app->mount('/prod/MustacheLoader', new MustacheLoader());
|
||||||
|
$app->mount('/prod/records/edit', new Edit());
|
||||||
|
$app->mount('/prod/records/property', new Property());
|
||||||
|
$app->mount('/prod/records/movecollection', new MoveCollection());
|
||||||
|
$app->mount('/prod/bridge/', new Bridge());
|
||||||
|
$app->mount('/prod/push/', new Push());
|
||||||
|
$app->mount('/prod/printer/', new Printer());
|
||||||
|
$app->mount('/prod/share/', new Share());
|
||||||
|
$app->mount('/prod/export/', new Export());
|
||||||
|
$app->mount('/prod/TOU/', new TOU());
|
||||||
|
$app->mount('/prod/feeds', new Feed());
|
||||||
|
$app->mount('/prod/tooltip', new Tooltip());
|
||||||
|
$app->mount('/prod/language', new Language());
|
||||||
|
$app->mount('/prod/tools/', new Tools());
|
||||||
|
$app->mount('/prod/lazaret/', new Lazaret());
|
||||||
|
$app->mount('/prod/upload/', new Upload());
|
||||||
|
$app->mount('/prod/share/', new Share());
|
||||||
|
$app->mount('/prod/', new Prod());
|
||||||
|
|
||||||
|
$app->mount('/user/preferences/', new Preferences());
|
||||||
|
$app->mount('/user/notifications/', new Notifications());
|
||||||
|
|
||||||
|
$app->error(function(\Exception $e) use ($app) {
|
||||||
|
$request = $app['request'];
|
||||||
|
|
||||||
|
if ($e instanceof \Bridge_Exception) {
|
||||||
|
$params = array(
|
||||||
|
'message' => $e->getMessage()
|
||||||
|
, 'file' => $e->getFile()
|
||||||
|
, 'line' => $e->getLine()
|
||||||
|
, 'r_method' => $request->getMethod()
|
||||||
|
, 'r_action' => $request->getRequestUri()
|
||||||
|
, 'r_parameters' => ($request->getMethod() == 'GET' ? array() : $request->request->all())
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($e instanceof \Bridge_Exception_ApiConnectorNotConfigured) {
|
||||||
|
$params = array_merge($params, array('account' => $app['current_account']));
|
||||||
|
|
||||||
|
$response = new Response($app['twig']->render('/prod/actions/Bridge/notconfigured.html.twig', $params), 200, array('X-Status-Code' => 200));
|
||||||
|
} elseif ($e instanceof \Bridge_Exception_ApiConnectorNotConnected) {
|
||||||
|
$params = array_merge($params, array('account' => $app['current_account']));
|
||||||
|
|
||||||
|
$response = new Response($app['twig']->render('/prod/actions/Bridge/disconnected.html.twig', $params), 200, array('X-Status-Code' => 200));
|
||||||
|
} elseif ($e instanceof \Bridge_Exception_ApiConnectorAccessTokenFailed) {
|
||||||
|
$params = array_merge($params, array('account' => $app['current_account']));
|
||||||
|
|
||||||
|
$response = new Response($app['twig']->render('/prod/actions/Bridge/disconnected.html.twig', $params), 200, array('X-Status-Code' => 200));
|
||||||
|
} elseif ($e instanceof \Bridge_Exception_ApiDisabled) {
|
||||||
|
$params = array_merge($params, array('api' => $e->get_api()));
|
||||||
|
|
||||||
|
$response = new Response($app['twig']->render('/prod/actions/Bridge/deactivated.html.twig', $params), 200, array('X-Status-Code' => 200));
|
||||||
} else {
|
} else {
|
||||||
return $app->redirect("/login/?redirect=client");
|
$response = new Response($app['twig']->render('/prod/actions/Bridge/error.html.twig', $params), 200, array('X-Status-Code' => 200));
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$app->get('/robots.txt', function(PhraseaApplication $app) {
|
|
||||||
|
|
||||||
if ($app['phraseanet.registry']->get('GV_allow_search_engine') === true) {
|
|
||||||
$buffer = "User-Agent: *\n" . "Allow: /\n";
|
|
||||||
} else {
|
|
||||||
$buffer = "User-Agent: *\n" . "Disallow: /\n";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Response($buffer, 200, array('Content-Type' => 'text/plain'));
|
$response->headers->set('Phrasea-StatusCode', 200);
|
||||||
})->bind('robots');
|
|
||||||
|
|
||||||
$app->mount('/feeds/', new RSSFeeds());
|
return $response;
|
||||||
$app->mount('/account/', new Account());
|
}
|
||||||
$app->mount('/login/', new Login());
|
|
||||||
$app->mount('/developers/', new Developers());
|
|
||||||
$app->mount('/lightbox/', new Lightbox());
|
|
||||||
|
|
||||||
$app->mount('/datafiles/', new Datafiles());
|
if ($request->getRequestFormat() == 'json') {
|
||||||
$app->mount('/permalink/', new Permalink());
|
$datas = array(
|
||||||
|
'success' => false
|
||||||
|
, 'message' => $e->getMessage()
|
||||||
|
);
|
||||||
|
|
||||||
$app->mount('/admin/', new Root());
|
return $app->json($datas, 200, array('X-Status-Code' => 200));
|
||||||
$app->mount('/admin/dashboard', new Dashboard());
|
}
|
||||||
$app->mount('/admin/collection', new Collection());
|
|
||||||
$app->mount('/admin/databox', new Databox());
|
|
||||||
$app->mount('/admin/databoxes', new Databoxes());
|
|
||||||
$app->mount('/admin/setup', new Setup());
|
|
||||||
$app->mount('/admin/sphinx', new Sphinx());
|
|
||||||
$app->mount('/admin/connected-users', new ConnectedUsers());
|
|
||||||
$app->mount('/admin/publications', new Publications());
|
|
||||||
$app->mount('/admin/users', new Users());
|
|
||||||
$app->mount('/admin/fields', new Fields());
|
|
||||||
$app->mount('/admin/task-manager', new TaskManager());
|
|
||||||
$app->mount('/admin/subdefs', new Subdefs());
|
|
||||||
$app->mount('/admin/description', new Description());
|
|
||||||
$app->mount('/admin/tests/connection', new ConnectionTest());
|
|
||||||
$app->mount('/admin/tests/pathurl', new PathFileTest());
|
|
||||||
|
|
||||||
$app->mount('/prod/query/', new Query());
|
if ($e instanceof HttpExceptionInterface) {
|
||||||
$app->mount('/prod/order/', new Order());
|
$headers = $e->getHeaders();
|
||||||
$app->mount('/prod/baskets', new Basket());
|
|
||||||
$app->mount('/prod/story', new Story());
|
|
||||||
$app->mount('/prod/WorkZone', new WorkZone());
|
|
||||||
$app->mount('/prod/lists', new UsrLists());
|
|
||||||
$app->mount('/prod/MustacheLoader', new MustacheLoader());
|
|
||||||
$app->mount('/prod/records/edit', new Edit());
|
|
||||||
$app->mount('/prod/records/property', new Property());
|
|
||||||
$app->mount('/prod/records/movecollection', new MoveCollection());
|
|
||||||
$app->mount('/prod/bridge/', new Bridge());
|
|
||||||
$app->mount('/prod/push/', new Push());
|
|
||||||
$app->mount('/prod/printer/', new Printer());
|
|
||||||
$app->mount('/prod/share/', new Share());
|
|
||||||
$app->mount('/prod/export/', new Export());
|
|
||||||
$app->mount('/prod/TOU/', new TOU());
|
|
||||||
$app->mount('/prod/feeds', new Feed());
|
|
||||||
$app->mount('/prod/tooltip', new Tooltip());
|
|
||||||
$app->mount('/prod/language', new Language());
|
|
||||||
$app->mount('/prod/tools/', new Tools());
|
|
||||||
$app->mount('/prod/lazaret/', new Lazaret());
|
|
||||||
$app->mount('/prod/upload/', new Upload());
|
|
||||||
$app->mount('/prod/share/', new Share());
|
|
||||||
$app->mount('/prod/', new Prod());
|
|
||||||
|
|
||||||
$app->mount('/user/preferences/', new Preferences());
|
if (isset($headers['X-Phraseanet-Redirect'])) {
|
||||||
$app->mount('/user/notifications/', new Notifications());
|
return new RedirectResponse($headers['X-Phraseanet-Redirect'], 302, array('X-Status-Code' => 302));
|
||||||
|
|
||||||
$app->error(function(\Exception $e) use ($app) {
|
|
||||||
$request = $app['request'];
|
|
||||||
|
|
||||||
if ($e instanceof \Bridge_Exception) {
|
|
||||||
$params = array(
|
|
||||||
'message' => $e->getMessage()
|
|
||||||
, 'file' => $e->getFile()
|
|
||||||
, 'line' => $e->getLine()
|
|
||||||
, 'r_method' => $request->getMethod()
|
|
||||||
, 'r_action' => $request->getRequestUri()
|
|
||||||
, 'r_parameters' => ($request->getMethod() == 'GET' ? array() : $request->request->all())
|
|
||||||
);
|
|
||||||
|
|
||||||
if ($e instanceof \Bridge_Exception_ApiConnectorNotConfigured) {
|
|
||||||
$params = array_merge($params, array('account' => $app['current_account']));
|
|
||||||
|
|
||||||
$response = new Response($app['twig']->render('/prod/actions/Bridge/notconfigured.html.twig', $params), 200, array('X-Status-Code' => 200));
|
|
||||||
} elseif ($e instanceof \Bridge_Exception_ApiConnectorNotConnected) {
|
|
||||||
$params = array_merge($params, array('account' => $app['current_account']));
|
|
||||||
|
|
||||||
$response = new Response($app['twig']->render('/prod/actions/Bridge/disconnected.html.twig', $params), 200, array('X-Status-Code' => 200));
|
|
||||||
} elseif ($e instanceof \Bridge_Exception_ApiConnectorAccessTokenFailed) {
|
|
||||||
$params = array_merge($params, array('account' => $app['current_account']));
|
|
||||||
|
|
||||||
$response = new Response($app['twig']->render('/prod/actions/Bridge/disconnected.html.twig', $params), 200, array('X-Status-Code' => 200));
|
|
||||||
} elseif ($e instanceof \Bridge_Exception_ApiDisabled) {
|
|
||||||
$params = array_merge($params, array('api' => $e->get_api()));
|
|
||||||
|
|
||||||
$response = new Response($app['twig']->render('/prod/actions/Bridge/deactivated.html.twig', $params), 200, array('X-Status-Code' => 200));
|
|
||||||
} else {
|
|
||||||
$response = new Response($app['twig']->render('/prod/actions/Bridge/error.html.twig', $params), 200, array('X-Status-Code' => 200));
|
|
||||||
}
|
|
||||||
|
|
||||||
$response->headers->set('Phrasea-StatusCode', 200);
|
|
||||||
|
|
||||||
return $response;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($request->getRequestFormat() == 'json') {
|
if ($e instanceof \Exception_BadRequest) {
|
||||||
$datas = array(
|
return new Response('Bad Request', 400, array('X-Status-Code' => 400));
|
||||||
'success' => false
|
}
|
||||||
, 'message' => $e->getMessage()
|
if ($e instanceof \Exception_Forbidden) {
|
||||||
);
|
return new Response('Forbidden', 403, array('X-Status-Code' => 403));
|
||||||
|
}
|
||||||
|
|
||||||
return $app->json($datas, 200, array('X-Status-Code' => 200));
|
if ($e instanceof \Exception_Session_NotAuthenticated) {
|
||||||
}
|
$code = 403;
|
||||||
|
$message = 'Forbidden';
|
||||||
|
} elseif ($e instanceof \Exception_NotAllowed) {
|
||||||
|
$code = 403;
|
||||||
|
$message = 'Forbidden';
|
||||||
|
} elseif ($e instanceof \Exception_NotFound) {
|
||||||
|
$code = 404;
|
||||||
|
$message = 'Not Found';
|
||||||
|
} else {
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
|
||||||
if ($e instanceof HttpExceptionInterface) {
|
return new Response($message, $code, array('X-Status-Code' => $code));
|
||||||
$headers = $e->getHeaders();
|
});
|
||||||
|
|
||||||
if (isset($headers['X-Phraseanet-Redirect'])) {
|
return $app;
|
||||||
return new RedirectResponse($headers['X-Phraseanet-Redirect'], 302, array('X-Status-Code' => 302));
|
}, isset($environment) ? $environment : null);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($e instanceof \Exception_BadRequest) {
|
|
||||||
return new Response('Bad Request', 400, array('X-Status-Code' => 400));
|
|
||||||
}
|
|
||||||
if ($e instanceof \Exception_Forbidden) {
|
|
||||||
return new Response('Forbidden', 403, array('X-Status-Code' => 403));
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($e instanceof \Exception_Session_NotAuthenticated) {
|
|
||||||
$code = 403;
|
|
||||||
$message = 'Forbidden';
|
|
||||||
} elseif ($e instanceof \Exception_NotAllowed) {
|
|
||||||
$code = 403;
|
|
||||||
$message = 'Forbidden';
|
|
||||||
} elseif ($e instanceof \Exception_NotFound) {
|
|
||||||
$code = 404;
|
|
||||||
$message = 'Not Found';
|
|
||||||
} else {
|
|
||||||
throw $e;
|
|
||||||
}
|
|
||||||
|
|
||||||
return new Response($message, $code, array('X-Status-Code' => $code));
|
|
||||||
});
|
|
||||||
|
|
||||||
return $app;
|
|
||||||
}, isset($environment) ? $environment : null);
|
|
||||||
|
@@ -200,7 +200,7 @@ class Export implements ControllerProviderInterface
|
|||||||
|
|
||||||
return $app->json(array(
|
return $app->json(array(
|
||||||
'success' => false,
|
'success' => false,
|
||||||
'message' => _('Something went wrong') . $e->getMessage()
|
'message' => _('Something went wrong')
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -219,11 +219,14 @@ class Export implements ControllerProviderInterface
|
|||||||
session_write_close();
|
session_write_close();
|
||||||
ignore_user_abort(true);
|
ignore_user_abort(true);
|
||||||
|
|
||||||
|
$lst = $request->request->get('lst', '');
|
||||||
|
$ssttid = $request->request->get('ssttid', '');
|
||||||
|
|
||||||
//prepare export
|
//prepare export
|
||||||
$download = new \set_export($app, $request->get('lst', ''), $request->get('ssttid', ''));
|
$download = new \set_export($app, $lst, $ssttid);
|
||||||
$list = $download->prepare_export($app['phraseanet.user'], $app['filesystem'], $request->get('obj'), $request->get("type") == "title" ? : false, $request->get('businessfields'));
|
$list = $download->prepare_export($app['phraseanet.user'], $app['filesystem'], $request->request->get('obj'), $request->request->get("type") == "title" ? : false, $request->request->get('businessfields'));
|
||||||
$list['export_name'] = sprintf("%s.zip", $download->getExportName());
|
$list['export_name'] = sprintf("%s.zip", $download->getExportName());
|
||||||
$list['email'] = $request->get("destmail", "");
|
$list['email'] = $request->request->get("destmail", "");
|
||||||
|
|
||||||
$destMails = array();
|
$destMails = array();
|
||||||
//get destination mails
|
//get destination mails
|
||||||
@@ -233,8 +236,8 @@ class Export implements ControllerProviderInterface
|
|||||||
} else {
|
} else {
|
||||||
$app['events-manager']->trigger('__EXPORT_MAIL_FAIL__', array(
|
$app['events-manager']->trigger('__EXPORT_MAIL_FAIL__', array(
|
||||||
'usr_id' => $app['phraseanet.user']->get_id(),
|
'usr_id' => $app['phraseanet.user']->get_id(),
|
||||||
'lst' => $request->get('lst', ''),
|
'lst' => $lst,
|
||||||
'ssttid' => $request->get('ssttid', ''),
|
'ssttid' => $ssttid,
|
||||||
'dest' => $mail,
|
'dest' => $mail,
|
||||||
'reason' => \eventsmanager_notify_downloadmailfail::MAIL_NO_VALID
|
'reason' => \eventsmanager_notify_downloadmailfail::MAIL_NO_VALID
|
||||||
));
|
));
|
||||||
@@ -260,7 +263,7 @@ class Export implements ControllerProviderInterface
|
|||||||
|
|
||||||
//send mails
|
//send mails
|
||||||
foreach ($destMails as $key => $mail) {
|
foreach ($destMails as $key => $mail) {
|
||||||
if (\mail::send_documents($app, trim($mail), $url, $from, $endDateObject, $request->get('textmail'), $request->get('reading_confirm') == '1' ? : false)) {
|
if (\mail::send_documents($app, trim($mail), $url, $from, $endDateObject, $request->request->get('textmail'), $request->request->get('reading_confirm') == '1' ? : false)) {
|
||||||
unset($remaingEmails[$key]);
|
unset($remaingEmails[$key]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -270,8 +273,8 @@ class Export implements ControllerProviderInterface
|
|||||||
foreach ($remaingEmails as $mail) {
|
foreach ($remaingEmails as $mail) {
|
||||||
$app['events-manager']->trigger('__EXPORT_MAIL_FAIL__', array(
|
$app['events-manager']->trigger('__EXPORT_MAIL_FAIL__', array(
|
||||||
'usr_id' => $app['phraseanet.user']->get_id(),
|
'usr_id' => $app['phraseanet.user']->get_id(),
|
||||||
'lst' => $request->get('lst', ''),
|
'lst' => $lst,
|
||||||
'ssttid' => $request->get('ssttid', ''),
|
'ssttid' => $ssttid,
|
||||||
'dest' => $mail,
|
'dest' => $mail,
|
||||||
'reason' => \eventsmanager_notify_downloadmailfail::MAIL_FAIL
|
'reason' => \eventsmanager_notify_downloadmailfail::MAIL_FAIL
|
||||||
));
|
));
|
||||||
@@ -281,8 +284,8 @@ class Export implements ControllerProviderInterface
|
|||||||
foreach ($destMails as $mail) {
|
foreach ($destMails as $mail) {
|
||||||
$app['events-manager']->trigger('__EXPORT_MAIL_FAIL__', array(
|
$app['events-manager']->trigger('__EXPORT_MAIL_FAIL__', array(
|
||||||
'usr_id' => $app['phraseanet.user']->get_id(),
|
'usr_id' => $app['phraseanet.user']->get_id(),
|
||||||
'lst' => $request->get('lst', ''),
|
'lst' => $lst,
|
||||||
'ssttid' => $request->get('ssttid', ''),
|
'ssttid' => $ssttid,
|
||||||
'dest' => $mail,
|
'dest' => $mail,
|
||||||
'reason' => 0
|
'reason' => 0
|
||||||
));
|
));
|
||||||
|
@@ -101,7 +101,7 @@ class Query implements ControllerProviderInterface
|
|||||||
|
|
||||||
$options = new \searchEngine_options();
|
$options = new \searchEngine_options();
|
||||||
|
|
||||||
$bas = is_array($request->request->get('bas')) ? $request->request->get('bas') : array_keys($user->ACL()->get_granted_base());
|
$bas = is_array($request->request->get('bas')) ? $request->request->get('bas') : array_keys($app['phraseanet.user']->ACL()->get_granted_base());
|
||||||
|
|
||||||
if ($app['phraseanet.user']->ACL()->has_right('modifyrecord')) {
|
if ($app['phraseanet.user']->ACL()->has_right('modifyrecord')) {
|
||||||
$options->set_business_fields(array());
|
$options->set_business_fields(array());
|
||||||
@@ -279,7 +279,7 @@ class Query implements ControllerProviderInterface
|
|||||||
$searchEngine->set_options($options);
|
$searchEngine->set_options($options);
|
||||||
}
|
}
|
||||||
|
|
||||||
$pos = $request->request->get('pos');
|
$pos = (int) $request->request->get('pos');
|
||||||
$query = $request->request->get('query', '');
|
$query = $request->request->get('query', '');
|
||||||
|
|
||||||
$record = new \record_preview($app, 'RESULT', $pos, '', '', $searchEngine, $query);
|
$record = new \record_preview($app, 'RESULT', $pos, '', '', $searchEngine, $query);
|
||||||
|
@@ -34,10 +34,7 @@ class Property implements ControllerProviderInterface
|
|||||||
$controllers = $app['controllers_factory'];
|
$controllers = $app['controllers_factory'];
|
||||||
|
|
||||||
$controllers->before(function(Request $request) use ($app) {
|
$controllers->before(function(Request $request) use ($app) {
|
||||||
$response = $app['firewall']->requireNotGuest();
|
$app['firewall']->requireNotGuest();
|
||||||
if ($response instanceof Response) {
|
|
||||||
return $response;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
182
lib/Alchemy/Phrasea/Controller/Prod/Records.php
Normal file
182
lib/Alchemy/Phrasea/Controller/Prod/Records.php
Normal file
@@ -0,0 +1,182 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of Phraseanet
|
||||||
|
*
|
||||||
|
* (c) 2005-2012 Alchemy
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Alchemy\Phrasea\Controller\Prod\Records;
|
||||||
|
|
||||||
|
use Alchemy\Phrasea\Controller\RecordsRequest;
|
||||||
|
use Silex\Application;
|
||||||
|
use Silex\ControllerProviderInterface;
|
||||||
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||||
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @license http://opensource.org/licenses/gpl-3.0 GPLv3
|
||||||
|
* @link www.phraseanet.com
|
||||||
|
*/
|
||||||
|
class Deletion implements ControllerProviderInterface
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public function connect(Application $app)
|
||||||
|
{
|
||||||
|
$controllers = $app['controllers_factory'];
|
||||||
|
$controllers->before(function(Request $request) use ($app) {
|
||||||
|
$response = $app['firewall']->requireNotGuest();
|
||||||
|
if ($response instanceof Response) {
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete a record or a list of records
|
||||||
|
*
|
||||||
|
* name : record_delete
|
||||||
|
*
|
||||||
|
* description : Delete a record or a list of records
|
||||||
|
*
|
||||||
|
* method : POST
|
||||||
|
*
|
||||||
|
* parameters : none
|
||||||
|
*
|
||||||
|
* return : JSON Response
|
||||||
|
*/
|
||||||
|
$controllers->post('/', $this->call('deleteRecord'))
|
||||||
|
->bind('record_delete');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verify if I can delete records
|
||||||
|
*
|
||||||
|
* name : record_what_can_i_delete
|
||||||
|
*
|
||||||
|
* description : Save CSS preferences
|
||||||
|
*
|
||||||
|
* method : POST
|
||||||
|
*
|
||||||
|
* parameters : none
|
||||||
|
*
|
||||||
|
* return : JSON Response
|
||||||
|
*/
|
||||||
|
$controllers->get('/', $this->call('whatCanIDelete'))
|
||||||
|
->bind('record_what_can_i_delete');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Renew a record URL
|
||||||
|
*
|
||||||
|
* name : record_renew_url
|
||||||
|
*
|
||||||
|
* description : Renew a record URL
|
||||||
|
*
|
||||||
|
* method : POST
|
||||||
|
*
|
||||||
|
* parameters : none
|
||||||
|
*
|
||||||
|
* return : JSON Response
|
||||||
|
*/
|
||||||
|
$controllers->post('/renew-url/', $this->call('renewUrl'))
|
||||||
|
->bind('record_renew_url');
|
||||||
|
|
||||||
|
return $controllers;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete a record or a list of records
|
||||||
|
*
|
||||||
|
* @param Application $app
|
||||||
|
* @param Request $request
|
||||||
|
* @return HtmlResponse
|
||||||
|
*/
|
||||||
|
public function deleteRecord(Application $app, Request $request)
|
||||||
|
{
|
||||||
|
$records = RecordsRequest::fromRequest($app, $request, !!$app->request->get('del_children'), array(
|
||||||
|
'candeleterecord'
|
||||||
|
));
|
||||||
|
|
||||||
|
$basketElementsRepository = $app['EM']->getRepository('\Entities\BasketElement');
|
||||||
|
$deleted = array();
|
||||||
|
|
||||||
|
foreach ($records as $record) {
|
||||||
|
try {
|
||||||
|
$basketElements = $basketElementsRepository->findElementsByRecord($record);
|
||||||
|
|
||||||
|
foreach ($basketElements as $element) {
|
||||||
|
$app['EM']->remove($element);
|
||||||
|
$deleted[] = $element->getRecord($app)->get_serialize_key();
|
||||||
|
}
|
||||||
|
|
||||||
|
$record->delete();
|
||||||
|
$deleted[] = $record->get_serialize_key();
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$app['EM']->flush();
|
||||||
|
|
||||||
|
return $app->json($deleted);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete a record or a list of records
|
||||||
|
*
|
||||||
|
* @param Application $app
|
||||||
|
* @param Request $request
|
||||||
|
* @return JsonResponse
|
||||||
|
*/
|
||||||
|
public function whatICanDelete(Application $app, Request $request)
|
||||||
|
{
|
||||||
|
$records = RecordsRequest::fromRequest($app, $request, !!$app->request->get('del_children'), array(
|
||||||
|
'candeleterecord'
|
||||||
|
));
|
||||||
|
|
||||||
|
return $app['twig']->render('prod/actions/delete_records_confirm.html.twig', array(
|
||||||
|
'lst' => explode(';', $records->serializedList()),
|
||||||
|
'groupings' => $records->stories()->count(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Renew url list of records
|
||||||
|
*
|
||||||
|
* @param Application $app
|
||||||
|
* @param Request $request
|
||||||
|
* @param integer $databox_id
|
||||||
|
* @param integer $record_id
|
||||||
|
* @return JsonResponse
|
||||||
|
*/
|
||||||
|
public function renewUrl(Application $app, Request $request)
|
||||||
|
{
|
||||||
|
$records = RecordsRequest::fromRequest($app, $request, !!$app->request->get('renew_children_url'));
|
||||||
|
|
||||||
|
$renewed = array();
|
||||||
|
foreach ($records as $record) {
|
||||||
|
$renewed[] = array(
|
||||||
|
$record->get_serialized_key() => $record->get_preview()->renew_url(),
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
return $app->json($renewed);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prefix the method to call with the controller class name
|
||||||
|
*
|
||||||
|
* @param string $method The method to call
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
private function call($method)
|
||||||
|
{
|
||||||
|
return sprintf('%s::%s', __CLASS__, $method);
|
||||||
|
}
|
||||||
|
}
|
@@ -82,12 +82,12 @@ class Notifications implements ControllerProviderInterface
|
|||||||
if (!$request->isXmlHttpRequest()) {
|
if (!$request->isXmlHttpRequest()) {
|
||||||
$app->abort(400);
|
$app->abort(400);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$app['events-manager']->read(explode('_', (string) $request->request->get('notifications')), $app['phraseanet.user']->get_id());
|
$app['events-manager']->read(explode('_', (string) $request->request->get('notifications')), $app['phraseanet.user']->get_id());
|
||||||
|
|
||||||
return $app->json(array('success' => true, 'message' => ''));
|
return $app->json(array('success' => true, 'message' => ''));
|
||||||
} catch (Exception $e) {
|
} catch (\Exception $e) {
|
||||||
|
|
||||||
return $app->json(array('success' => false, 'message' => $e->getMessage()));
|
return $app->json(array('success' => false, 'message' => $e->getMessage()));
|
||||||
}
|
}
|
||||||
|
@@ -16,11 +16,6 @@ use Silex\ControllerProviderInterface;
|
|||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @license http://opensource.org/licenses/gpl-3.0 GPLv3
|
|
||||||
* @link www.phraseanet.com
|
|
||||||
*/
|
|
||||||
class Preferences implements ControllerProviderInterface
|
class Preferences implements ControllerProviderInterface
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -85,13 +80,15 @@ class Preferences implements ControllerProviderInterface
|
|||||||
$prop = $request->request->get('prop');
|
$prop = $request->request->get('prop');
|
||||||
$value = $request->request->get('value');
|
$value = $request->request->get('value');
|
||||||
$success = false;
|
$success = false;
|
||||||
|
$msg = _('Error while saving preference');
|
||||||
|
|
||||||
if ($prop && $value) {
|
if ($prop && $value) {
|
||||||
$app['session']->set('pref.' . $prop, $value);
|
$app['session']->set('pref.' . $prop, $value);
|
||||||
$success = true;
|
$success = true;
|
||||||
|
$msg = _('Preference saved !');
|
||||||
}
|
}
|
||||||
|
|
||||||
return new JsonResponse(array('success' => $success));
|
return new JsonResponse(array('success' => $success, 'message' => $msg));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1,79 +1,76 @@
|
|||||||
{% set preview = record.get_preview()%}
|
{% set preview = record.get_preview()%}
|
||||||
{% set permalink = preview.get_permalink() %}
|
|
||||||
|
|
||||||
{% if preview is iterable %}
|
{% if preview is iterable %}
|
||||||
<p>{% trans 'No preview available.' %}</p>
|
<p>{% trans 'No preview available.' %}</p>
|
||||||
{% elseif permalink is none %}
|
{% elseif preview.get_permalink() is none %}
|
||||||
<p>{% trans 'No permalink available.' %}</p>
|
<p>{% trans 'No permalink available.' %}</p>
|
||||||
{% else %}
|
{% else %}
|
||||||
{% set type = record.get_type() %}
|
{% set type = record.get_type() %}
|
||||||
{% set url = permalink.get_url() %}
|
{% set url = preview.get_permalink().get_url() %}
|
||||||
<div id="tabs">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<a href="#share">{% trans 'reponses:: partager' %}</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<div id="share">
|
|
||||||
|
|
||||||
<div class="boxCloser" onclick="parent.hideDwnl();">{% trans 'boutton::fermer' %} ?></div>
|
{% if url is not empty %}
|
||||||
<div id="tweet">
|
<div id="tabs">
|
||||||
<div style="margin-left:20px;padding:10px 0 5px;"><a href="http://www.twitter.com/home/?status={{ url|url_encode }}view/" target="_blank"><img src="/skins/icons/twitter.ico" title="share this on twitter" style="vertical-align:middle;padding:0 5px;"/> Send to Twitter</a></div>
|
<ul>
|
||||||
<div style="margin-left:20px;padding:5px 0 10px;"><a href="http://www.facebook.com/sharer.php?u={{ url|url_encode }}view/" target="_blank"><img src="/skins/icons/facebook.ico" title="share on facebook" style="vertical-align:middle;padding:0 5px;"/> Send to Facebook</a></div>
|
<li>
|
||||||
</div>
|
<a href="#share">{% trans 'reponses:: partager' %}</a>
|
||||||
<div id="embed" style="text-align:center;padding:10px 0;">
|
</li>
|
||||||
<div style="text-align:left;margin-left:20px;padding:10px 0;">URL : </div>
|
</ul>
|
||||||
{% if url is not empty %}
|
<div id="share">
|
||||||
<input style="width:90%;" readonly="true" type="text" value="{{ url|url_encode }}view/" onfocus="this.focus();this.select();" onclick="this.focus();this.select();" />
|
<div id="tweet">
|
||||||
<div style="text-align:left;margin-left:20px;padding:10px 0;">Embed :</div>
|
<div style="margin-left:20px;padding:10px 0 5px;"><a href="http://www.twitter.com/home/?status={{ url|url_encode }}view/" target="_blank"><img src="/skins/icons/twitter.ico" title="share this on twitter" style="vertical-align:middle;padding:0 5px;"/> Send to Twitter</a></div>
|
||||||
<textarea onfocus="this.focus();this.select();" onclick="this.focus();this.select();" style="width:90%;height:50px;" readonly="true" >
|
<div style="margin-left:20px;padding:5px 0 10px;"><a href="http://www.facebook.com/sharer.php?u={{ url|url_encode }}view/" target="_blank"><img src="/skins/icons/facebook.ico" title="share on facebook" style="vertical-align:middle;padding:0 5px;"/> Send to Facebook</a></div>
|
||||||
{% if type == 'video' %}
|
</div>
|
||||||
<object width="100%" height="100%" type="application/x-shockwave-flash" data="{{ app['phraseanet.registry'].get('GV_ServerName')}}include/jslibs/flowplayer/flowplayer-3.2.12.swf">
|
<div id="embed" style="text-align:center;padding:10px 0;">
|
||||||
<param value="true" name="allowfullscreen">
|
<div style="text-align:left;margin-left:20px;padding:10px 0;">URL : </div>
|
||||||
<param value="always" name="allowscriptaccess">
|
|
||||||
<param value="high" name="quality">
|
|
||||||
<param value="false" name="cachebusting">
|
|
||||||
<param value="#000000" name="bgcolor">
|
|
||||||
<param value="config={"clip":{"url":"{{ url|url_encode }}"},"playlist":[{"url":"{{ url|url_encode }}"}]}" name="flashvars">
|
|
||||||
</object>
|
|
||||||
{% elseif type == 'document' %}
|
|
||||||
<object width="600" height="500" type="application/x-shockwave-flash" data="{{app['phraseanet.registry'].get('GV_ServerName')}}include/FlexPaper_flash/FlexPaperViewer.swf" style="visibility: visible; width: 600px; height: 500px; top: 0px;">
|
|
||||||
<param name="menu" value="false">
|
|
||||||
<param name="flashvars" value="SwfFile={{ url|url_encode }}&Scale=0.6&ZoomTransition=easeOut&ZoomTime=0.5&ZoomInterval=0.1&FitPageOnLoad=true&FitWidthOnLoad=true&PrintEnabled=false&FullScreenAsMaxWindow=false&localeChain={{ app['locale'] }}">
|
|
||||||
<param name="allowFullScreen" value="true">
|
|
||||||
<param name="wmode" value="transparent">
|
|
||||||
</object>
|
|
||||||
{% elseif type == 'audio' %}
|
|
||||||
<object width="290" height="24" data="{{ app['phraseanet.registry'].get('GV_ServerName') }}include/jslibs/audio-player/player.swf" type="application/x-shockwave-flash">
|
|
||||||
<param value="{{ app['phraseanet.registry'].get('GV_ServerName') }}include/jslibs/audio-player/player.swf" name="movie"/>
|
|
||||||
<param value="playerID=1&autostart=yes&soundFile={{ url|url_encode }}" name="FlashVars"/>
|
|
||||||
<param value="high" name="quality"/>
|
|
||||||
<param value="false" name="menu"/>
|
|
||||||
</object>
|
|
||||||
{% else %}
|
|
||||||
<a href="{{ url|url_encode }}view/"><img src="{{ url|url_encode }}" title="" /></a>
|
|
||||||
{% endif %}
|
|
||||||
</textarea>
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
<div><{% trans 'Aucune URL disponible' %}</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<div style="text-align:center;padding:20px 0;">
|
<input style="width:90%;" readonly="true" type="text" value="{{ url|url_encode }}view/" onfocus="this.focus();this.select();" onclick="this.focus();this.select();" />
|
||||||
<input class="input-button" type="button" value="{% trans 'boutton::fermer' %}" onclick="parent.hideDwnl();" />
|
<div style="text-align:left;margin-left:20px;padding:10px 0;">Embed :</div>
|
||||||
|
<textarea onfocus="this.focus();this.select();" onclick="this.focus();this.select();" style="width:90%;height:50px;" readonly="true" >
|
||||||
|
{% if type == 'video' %}
|
||||||
|
<object width="100%" height="100%" type="application/x-shockwave-flash" data="{{ app['phraseanet.registry'].get('GV_ServerName')}}include/jslibs/flowplayer/flowplayer-3.2.12.swf">
|
||||||
|
<param value="true" name="allowfullscreen">
|
||||||
|
<param value="always" name="allowscriptaccess">
|
||||||
|
<param value="high" name="quality">
|
||||||
|
<param value="false" name="cachebusting">
|
||||||
|
<param value="#000000" name="bgcolor">
|
||||||
|
<param value="config={"clip":{"url":"{{ url|url_encode }}"},"playlist":[{"url":"{{ url|url_encode }}"}]}" name="flashvars">
|
||||||
|
</object>
|
||||||
|
{% elseif type == 'document' %}
|
||||||
|
<object width="600" height="500" type="application/x-shockwave-flash" data="{{app['phraseanet.registry'].get('GV_ServerName')}}include/FlexPaper_flash/FlexPaperViewer.swf" style="visibility: visible; width: 600px; height: 500px; top: 0px;">
|
||||||
|
<param name="menu" value="false">
|
||||||
|
<param name="flashvars" value="SwfFile={{ url|url_encode }}&Scale=0.6&ZoomTransition=easeOut&ZoomTime=0.5&ZoomInterval=0.1&FitPageOnLoad=true&FitWidthOnLoad=true&PrintEnabled=false&FullScreenAsMaxWindow=false&localeChain={{ app['locale'] }}">
|
||||||
|
<param name="allowFullScreen" value="true">
|
||||||
|
<param name="wmode" value="transparent">
|
||||||
|
</object>
|
||||||
|
{% elseif type == 'audio' %}
|
||||||
|
<object width="290" height="24" data="{{ app['phraseanet.registry'].get('GV_ServerName') }}include/jslibs/audio-player/player.swf" type="application/x-shockwave-flash">
|
||||||
|
<param value="{{ app['phraseanet.registry'].get('GV_ServerName') }}include/jslibs/audio-player/player.swf" name="movie"/>
|
||||||
|
<param value="playerID=1&autostart=yes&soundFile={{ url|url_encode }}" name="FlashVars"/>
|
||||||
|
<param value="high" name="quality"/>
|
||||||
|
<param value="false" name="menu"/>
|
||||||
|
</object>
|
||||||
|
{% else %}
|
||||||
|
<a href="{{ url|url_encode }}view/"><img src="{{ url|url_encode }}" title="" /></a>
|
||||||
|
{% endif %}
|
||||||
|
</textarea>
|
||||||
|
</div>
|
||||||
|
<div style="text-align:center;padding:20px 0;">
|
||||||
|
<input class="input-button" type="button" value="{% trans 'boutton::fermer' %}" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<script language="javascript">
|
<script language="javascript">
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
$('#tabs').tabs();
|
$('#tabs').tabs();
|
||||||
$('input.ui-state-default').hover(
|
$('input.ui-state-default').hover(
|
||||||
function(){$(this).addClass('ui-state-hover')},
|
function(){$(this).addClass('ui-state-hover')},
|
||||||
function(){$(this).removeClass('ui-state-hover')}
|
function(){$(this).removeClass('ui-state-hover')}
|
||||||
);
|
);
|
||||||
|
});
|
||||||
});
|
</script>
|
||||||
</script>
|
{% else %}
|
||||||
|
<div><{% trans 'Aucune URL disponible' %}</div>
|
||||||
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
@@ -14,11 +14,11 @@ class QueryTest extends \PhraseanetWebTestCaseAuthenticatedAbstract
|
|||||||
*/
|
*/
|
||||||
public function testQueryAnswerTrain()
|
public function testQueryAnswerTrain()
|
||||||
{
|
{
|
||||||
$this->markTestSkipped('Unable to create phrasea session');
|
// $this->markTestSkipped('Unable to create phrasea session');
|
||||||
|
|
||||||
//populate phrasea_session
|
//populate phrasea_session
|
||||||
$auth = new \Session_Authentication_None(self::$DI['user']);
|
// $auth = new \Session_Authentication_None(self::$DI['user']);
|
||||||
self::$DI['app']->openAccount($auth);
|
// self::$DI['app']->openAccount($auth);
|
||||||
|
|
||||||
$query = new Query();
|
$query = new Query();
|
||||||
$options = new \searchEngine_options();
|
$options = new \searchEngine_options();
|
||||||
|
@@ -273,7 +273,6 @@ class ControllerRssFeedTest extends \PhraseanetWebTestCaseAbstract
|
|||||||
|
|
||||||
public function testGetFeedFormat()
|
public function testGetFeedFormat()
|
||||||
{
|
{
|
||||||
$this->markTestSkipped('');
|
|
||||||
$feeds = Feed_Collection::load_public_feeds(self::$DI['app']);
|
$feeds = Feed_Collection::load_public_feeds(self::$DI['app']);
|
||||||
$all_feeds = $feeds->get_feeds();
|
$all_feeds = $feeds->get_feeds();
|
||||||
$feed = array_shift($all_feeds);
|
$feed = array_shift($all_feeds);
|
||||||
|
@@ -109,36 +109,36 @@ abstract class PhraseanetPHPUnitAbstract extends WebTestCase
|
|||||||
|
|
||||||
|
|
||||||
self::$DI['app'] = self::$DI->share(function($DI) {
|
self::$DI['app'] = self::$DI->share(function($DI) {
|
||||||
$environment = 'test';
|
$environment = 'test';
|
||||||
$app = require __DIR__ . '/../lib/Alchemy/Phrasea/Application/Root.php';
|
$app = require __DIR__ . '/../lib/Alchemy/Phrasea/Application/Root.php';
|
||||||
|
|
||||||
$app['debug'] = true;
|
$app['debug'] = true;
|
||||||
|
|
||||||
if (!$DI['app.use-exception-handler']) {
|
if (!$DI['app.use-exception-handler']) {
|
||||||
unset($app['exception_handler']);
|
unset($app['exception_handler']);
|
||||||
}
|
}
|
||||||
|
|
||||||
$app['EM'] = $app->share($app->extend('EM', function($em) {
|
$app['EM'] = $app->share($app->extend('EM', function($em) {
|
||||||
@unlink('/tmp/db.sqlite');
|
@unlink('/tmp/db.sqlite');
|
||||||
copy(__DIR__ . '/db-ref.sqlite', '/tmp/db.sqlite');
|
copy(__DIR__ . '/db-ref.sqlite', '/tmp/db.sqlite');
|
||||||
|
|
||||||
return $em;
|
return $em;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
||||||
$app['browser'] = $app->share($app->extend('browser', function($browser) {
|
$app['browser'] = $app->share($app->extend('browser', function($browser) {
|
||||||
|
|
||||||
$browser->setUserAgent(PhraseanetPHPUnitAbstract::USER_AGENT_FIREFOX8MAC);
|
$browser->setUserAgent(PhraseanetPHPUnitAbstract::USER_AGENT_FIREFOX8MAC);
|
||||||
return $browser;
|
return $browser;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
return $app;
|
return $app;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
self::$DI['client'] = self::$DI->share(function($DI) {
|
self::$DI['client'] = self::$DI->share(function($DI) {
|
||||||
return new Client($DI['app'], array());
|
return new Client($DI['app'], array());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public function tearDown()
|
public function tearDown()
|
||||||
@@ -177,8 +177,8 @@ abstract class PhraseanetPHPUnitAbstract extends WebTestCase
|
|||||||
$executor = new Doctrine\Common\DataFixtures\Executor\ORMExecutor(self::$DI['app']['EM'], $purger);
|
$executor = new Doctrine\Common\DataFixtures\Executor\ORMExecutor(self::$DI['app']['EM'], $purger);
|
||||||
$executor->execute($fixtureLoader->getFixtures(), $append);
|
$executor->execute($fixtureLoader->getFixtures(), $append);
|
||||||
self::$DI['client'] = self::$DI->share(function($DI) {
|
self::$DI['client'] = self::$DI->share(function($DI) {
|
||||||
return new Client($DI['app'], array());
|
return new Client($DI['app'], array());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -203,8 +203,8 @@ abstract class PhraseanetPHPUnitAbstract extends WebTestCase
|
|||||||
$app->register(new \Silex\Provider\TwigServiceProvider());
|
$app->register(new \Silex\Provider\TwigServiceProvider());
|
||||||
$app->setupTwig();
|
$app->setupTwig();
|
||||||
self::$DI['client'] = self::$DI->share(function($DI) use($app) {
|
self::$DI['client'] = self::$DI->share(function($DI) use($app) {
|
||||||
return new Client($app, array());
|
return new Client($app, array());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -549,50 +549,50 @@ abstract class PhraseanetPHPUnitAbstract extends WebTestCase
|
|||||||
private static function createSetOfUserTests(Application $application)
|
private static function createSetOfUserTests(Application $application)
|
||||||
{
|
{
|
||||||
self::$DI['user'] = self::$DI->share(function ($DI) use ($application) {
|
self::$DI['user'] = self::$DI->share(function ($DI) use ($application) {
|
||||||
$usr_id = User_Adapter::get_usr_id_from_login($application, 'test_phpunit');
|
$usr_id = User_Adapter::get_usr_id_from_login($application, 'test_phpunit');
|
||||||
|
|
||||||
if (!$usr_id) {
|
if (!$usr_id) {
|
||||||
$user = User_Adapter::create($application, 'test_phpunit', random::generatePassword(), 'noone@example.com', false);
|
$user = User_Adapter::create($application, 'test_phpunit', random::generatePassword(), 'noone@example.com', false);
|
||||||
$usr_id = $user->get_id();
|
$usr_id = $user->get_id();
|
||||||
}
|
}
|
||||||
|
|
||||||
$user = User_Adapter::getInstance($usr_id, $application);
|
$user = User_Adapter::getInstance($usr_id, $application);
|
||||||
|
|
||||||
return $user;
|
return $user;
|
||||||
});
|
});
|
||||||
|
|
||||||
self::$DI['user_notAdmin'] = self::$DI->share(function () use ($application) {
|
self::$DI['user_notAdmin'] = self::$DI->share(function () use ($application) {
|
||||||
$usr_id = User_Adapter::get_usr_id_from_login($application, 'test_phpunit_not_admin');
|
$usr_id = User_Adapter::get_usr_id_from_login($application, 'test_phpunit_not_admin');
|
||||||
|
|
||||||
if (!$usr_id) {
|
if (!$usr_id) {
|
||||||
$user = User_Adapter::create($application, 'test_phpunit_not_admin', random::generatePassword(), 'noone_not_admin@example.com', false);
|
$user = User_Adapter::create($application, 'test_phpunit_not_admin', random::generatePassword(), 'noone_not_admin@example.com', false);
|
||||||
$usr_id = $user->get_id();
|
$usr_id = $user->get_id();
|
||||||
}
|
}
|
||||||
|
|
||||||
return User_Adapter::getInstance($usr_id, $application);
|
return User_Adapter::getInstance($usr_id, $application);
|
||||||
});
|
});
|
||||||
|
|
||||||
self::$DI['user_alt1'] = self::$DI->share(function () use ($application) {
|
self::$DI['user_alt1'] = self::$DI->share(function () use ($application) {
|
||||||
$usr_id = User_Adapter::get_usr_id_from_login($application, 'test_phpunit_alt1');
|
$usr_id = User_Adapter::get_usr_id_from_login($application, 'test_phpunit_alt1');
|
||||||
|
|
||||||
if (!$usr_id) {
|
if (!$usr_id) {
|
||||||
$user = User_Adapter::create($application, 'test_phpunit_alt1', random::generatePassword(), 'noonealt1@example.com', false);
|
$user = User_Adapter::create($application, 'test_phpunit_alt1', random::generatePassword(), 'noonealt1@example.com', false);
|
||||||
$usr_id = $user->get_id();
|
$usr_id = $user->get_id();
|
||||||
}
|
}
|
||||||
|
|
||||||
return User_Adapter::getInstance($usr_id, $application);
|
return User_Adapter::getInstance($usr_id, $application);
|
||||||
});
|
});
|
||||||
|
|
||||||
self::$DI['user_alt2'] = self::$DI->share(function () use ($application) {
|
self::$DI['user_alt2'] = self::$DI->share(function () use ($application) {
|
||||||
$usr_id = User_Adapter::get_usr_id_from_login($application, 'test_phpunit_alt2');
|
$usr_id = User_Adapter::get_usr_id_from_login($application, 'test_phpunit_alt2');
|
||||||
|
|
||||||
if (!$usr_id) {
|
if (!$usr_id) {
|
||||||
$user = User_Adapter::create($application, 'test_phpunit_alt2', random::generatePassword(), 'noonealt2@example.com', false);
|
$user = User_Adapter::create($application, 'test_phpunit_alt2', random::generatePassword(), 'noonealt2@example.com', false);
|
||||||
$usr_id = $user->get_id();
|
$usr_id = $user->get_id();
|
||||||
}
|
}
|
||||||
|
|
||||||
return User_Adapter::getInstance($usr_id, $application);
|
return User_Adapter::getInstance($usr_id, $application);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -683,41 +683,40 @@ abstract class PhraseanetPHPUnitAbstract extends WebTestCase
|
|||||||
self::$DI['collection'] = $coll;
|
self::$DI['collection'] = $coll;
|
||||||
|
|
||||||
self::$DI['collection_no_access'] = self::$DI->share(function($DI) use ($application, $databox, $collection_no_acces) {
|
self::$DI['collection_no_access'] = self::$DI->share(function($DI) use ($application, $databox, $collection_no_acces) {
|
||||||
if (!$collection_no_acces instanceof collection) {
|
if (!$collection_no_acces instanceof collection) {
|
||||||
$collection_no_acces = collection::create($application, $databox, $application['phraseanet.appbox'], 'BIBOO', $DI['user']);
|
$collection_no_acces = collection::create($application, $databox, $application['phraseanet.appbox'], 'BIBOO', $DI['user']);
|
||||||
}
|
}
|
||||||
|
|
||||||
$DI['user'] = $DI->share(
|
$DI['user'] = $DI->share(
|
||||||
$DI->extend('user', function ($user, $DI) use ($collection_no_acces) {
|
$DI->extend('user', function ($user, $DI) use ($collection_no_acces) {
|
||||||
$user->ACL()->revoke_access_from_bases(array($collection_no_acces->get_base_id()));
|
$user->ACL()->revoke_access_from_bases(array($collection_no_acces->get_base_id()));
|
||||||
$DI['client'] = new Client($DI['app'], array());
|
$DI['client'] = new Client($DI['app'], array());
|
||||||
return $user;
|
return $user;
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
$DI['user'];
|
$DI['user'];
|
||||||
|
|
||||||
return $collection_no_acces;
|
return $collection_no_acces;
|
||||||
});
|
});
|
||||||
|
|
||||||
self::$DI['collection_no_access_by_status'] = self::$DI->share(function($DI) use ($application, $databox, $collection_no_acces_by_status) {
|
self::$DI['collection_no_access_by_status'] = self::$DI->share(function($DI) use ($application, $databox, $collection_no_acces_by_status) {
|
||||||
if (!$collection_no_acces_by_status instanceof collection) {
|
if (!$collection_no_acces_by_status instanceof collection) {
|
||||||
$collection_no_acces_by_status = collection::create($application, $databox, $application['phraseanet.appbox'], 'BIBOONOACCESBYSTATUS', $DI['user']);
|
$collection_no_acces_by_status = collection::create($application, $databox, $application['phraseanet.appbox'], 'BIBOONOACCESBYSTATUS', $DI['user']);
|
||||||
}
|
}
|
||||||
|
|
||||||
$DI['user'] = $DI->share(
|
$DI['user'] = $DI->share(
|
||||||
$DI->extend('user', function ($user, $DI) use ($collection_no_acces_by_status) {
|
$DI->extend('user', function ($user, $DI) use ($collection_no_acces_by_status) {
|
||||||
$user->ACL()->set_masks_on_base($collection_no_acces_by_status->get_base_id(), '0000000000000000000000000000000000000000000000000001000000000000', '0000000000000000000000000000000000000000000000000001000000000000', '0000000000000000000000000000000000000000000000000001000000000000', '0000000000000000000000000000000000000000000000000001000000000000');
|
$user->ACL()->set_masks_on_base($collection_no_acces_by_status->get_base_id(), '0000000000000000000000000000000000000000000000000001000000000000', '0000000000000000000000000000000000000000000000000001000000000000', '0000000000000000000000000000000000000000000000000001000000000000', '0000000000000000000000000000000000000000000000000001000000000000');
|
||||||
$DI['client'] = new Client($DI['app'], array());
|
$DI['client'] = new Client($DI['app'], array());
|
||||||
return $user;
|
return $user;
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
$DI['user'];
|
$DI['user'];
|
||||||
|
|
||||||
return $collection_no_acces_by_status;
|
|
||||||
});
|
|
||||||
|
|
||||||
|
return $collection_no_acces_by_status;
|
||||||
|
});
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -734,74 +733,75 @@ abstract class PhraseanetPHPUnitAbstract extends WebTestCase
|
|||||||
self::$recordsInitialized = array();
|
self::$recordsInitialized = array();
|
||||||
|
|
||||||
$resolvePathfile = function($i) {
|
$resolvePathfile = function($i) {
|
||||||
$finder = new Symfony\Component\Finder\Finder();
|
$finder = new Symfony\Component\Finder\Finder();
|
||||||
|
|
||||||
$name = $i < 10 ? 'test00' . $i . '.*' : 'test0' . $i . '.*';
|
$name = $i < 10 ? 'test00' . $i . '.*' : 'test0' . $i . '.*';
|
||||||
|
|
||||||
$finder->name($name)->in(__DIR__ . '/testfiles/');
|
$finder->name($name)->in(__DIR__ . '/testfiles/');
|
||||||
|
|
||||||
foreach ($finder as $file) {
|
foreach ($finder as $file) {
|
||||||
return $file;
|
return $file;
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new Exception(sprintf('File %d not found', $i));
|
throw new Exception(sprintf('File %d not found', $i));
|
||||||
};
|
};
|
||||||
|
|
||||||
foreach (range(1, 24) as $i) {
|
foreach (range(1, 24) as $i) {
|
||||||
self::$DI['record_' . $i] = self::$DI->share(function($DI) use ($logger, $resolvePathfile, $i) {
|
self::$DI['record_' . $i] = self::$DI->share(function($DI) use ($logger, $resolvePathfile, $i) {
|
||||||
|
|
||||||
PhraseanetPHPUnitAbstract::$recordsInitialized[] = $i;
|
PhraseanetPHPUnitAbstract::$recordsInitialized[] = $i;
|
||||||
|
|
||||||
$file = new File($DI['app'], $DI['app']['mediavorus']->guess($resolvePathfile($i)->getPathname()), $DI['collection']);
|
$file = new File($DI['app'], $DI['app']['mediavorus']->guess($resolvePathfile($i)->getPathname()), $DI['collection']);
|
||||||
|
|
||||||
$record = record_adapter::createFromFile($file, $DI['app']);
|
$record = record_adapter::createFromFile($file, $DI['app']);
|
||||||
|
|
||||||
$record->generate_subdefs($record->get_databox(), $DI['app']);
|
$record->generate_subdefs($record->get_databox(), $DI['app']);
|
||||||
|
|
||||||
return $record;
|
return $record;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (range(1, 2) as $i) {
|
foreach (range(1, 2) as $i) {
|
||||||
self::$DI['record_story_' . $i] = self::$DI->share(function($DI) use ($i) {
|
self::$DI['record_story_' . $i] = self::$DI->share(function($DI) use ($i) {
|
||||||
|
|
||||||
PhraseanetPHPUnitAbstract::$recordsInitialized[] = 'story_' . $i;
|
PhraseanetPHPUnitAbstract::$recordsInitialized[] = 'story_' . $i;
|
||||||
|
|
||||||
return record_adapter::createStory($DI['app'], $DI['collection']);
|
return record_adapter::createStory($DI['app'], $DI['collection']);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
self::$DI['record_no_access'] = self::$DI->share(function($DI) {
|
self::$DI['record_no_access'] = self::$DI->share(function($DI) {
|
||||||
|
|
||||||
PhraseanetPHPUnitAbstract::$recordsInitialized[] = 'no_access';
|
PhraseanetPHPUnitAbstract::$recordsInitialized[] = 'no_access';
|
||||||
|
|
||||||
$file = new File($DI['app'], $DI['app']['mediavorus']->guess(__DIR__ . '/testfiles/cestlafete.jpg'), $DI['collection_no_access']);
|
$file = new File($DI['app'], $DI['app']['mediavorus']->guess(__DIR__ . '/testfiles/cestlafete.jpg'), $DI['collection_no_access']);
|
||||||
|
|
||||||
return \record_adapter::createFromFile($file, $DI['app']);
|
return \record_adapter::createFromFile($file, $DI['app']);
|
||||||
});
|
});
|
||||||
|
|
||||||
self::$DI['record_no_access_by_status'] = self::$DI->share(function($DI) {
|
self::$DI['record_no_access_by_status'] = self::$DI->share(function($DI) {
|
||||||
|
|
||||||
PhraseanetPHPUnitAbstract::$recordsInitialized[] = 'no_access_by_status';
|
PhraseanetPHPUnitAbstract::$recordsInitialized[] = 'no_access_by_status';
|
||||||
|
|
||||||
$file = new File($DI['app'], $DI['app']['mediavorus']->guess(__DIR__ . '/testfiles/cestlafete.jpg'), $DI['collection_no_access']);
|
$file = new File($DI['app'], $DI['app']['mediavorus']->guess(__DIR__ . '/testfiles/cestlafete.jpg'), $DI['collection_no_access']);
|
||||||
|
|
||||||
return \record_adapter::createFromFile($file, $DI['app']);
|
return \record_adapter::createFromFile($file, $DI['app']);
|
||||||
});
|
});
|
||||||
|
|
||||||
self::$DI['user'] = self::$DI->share(
|
self::$DI['user'] = self::$DI->share(
|
||||||
self::$DI->extend('user', function ($user, $DI) use ($app) {
|
self::$DI->extend('user', function ($user, $DI) use ($app) {
|
||||||
PhraseanetPHPUnitAbstract::giveRightsToUser($app, $user);
|
PhraseanetPHPUnitAbstract::giveRightsToUser($app, $user);
|
||||||
$user->ACL()->set_admin(true);
|
$user->ACL()->set_admin(true);
|
||||||
return $user;
|
return $user;
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
self::$DI['user_notAdmin'] = self::$DI->share(
|
self::$DI['user_notAdmin'] = self::$DI->share(
|
||||||
self::$DI->extend('user_notAdmin', function ($user, $DI) use ($app) {
|
self::$DI->extend('user_notAdmin', function ($user, $DI) use ($app) {
|
||||||
PhraseanetPHPUnitAbstract::giveRightsToUser($app, $user);
|
PhraseanetPHPUnitAbstract::giveRightsToUser($app, $user);
|
||||||
$user->ACL()->set_admin(false);
|
$user->ACL()->set_admin(false);
|
||||||
return $user;
|
return $user;
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1703,31 +1703,6 @@ function chgCollThis(datas)
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
//function chgStatusThis(url)
|
|
||||||
//{
|
|
||||||
// url = "docfunction.php?"+url;
|
|
||||||
// $('#MODALDL').attr('src','about:blank');
|
|
||||||
// $('#MODALDL').attr('src',url);
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// var t = (bodySize.y - 400) / 2;
|
|
||||||
// var l = (bodySize.x - 550) / 2;
|
|
||||||
//
|
|
||||||
// $('#MODALDL').css({
|
|
||||||
// 'display': 'block',
|
|
||||||
// 'opacity': 0,
|
|
||||||
// 'width': '550px',
|
|
||||||
// 'position': 'absolute',
|
|
||||||
// 'top': t,
|
|
||||||
// 'left': l,
|
|
||||||
// 'height': '400px'
|
|
||||||
// }).fadeTo(500, 1);
|
|
||||||
//
|
|
||||||
// showOverlay(2);
|
|
||||||
// $('#tooltip').hide();
|
|
||||||
//}
|
|
||||||
|
|
||||||
|
|
||||||
function pushThis(sstt_id, lst, story)
|
function pushThis(sstt_id, lst, story)
|
||||||
{
|
{
|
||||||
$dialog = p4.Dialog.Create({
|
$dialog = p4.Dialog.Create({
|
||||||
@@ -1735,21 +1710,16 @@ function pushThis(sstt_id, lst, story)
|
|||||||
title:'Push'
|
title:'Push'
|
||||||
});
|
});
|
||||||
|
|
||||||
$.post("/prod/push/sendform/"
|
$.post("/prod/push/sendform/", {
|
||||||
, {
|
lst : lst,
|
||||||
lst : lst,
|
ssel : sstt_id,
|
||||||
ssel : sstt_id,
|
story : story
|
||||||
story : story
|
}, function(data){
|
||||||
}
|
$dialog.setContent(data);
|
||||||
, function(data){
|
return;
|
||||||
$dialog.setContent(data);
|
});
|
||||||
return;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function feedbackThis(sstt_id, lst, story)
|
function feedbackThis(sstt_id, lst, story)
|
||||||
{
|
{
|
||||||
/* disable push closeonescape as an over dialog may exist (add user) */
|
/* disable push closeonescape as an over dialog may exist (add user) */
|
||||||
@@ -1758,17 +1728,14 @@ function feedbackThis(sstt_id, lst, story)
|
|||||||
title:'Feedback'
|
title:'Feedback'
|
||||||
});
|
});
|
||||||
|
|
||||||
$.post("/prod/push/validateform/"
|
$.post("/prod/push/validateform/", {
|
||||||
, {
|
lst : lst,
|
||||||
lst : lst,
|
ssel : sstt_id,
|
||||||
ssel : sstt_id,
|
story : story
|
||||||
story : story
|
}, function(data){
|
||||||
}
|
$dialog.setContent(data);
|
||||||
, function(data){
|
return;
|
||||||
$dialog.setContent(data);
|
});
|
||||||
return;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function toolREFACTOR(datas){
|
function toolREFACTOR(datas){
|
||||||
|
Reference in New Issue
Block a user