diff --git a/lib/Alchemy/Phrasea/Controller/Root/Account.php b/lib/Alchemy/Phrasea/Controller/Root/Account.php index 681fdd0282..6be7b357c8 100644 --- a/lib/Alchemy/Phrasea/Controller/Root/Account.php +++ b/lib/Alchemy/Phrasea/Controller/Root/Account.php @@ -362,47 +362,41 @@ class Account implements ControllerProviderInterface ]; if (0 === count(array_diff($accountFields, array_keys($request->request->all())))) { + $app['authentication']->getUser() + ->setGender($request->request->get("form_gender")) + ->setFirstName($request->request->get("form_firstname")) + ->setLastName($request->request->get("form_lastname")) + ->setAddress($request->request->get("form_address")) + ->setZipCode($request->request->get("form_zip")) + ->setPhone($request->request->get("form_phone")) + ->setFax($request->request->get("form_fax")) + ->setJob($request->request->get("form_activity")) + ->setCompany($request->request->get("form_company")) + ->setActivity($request->request->get("form_function")) + ->setMailNotificationsActivated((Boolean) $request->request->get("mail_notifications")); - try { + $app['manipulator.user']->setGeonameId($app['authentication']->getUser(), $request->request->get("form_geonameid")); - $app['authentication']->getUser() - ->setGender($request->request->get("form_gender")) - ->setFirstName($request->request->get("form_firstname")) - ->setLastName($request->request->get("form_lastname")) - ->setAddress($request->request->get("form_address")) - ->setZipCode($request->request->get("form_zip")) - ->setPhone($request->request->get("form_phone")) - ->setFax($request->request->get("form_fax")) - ->setJob($request->request->get("form_activity")) - ->setCompany($request->request->get("form_company")) - ->setActivity($request->request->get("form_function")) - ->setMailNotificationsActivated((Boolean) $request->request->get("mail_notifications")); + $ftpCredential = $app['authentication']->getUser()->getFtpCredential(); - $app['manipulator.user']->setGeonameId($app['authentication']->getUser(), $request->request->get("form_geonameid")); - - $ftpCredential = $app['authentication']->getUser()->getFtpCredential(); - - if (null === $ftpCredential) { - $ftpCredential = new FtpCredential(); - } - - $ftpCredential->setActive($request->request->get("form_activeFTP")); - $ftpCredential->setAddress($request->request->get("form_addressFTP")); - $ftpCredential->setLogin($request->request->get("form_loginFTP")); - $ftpCredential->setPassword($request->request->get("form_pwdFTP")); - $ftpCredential->setPassive($request->request->get("form_passifFTP")); - $ftpCredential->setReceptionFolder($request->request->get("form_destFTP")); - $ftpCredential->setRepositoryPrefixName($request->request->get("form_prefixFTPfolder")); - - $app['EM']->persist($ftpCredential); - $app['EM']->persist($app['authentication']->getUser()); - - $app['EM']->flush(); - $app->addFlash('success', $app->trans('login::notification: Changements enregistres')); - } catch (\Exception $e) { - $app->addFlash('error', $app->trans('forms::erreurs lors de l\'enregistrement des modifications')); - $app['phraseanet.appbox']->get_connection()->rollBack(); + if (null === $ftpCredential) { + $ftpCredential = new FtpCredential(); + $ftpCredential->setUser($app['authentication']->getUser()); } + + $ftpCredential->setActive($request->request->get("form_activeFTP")); + $ftpCredential->setAddress($request->request->get("form_addressFTP")); + $ftpCredential->setLogin($request->request->get("form_loginFTP")); + $ftpCredential->setPassword($request->request->get("form_pwdFTP")); + $ftpCredential->setPassive($request->request->get("form_passifFTP")); + $ftpCredential->setReceptionFolder($request->request->get("form_destFTP")); + $ftpCredential->setRepositoryPrefixName($request->request->get("form_prefixFTPfolder")); + + $app['EM']->persist($ftpCredential); + $app['EM']->persist($app['authentication']->getUser()); + + $app['EM']->flush(); + $app->addFlash('success', $app->trans('login::notification: Changements enregistres')); } $requestedNotifications = (array) $request->request->get('notifications', []); diff --git a/lib/Alchemy/Phrasea/Form/TaskForm.php b/lib/Alchemy/Phrasea/Form/TaskForm.php index f442951ce4..40ef762a5e 100644 --- a/lib/Alchemy/Phrasea/Form/TaskForm.php +++ b/lib/Alchemy/Phrasea/Form/TaskForm.php @@ -49,7 +49,7 @@ class TaskForm extends AbstractType public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults([ - 'data_class' => 'Phraseanet:Task', + 'data_class' => 'Alchemy\Phrasea\Model\Entities\Task', ]); } diff --git a/lib/Alchemy/Phrasea/Model/Entities/User.php b/lib/Alchemy/Phrasea/Model/Entities/User.php index d9e01b0325..f7fdd96981 100644 --- a/lib/Alchemy/Phrasea/Model/Entities/User.php +++ b/lib/Alchemy/Phrasea/Model/Entities/User.php @@ -424,7 +424,7 @@ class User self::GENDER_MISS, self::GENDER_MR, self::GENDER_MRS - ])) { + ], true)) { throw new InvalidArgumentException(sprintf("Invalid gender %s.", $gender)); } diff --git a/lib/Alchemy/Phrasea/Model/Entities/ValidationSession.php b/lib/Alchemy/Phrasea/Model/Entities/ValidationSession.php index 2e3cd5590c..ce1bf60fff 100644 --- a/lib/Alchemy/Phrasea/Model/Entities/ValidationSession.php +++ b/lib/Alchemy/Phrasea/Model/Entities/ValidationSession.php @@ -96,13 +96,13 @@ class ValidationSession } /** - * Get initiator_id + * Get validation initiator * - * @return integer + * @return User */ public function getInitiator() { - return $this->initiator_id; + return $this->initiator; } /** diff --git a/lib/Alchemy/Phrasea/Model/Repositories/BasketElementRepository.php b/lib/Alchemy/Phrasea/Model/Repositories/BasketElementRepository.php index 40d9073144..f2a617af07 100644 --- a/lib/Alchemy/Phrasea/Model/Repositories/BasketElementRepository.php +++ b/lib/Alchemy/Phrasea/Model/Repositories/BasketElementRepository.php @@ -109,7 +109,7 @@ class BasketElementRepository extends EntityRepository LEFT JOIN b.validation s LEFT JOIN s.participants p WHERE b.user = :usr_id - AND b.pusher_id IS NOT NULL + AND b.pusher IS NOT NULL AND e.record_id = :record_id AND e.sbas_id = :sbas_id'; diff --git a/lib/classes/API/V1/adapter.php b/lib/classes/API/V1/adapter.php index d306481223..800a394b6e 100644 --- a/lib/classes/API/V1/adapter.php +++ b/lib/classes/API/V1/adapter.php @@ -1778,7 +1778,7 @@ class API_V1_adapter extends API_V1_Abstract 'created_on' => $basket->getCreated()->format(DATE_ATOM), 'description' => (string) $basket->getDescription(), 'name' => $basket->getName(), - 'pusher_usr_id' => $basket->getPusher()->getId(), + 'pusher_usr_id' => $basket->getPusher() ? $basket->getPusher()->getId() : null, 'updated_on' => $basket->getUpdated()->format(DATE_ATOM), 'unread' => !$basket->getIsRead(), 'validation_basket' => !!$basket->getValidation() diff --git a/tests/Alchemy/Tests/Phrasea/Command/Developper/Utils/GruntDriverTest.php b/tests/Alchemy/Tests/Phrasea/Command/Developper/Utils/GruntDriverTest.php index 52ba45a223..425f68787a 100644 --- a/tests/Alchemy/Tests/Phrasea/Command/Developper/Utils/GruntDriverTest.php +++ b/tests/Alchemy/Tests/Phrasea/Command/Developper/Utils/GruntDriverTest.php @@ -3,13 +3,16 @@ namespace Alchemy\Tests\Phrasea\Command\Developper\Utils; use Alchemy\Phrasea\Command\Developer\Utils\GruntDriver; +use Alchemy\Phrasea\Core\CLIProvider\CLIDriversServiceProvider; use Symfony\Component\Process\PhpExecutableFinder; class GruntDriverTest extends \PhraseanetTestCase { public function testCreate() { - $driver = GruntDriver::create(); + $app = self::$DI['app']; + $app->register(new CLIDriversServiceProvider()); + $driver = GruntDriver::create(['grunt.binaries' => $app['driver.binary-finder']('grunt', 'grunt_binary')]); $this->assertInstanceOf('Alchemy\Phrasea\Command\Developer\Utils\GruntDriver', $driver); $this->assertEquals('grunt', $driver->getName()); } diff --git a/tests/Alchemy/Tests/Phrasea/Command/Developper/Utils/UglifyJsDriverTest.php b/tests/Alchemy/Tests/Phrasea/Command/Developper/Utils/UglifyJsDriverTest.php index a011f2b557..a953c24fce 100644 --- a/tests/Alchemy/Tests/Phrasea/Command/Developper/Utils/UglifyJsDriverTest.php +++ b/tests/Alchemy/Tests/Phrasea/Command/Developper/Utils/UglifyJsDriverTest.php @@ -3,13 +3,16 @@ namespace Alchemy\Tests\Phrasea\Command\Developper\Utils; use Alchemy\Phrasea\Command\Developer\Utils\UglifyJsDriver; +use Alchemy\Phrasea\Core\CLIProvider\CLIDriversServiceProvider; use Symfony\Component\Process\PhpExecutableFinder; class UglifyJsDriverTest extends \PhraseanetTestCase { public function testCreate() { - $driver = UglifyJsDriver::create(); + $app = self::$DI['app']; + $app->register(new CLIDriversServiceProvider()); + $driver = UglifyJsDriver::create(['uglifyjs.binaries' => $app['driver.binary-finder']('uglifyjs', 'uglifyjs_binary')]); $this->assertInstanceOf('Alchemy\Phrasea\Command\Developer\Utils\UglifyJsDriver', $driver); $this->assertEquals('uglifyjs', $driver->getName()); } diff --git a/tests/Alchemy/Tests/Phrasea/Model/Entities/UserTest.php b/tests/Alchemy/Tests/Phrasea/Model/Entities/UserTest.php index ab8cfc9594..758b30f864 100644 --- a/tests/Alchemy/Tests/Phrasea/Model/Entities/UserTest.php +++ b/tests/Alchemy/Tests/Phrasea/Model/Entities/UserTest.php @@ -7,6 +7,7 @@ use Alchemy\Phrasea\Model\Entities\User; class UserTest extends \PhraseanetTestCase { + /** @var User */ private $user; public function setUp() @@ -140,7 +141,7 @@ class UserTest extends \PhraseanetTestCase return [ [false], [''], - [1], + [4], ['madame'] ]; } diff --git a/tests/classes/Doctrine/Repositories/UsrAuthProviderRepositoryTest.php b/tests/classes/Doctrine/Repositories/UsrAuthProviderRepositoryTest.php index 6f163b2ce6..8191162ce0 100644 --- a/tests/classes/Doctrine/Repositories/UsrAuthProviderRepositoryTest.php +++ b/tests/classes/Doctrine/Repositories/UsrAuthProviderRepositoryTest.php @@ -16,6 +16,7 @@ class UsrAuthProviderRepositoryTest extends \PhraseanetTestCase $repo = self::$DI['app']['EM']->getRepository('Phraseanet:UsrAuthProvider'); $auth = new UsrAuthProvider(); + $auth->setUser(self::$DI['user']); $auth->setProvider('provider-test'); $auth->setDistantId(12345);