Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

73 lines
2.1KB

  1. <?php
  2. namespace producer\controllers;
  3. class ProducerBaseController extends CommonController {
  4. var $producer ;
  5. /**
  6. * @inheritdoc
  7. */
  8. public function behaviors() {
  9. return [];
  10. }
  11. public function actions() {
  12. return [];
  13. }
  14. public function beforeAction($event) {
  15. $producer = $this->getProducer() ;
  16. /*
  17. * Producteur protègé par un code
  18. */
  19. if(strlen($producer->code)) {
  20. // Si l'utilisateur n'est pas connecté, on le redirige vers une page qui lui permet
  21. // de se connecter ou de s'inscrire en saisissant le code du producteur
  22. if(Yii::$app->user->isGuest) {
  23. $this->redirect(Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/producer','id' => $producer->id])) ;
  24. }
  25. // si l'utilisateur est connecté et qu'il n'a pas encore saisi de code
  26. else {
  27. $user_etablissement = UserEtablissement::find()
  28. ->where([
  29. 'id_user' => Yii::$app->user->id,
  30. 'id_etablissement' => $producer->id
  31. ])
  32. ->one() ;
  33. if(!$user_etablissement || ($user_etablissement && !$user_etablissement->actif)) {
  34. $this->redirect(Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/producer-code','id' => $producer->id])) ;
  35. }
  36. }
  37. }
  38. return parent::beforeAction($event);
  39. }
  40. public function getProducer() {
  41. if($this->producer) {
  42. return $this->producer ;
  43. }
  44. else {
  45. $producer = Etablissement::find()
  46. ->with('contact')
  47. ->where(['slug' => Yii::$app->getRequest()->getQueryParam('slug_producer')])
  48. ->one() ;
  49. if($producer) {
  50. $this->producer = $producer ;
  51. return $this->producer ;
  52. }
  53. else {
  54. throw new \yii\web\HttpException(404, 'Établissement introuvable');
  55. }
  56. }
  57. }
  58. }
  59. ?>