mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-18 15:33:15 +00:00
Fix CS
This commit is contained in:
@@ -30,11 +30,11 @@ class Root implements ControllerProviderInterface
|
|||||||
|
|
||||||
$controllers = $app['controllers_factory'];
|
$controllers = $app['controllers_factory'];
|
||||||
|
|
||||||
$controllers->before(function(Request $request) use ($app) {
|
$controllers->before(function (Request $request) use ($app) {
|
||||||
$app['firewall']->requireAccessToModule('admin');
|
$app['firewall']->requireAccessToModule('admin');
|
||||||
});
|
});
|
||||||
|
|
||||||
$controllers->get('/', function(Application $app, Request $request) {
|
$controllers->get('/', function (Application $app, Request $request) {
|
||||||
try {
|
try {
|
||||||
\Session_Logger::updateClientInfos($app, 3);
|
\Session_Logger::updateClientInfos($app, 3);
|
||||||
} catch (SessionNotFound $e) {
|
} catch (SessionNotFound $e) {
|
||||||
@@ -315,7 +315,7 @@ class Root implements ControllerProviderInterface
|
|||||||
->assert('bit', '\d+')
|
->assert('bit', '\d+')
|
||||||
->bind('database_display_statusbit_form');
|
->bind('database_display_statusbit_form');
|
||||||
|
|
||||||
$controllers->post('/statusbit/{databox_id}/status/{bit}/delete/', function(Application $app, Request $request, $databox_id, $bit) {
|
$controllers->post('/statusbit/{databox_id}/status/{bit}/delete/', function (Application $app, Request $request, $databox_id, $bit) {
|
||||||
if (!$request->isXmlHttpRequest() || !array_key_exists($request->getMimeType('json'), array_flip($request->getAcceptableContentTypes()))) {
|
if (!$request->isXmlHttpRequest() || !array_key_exists($request->getMimeType('json'), array_flip($request->getAcceptableContentTypes()))) {
|
||||||
$app->abort(400, _('Bad request format, only JSON is allowed'));
|
$app->abort(400, _('Bad request format, only JSON is allowed'));
|
||||||
}
|
}
|
||||||
@@ -338,7 +338,7 @@ class Root implements ControllerProviderInterface
|
|||||||
->assert('databox_id', '\d+')
|
->assert('databox_id', '\d+')
|
||||||
->assert('bit', '\d+');
|
->assert('bit', '\d+');
|
||||||
|
|
||||||
$controllers->post('/statusbit/{databox_id}/status/{bit}/', function(Application $app, Request $request, $databox_id, $bit) {
|
$controllers->post('/statusbit/{databox_id}/status/{bit}/', function (Application $app, Request $request, $databox_id, $bit) {
|
||||||
if (!$app['acl']->get($app['authentication']->getUser())->has_right_on_sbas($databox_id, 'bas_modify_struct')) {
|
if (!$app['acl']->get($app['authentication']->getUser())->has_right_on_sbas($databox_id, 'bas_modify_struct')) {
|
||||||
$app->abort(403);
|
$app->abort(403);
|
||||||
}
|
}
|
||||||
|
@@ -331,7 +331,6 @@ class Lightbox implements ControllerProviderInterface
|
|||||||
->assert('entry_id', '\d+');
|
->assert('entry_id', '\d+');
|
||||||
|
|
||||||
$controllers->get('/ajax/LOAD_REPORT/{basket}/', function (SilexApplication $app, Basket $basket) {
|
$controllers->get('/ajax/LOAD_REPORT/{basket}/', function (SilexApplication $app, Basket $basket) {
|
||||||
|
|
||||||
return new Response($app['twig']->render('lightbox/basket_content_report.html.twig', array('basket' => $basket)));
|
return new Response($app['twig']->render('lightbox/basket_content_report.html.twig', array('basket' => $basket)));
|
||||||
})
|
})
|
||||||
->bind('lightbox_ajax_report')
|
->bind('lightbox_ajax_report')
|
||||||
|
@@ -205,7 +205,7 @@ class Feed implements ControllerProviderInterface
|
|||||||
$app['firewall']->requireRight('bas_chupub');
|
$app['firewall']->requireRight('bas_chupub');
|
||||||
});
|
});
|
||||||
|
|
||||||
$controllers->get('/', function(Application $app, Request $request) {
|
$controllers->get('/', function (Application $app, Request $request) {
|
||||||
$request = $app['request'];
|
$request = $app['request'];
|
||||||
$page = (int) $request->query->get('page');
|
$page = (int) $request->query->get('page');
|
||||||
$page = $page > 0 ? $page : 1;
|
$page = $page > 0 ? $page : 1;
|
||||||
|
@@ -269,7 +269,7 @@ class Upload implements ControllerProviderInterface
|
|||||||
/**
|
/**
|
||||||
* Get current user's granted collections where he can upload
|
* Get current user's granted collections where he can upload
|
||||||
*
|
*
|
||||||
* @param \ACL $acl The user's ACL.
|
* @param \ACL $acl The user's ACL.
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
|
@@ -15,7 +15,6 @@ use Alchemy\Phrasea\Cache\Manager as CacheManager;
|
|||||||
use Silex\Application;
|
use Silex\Application;
|
||||||
use Silex\ServiceProviderInterface;
|
use Silex\ServiceProviderInterface;
|
||||||
use Alchemy\Phrasea\Core\Configuration\Compiler;
|
use Alchemy\Phrasea\Core\Configuration\Compiler;
|
||||||
use Alchemy\Phrasea\Cache\ConnectionFactory;
|
|
||||||
use Alchemy\Phrasea\Cache\Factory;
|
use Alchemy\Phrasea\Cache\Factory;
|
||||||
|
|
||||||
class CacheServiceProvider implements ServiceProviderInterface
|
class CacheServiceProvider implements ServiceProviderInterface
|
||||||
|
@@ -39,7 +39,7 @@ class PhraseanetServiceProvider implements ServiceProviderInterface
|
|||||||
return $events;
|
return $events;
|
||||||
});
|
});
|
||||||
|
|
||||||
$app['acl'] = $app->share(function(SilexApplication $app) {
|
$app['acl'] = $app->share(function (SilexApplication $app) {
|
||||||
return new ACLProvider($app);
|
return new ACLProvider($app);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@@ -12,7 +12,6 @@
|
|||||||
namespace Alchemy\Phrasea\Feed;
|
namespace Alchemy\Phrasea\Feed;
|
||||||
|
|
||||||
use Alchemy\Phrasea\Application;
|
use Alchemy\Phrasea\Application;
|
||||||
use Alchemy\Phrasea\Authentication\ACLProvider;
|
|
||||||
use Alchemy\Phrasea\Exception\LogicException;
|
use Alchemy\Phrasea\Exception\LogicException;
|
||||||
use Doctrine\ORM\EntityManager;
|
use Doctrine\ORM\EntityManager;
|
||||||
use Alchemy\Phrasea\Model\Entities\AggregateToken;
|
use Alchemy\Phrasea\Model\Entities\AggregateToken;
|
||||||
|
@@ -39,13 +39,13 @@ class ACLManipulator implements ManipulatorInterface
|
|||||||
/**
|
/**
|
||||||
* Resets rights for users.
|
* Resets rights for users.
|
||||||
*
|
*
|
||||||
* @param User_Adapter $user
|
* @param User_Adapter $user
|
||||||
*
|
*
|
||||||
* @throws InvalidArgumentException
|
* @throws InvalidArgumentException
|
||||||
*/
|
*/
|
||||||
public function resetAdminRights($users)
|
public function resetAdminRights($users)
|
||||||
{
|
{
|
||||||
foreach($this->makeTraversable($users) as $user) {
|
foreach ($this->makeTraversable($users) as $user) {
|
||||||
$this->doResetAdminRights($user);
|
$this->doResetAdminRights($user);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -180,9 +180,9 @@ class UserManipulator implements ManipulatorInterface
|
|||||||
/**
|
/**
|
||||||
* Sets a preference setting for a user.
|
* Sets a preference setting for a user.
|
||||||
*
|
*
|
||||||
* @param User $user
|
* @param User $user
|
||||||
* @param string $name
|
* @param string $name
|
||||||
* @param string $value
|
* @param string $value
|
||||||
*/
|
*/
|
||||||
public function addUserSetting(User $user, $name, $value)
|
public function addUserSetting(User $user, $name, $value)
|
||||||
{
|
{
|
||||||
@@ -198,9 +198,9 @@ class UserManipulator implements ManipulatorInterface
|
|||||||
/**
|
/**
|
||||||
* Sets a notification setting for a user.
|
* Sets a notification setting for a user.
|
||||||
*
|
*
|
||||||
* @param User $user
|
* @param User $user
|
||||||
* @param string $name
|
* @param string $name
|
||||||
* @param string $value
|
* @param string $value
|
||||||
*/
|
*/
|
||||||
public function addNotificationSetting(User $user, $name, $value)
|
public function addNotificationSetting(User $user, $name, $value)
|
||||||
{
|
{
|
||||||
@@ -216,7 +216,7 @@ class UserManipulator implements ManipulatorInterface
|
|||||||
/**
|
/**
|
||||||
* Logs a user query.
|
* Logs a user query.
|
||||||
*
|
*
|
||||||
* @param User $user
|
* @param User $user
|
||||||
* @param string $query
|
* @param string $query
|
||||||
*/
|
*/
|
||||||
public function logQuery(User $user, $query)
|
public function logQuery(User $user, $query)
|
||||||
|
@@ -11,11 +11,8 @@
|
|||||||
|
|
||||||
namespace Alchemy\Phrasea\Model\Repositories;
|
namespace Alchemy\Phrasea\Model\Repositories;
|
||||||
|
|
||||||
use Alchemy\Phrasea\Application;
|
|
||||||
use Alchemy\Phrasea\Model\Entities\Basket;
|
use Alchemy\Phrasea\Model\Entities\Basket;
|
||||||
use Doctrine\ORM\EntityRepository;
|
use Doctrine\ORM\EntityRepository;
|
||||||
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
|
|
||||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@@ -646,7 +646,7 @@ class SearchEngineOptions
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($app['authentication']->isAuthenticated() && $app['acl']->get($app['authentication']->getUser())->has_right('modifyrecord')) {
|
if ($app['authentication']->isAuthenticated() && $app['acl']->get($app['authentication']->getUser())->has_right('modifyrecord')) {
|
||||||
$BF = array_filter($bas, function( $collection) use ($app) {
|
$BF = array_filter($bas, function ($collection) use ($app) {
|
||||||
return $app['acl']->get($app['authentication']->getUser())->has_right_on_base($collection->get_base_id(), 'canmodifrecord');
|
return $app['acl']->get($app['authentication']->getUser())->has_right_on_base($collection->get_base_id(), 'canmodifrecord');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@@ -13,7 +13,7 @@ namespace Alchemy\Phrasea\TaskManager\Log;
|
|||||||
|
|
||||||
use Alchemy\Phrasea\Model\Entities\Task;
|
use Alchemy\Phrasea\Model\Entities\Task;
|
||||||
|
|
||||||
class LogFilefactory
|
class LogFileFactory
|
||||||
{
|
{
|
||||||
private $root;
|
private $root;
|
||||||
|
|
||||||
|
@@ -202,11 +202,9 @@ class module_console_checkExtension extends Command
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// test disconnected mode if available
|
// test disconnected mode if available
|
||||||
// prepare the test before closing session
|
// prepare the test before closing session
|
||||||
if(function_exists("phrasea_public_query"))
|
if (function_exists("phrasea_public_query")) {
|
||||||
{
|
|
||||||
// fill an array for each sbas to query
|
// fill an array for each sbas to query
|
||||||
$tbases = array();
|
$tbases = array();
|
||||||
foreach ($phSession["bases"] as $phbase) {
|
foreach ($phSession["bases"] as $phbase) {
|
||||||
@@ -231,7 +229,6 @@ class module_console_checkExtension extends Command
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$output->writeln("\n-- phrasea_close_session --");
|
$output->writeln("\n-- phrasea_close_session --");
|
||||||
|
|
||||||
$rs = phrasea_close_session($sessid);
|
$rs = phrasea_close_session($sessid);
|
||||||
@@ -244,11 +241,8 @@ class module_console_checkExtension extends Command
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// session is closed, test disconnected mode if available
|
// session is closed, test disconnected mode if available
|
||||||
if(function_exists("phrasea_public_query"))
|
if (function_exists("phrasea_public_query")) {
|
||||||
{
|
|
||||||
$output->writeln("\n-- phrasea_public_query(...0, 5,...) --");
|
$output->writeln("\n-- phrasea_public_query(...0, 5,...) --");
|
||||||
|
|
||||||
$ret = phrasea_public_query(
|
$ret = phrasea_public_query(
|
||||||
@@ -262,7 +256,7 @@ class module_console_checkExtension extends Command
|
|||||||
, true // verbose output (chrono, sql...)
|
, true // verbose output (chrono, sql...)
|
||||||
);
|
);
|
||||||
|
|
||||||
if(is_array($ret) && array_key_exists("results", $ret) && is_array($ret["results"])) {
|
if (is_array($ret) && array_key_exists("results", $ret) && is_array($ret["results"])) {
|
||||||
$output->writeln( sprintf("<info>Succes ! </info> returned %d answers", count($ret["results"])) );
|
$output->writeln( sprintf("<info>Succes ! </info> returned %d answers", count($ret["results"])) );
|
||||||
} else {
|
} else {
|
||||||
$output->writeln("<error>Failed ! </error>");
|
$output->writeln("<error>Failed ! </error>");
|
||||||
@@ -270,9 +264,7 @@ class module_console_checkExtension extends Command
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach ($ret['results'] as $result) {
|
||||||
foreach($ret['results'] as $result)
|
|
||||||
{
|
|
||||||
$sbid = $result["sbid"];
|
$sbid = $result["sbid"];
|
||||||
$rid = $result["rid"];
|
$rid = $result["rid"];
|
||||||
$q = $tbases["S".$sbid]["arrayq"]; // query tree
|
$q = $tbases["S".$sbid]["arrayq"]; // query tree
|
||||||
|
@@ -2,9 +2,6 @@
|
|||||||
|
|
||||||
namespace Alchemy\Tests\Phrasea\Authentication;
|
namespace Alchemy\Tests\Phrasea\Authentication;
|
||||||
|
|
||||||
use Alchemy\Phrasea\Application;
|
|
||||||
use Alchemy\Phrasea\Authentication\ACLProvider;
|
|
||||||
|
|
||||||
class ACLProviderTest extends \PhraseanetPHPUnitAbstract
|
class ACLProviderTest extends \PhraseanetPHPUnitAbstract
|
||||||
{
|
{
|
||||||
public function testGetACL()
|
public function testGetACL()
|
||||||
|
@@ -40,7 +40,6 @@ class ShareTest extends \PhraseanetWebTestCaseAuthenticatedAbstract
|
|||||||
->method('has_access_to_subdef')
|
->method('has_access_to_subdef')
|
||||||
->will($this->returnValue(true));
|
->will($this->returnValue(true));
|
||||||
|
|
||||||
|
|
||||||
$aclProvider = $this->getMockBuilder('Alchemy\Phrasea\Authentication\ACLProvider')
|
$aclProvider = $this->getMockBuilder('Alchemy\Phrasea\Authentication\ACLProvider')
|
||||||
->disableOriginalConstructor()
|
->disableOriginalConstructor()
|
||||||
->getMock();
|
->getMock();
|
||||||
@@ -82,7 +81,6 @@ class ShareTest extends \PhraseanetWebTestCaseAuthenticatedAbstract
|
|||||||
->method('has_access_to_subdef')
|
->method('has_access_to_subdef')
|
||||||
->will($this->returnValue(false));
|
->will($this->returnValue(false));
|
||||||
|
|
||||||
|
|
||||||
$aclProvider = $this->getMockBuilder('Alchemy\Phrasea\Authentication\ACLProvider')
|
$aclProvider = $this->getMockBuilder('Alchemy\Phrasea\Authentication\ACLProvider')
|
||||||
->disableOriginalConstructor()
|
->disableOriginalConstructor()
|
||||||
->getMock();
|
->getMock();
|
||||||
|
@@ -1810,7 +1810,7 @@ class LoginTest extends \PhraseanetWebTestCaseAuthenticatedAbstract
|
|||||||
foreach (self::$DI['app']['phraseanet.appbox']->get_databoxes() as $databox) {
|
foreach (self::$DI['app']['phraseanet.appbox']->get_databoxes() as $databox) {
|
||||||
self::$termsOfUse[$databox->get_sbas_id()] = $databox->get_cgus();
|
self::$termsOfUse[$databox->get_sbas_id()] = $databox->get_cgus();
|
||||||
|
|
||||||
foreach( self::$termsOfUse[$databox->get_sbas_id()]as $lng => $tou) {
|
foreach ( self::$termsOfUse[$databox->get_sbas_id()]as $lng => $tou) {
|
||||||
$databox->update_cgus($lng, '', false);
|
$databox->update_cgus($lng, '', false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1824,7 +1824,7 @@ class LoginTest extends \PhraseanetWebTestCaseAuthenticatedAbstract
|
|||||||
foreach (self::$DI['app']['phraseanet.appbox']->get_databoxes() as $databox) {
|
foreach (self::$DI['app']['phraseanet.appbox']->get_databoxes() as $databox) {
|
||||||
self::$termsOfUse[$databox->get_sbas_id()] = $databox->get_cgus();
|
self::$termsOfUse[$databox->get_sbas_id()] = $databox->get_cgus();
|
||||||
|
|
||||||
foreach( self::$termsOfUse[$databox->get_sbas_id()]as $lng => $tou) {
|
foreach ( self::$termsOfUse[$databox->get_sbas_id()]as $lng => $tou) {
|
||||||
$databox->update_cgus($lng, 'something', false);
|
$databox->update_cgus($lng, 'something', false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -113,7 +113,6 @@ class SetupTest extends \PhraseanetWebTestCaseAbstract
|
|||||||
->method('get_granted_sbas')
|
->method('get_granted_sbas')
|
||||||
->will($this->returnValue(array()));
|
->will($this->returnValue(array()));
|
||||||
|
|
||||||
|
|
||||||
$aclProvider = $this->getMockBuilder('Alchemy\Phrasea\Authentication\ACLProvider')
|
$aclProvider = $this->getMockBuilder('Alchemy\Phrasea\Authentication\ACLProvider')
|
||||||
->disableOriginalConstructor()
|
->disableOriginalConstructor()
|
||||||
->getMock();
|
->getMock();
|
||||||
|
@@ -2,9 +2,6 @@
|
|||||||
|
|
||||||
namespace Alchemy\Tests\Phrasea\Core\Middleware;
|
namespace Alchemy\Tests\Phrasea\Core\Middleware;
|
||||||
|
|
||||||
use Alchemy\Phrasea\Application;
|
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
|
||||||
|
|
||||||
abstract class MiddlewareProviderTestCase extends \PhraseanetPHPUnitAbstract
|
abstract class MiddlewareProviderTestCase extends \PhraseanetPHPUnitAbstract
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
@@ -2,12 +2,6 @@
|
|||||||
|
|
||||||
namespace Alchemy\Tests\Phrasea\Core\Provider;
|
namespace Alchemy\Tests\Phrasea\Core\Provider;
|
||||||
|
|
||||||
use Alchemy\Phrasea\Application as PhraseaApplication;
|
|
||||||
use Alchemy\Phrasea\Core\Provider\TokensServiceProvider;
|
|
||||||
use Alchemy\Phrasea\Core\Provider\AuthenticationManagerServiceProvider;
|
|
||||||
use Alchemy\Phrasea\Core\Provider\ConfigurationServiceProvider;
|
|
||||||
use Silex\Application;
|
|
||||||
|
|
||||||
class ACLServiceProvidertest extends ServiceProviderTestCase
|
class ACLServiceProvidertest extends ServiceProviderTestCase
|
||||||
{
|
{
|
||||||
public function provideServiceDescription()
|
public function provideServiceDescription()
|
||||||
|
@@ -3,7 +3,6 @@
|
|||||||
namespace Alchemy\Phrasea\Model\Converter;
|
namespace Alchemy\Phrasea\Model\Converter;
|
||||||
|
|
||||||
use Alchemy\Phrasea\Model\Converter\BasketConverter;
|
use Alchemy\Phrasea\Model\Converter\BasketConverter;
|
||||||
use Alchemy\Phrasea\Model\Entities\Task;
|
|
||||||
|
|
||||||
class BasketConverterTest extends \PhraseanetPHPUnitAbstract
|
class BasketConverterTest extends \PhraseanetPHPUnitAbstract
|
||||||
{
|
{
|
||||||
|
@@ -11,8 +11,6 @@
|
|||||||
|
|
||||||
namespace Alchemy\Tests\Phrasea\Model\Manipulator;
|
namespace Alchemy\Tests\Phrasea\Model\Manipulator;
|
||||||
|
|
||||||
use Alchemy\Phrasea\Exception\InvalidArgumentException;
|
|
||||||
|
|
||||||
class ACLManipulatorTest extends \PhraseanetPHPUnitAbstract
|
class ACLManipulatorTest extends \PhraseanetPHPUnitAbstract
|
||||||
{
|
{
|
||||||
public function testResetAdminRights()
|
public function testResetAdminRights()
|
||||||
@@ -23,7 +21,7 @@ class ACLManipulatorTest extends \PhraseanetPHPUnitAbstract
|
|||||||
$databoxId = null;
|
$databoxId = null;
|
||||||
$baseId = null;
|
$baseId = null;
|
||||||
|
|
||||||
foreach(self::$DI['app']['phraseanet.appbox']->get_databoxes() as $databox) {
|
foreach (self::$DI['app']['phraseanet.appbox']->get_databoxes() as $databox) {
|
||||||
$databoxId = $databox->get_sbas_id();
|
$databoxId = $databox->get_sbas_id();
|
||||||
|
|
||||||
$acl->update_rights_to_sbas($databoxId, array(
|
$acl->update_rights_to_sbas($databoxId, array(
|
||||||
@@ -33,7 +31,7 @@ class ACLManipulatorTest extends \PhraseanetPHPUnitAbstract
|
|||||||
'bas_chupub' => '0'
|
'bas_chupub' => '0'
|
||||||
));
|
));
|
||||||
|
|
||||||
foreach($databox->get_collections() as $collection) {
|
foreach ($databox->get_collections() as $collection) {
|
||||||
$baseId = $collection->get_base_id();
|
$baseId = $collection->get_base_id();
|
||||||
$acl->set_limits($baseId, true);
|
$acl->set_limits($baseId, true);
|
||||||
$acl->set_masks_on_base($baseId, '1', '1', '1', '1');
|
$acl->set_masks_on_base($baseId, '1', '1', '1', '1');
|
||||||
|
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
use Alchemy\Phrasea\Border\File as BorderFile;
|
use Alchemy\Phrasea\Border\File as BorderFile;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
|
||||||
|
|
||||||
class API_V1_adapterTest extends PhraseanetPHPUnitAuthenticatedAbstract
|
class API_V1_adapterTest extends PhraseanetPHPUnitAuthenticatedAbstract
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user