getProducerCurrent() ; if(!\Yii::$app->params['maintenanceMode']) { $this->getLogic()->setProducerContext($producer); $userProducer = UserProducer::find() ->where([ 'id_user' => GlobalParam::getCurrentUserId(), 'id_producer' => $producer->id ]) ->one() ; /* * Producteur hors ligne */ if(!$producer->active && (\Yii::$app->user->isGuest || \Yii::$app->user->identity->id_producer != $producer->id)) { $this->redirect(\Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/producer-offline','id' => $producer->id])) ; } /* * Producteur protègé par un code */ if(strlen($producer->code)) { // Si l'utilisateur n'est pas connecté, on le redirige vers une page qui lui permet // de se connecter ou de s'inscrire en saisissant le code du producteur if(\Yii::$app->user->isGuest) { $this->redirect(\Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/producer','id' => $producer->id])) ; } // si l'utilisateur est connecté et qu'il n'a pas encore saisi de code else { if(!$userProducer || ($userProducer && !$userProducer->active)) { $this->redirect(\Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/producer-code','id' => $producer->id])) ; } } } } return parent::beforeAction($event); } /** * Retourne le producteur courant. */ public function getProducerCurrent() : ?Producer { if($this->producer) { return $this->producer ; } else { $slug = \Yii::$app->getRequest()->getQueryParam('slug_producer'); $producer = Producer::find() ->with('contact') ->where(['slug' => $slug]) ->one() ; if($producer) { $this->producer = $producer ; return $this->producer ; } else { if($this->action->id != 'maintenance') { throw new \yii\web\HttpException(404, 'Producteur introuvable ('.$slug.')'); } else { return null; } } } } } ?>