* @since 2.0 */ trait ProviderTrait { /** * @var string service id. * This value mainly used as HTTP request parameter. */ private $_id; /** * @var string service unique name. * This value may be used in database records, CSS files and so on. */ private $_name; /** * @var string service title to display in views. */ private $_title; /** * @var string the redirect url after successful authorization. */ private $_successUrl = ''; /** * @var string the redirect url after unsuccessful authorization (e.g. user canceled). */ private $_cancelUrl = ''; /** * @param string $id service id. */ public function setId($id) { $this->_id = $id; } /** * @return string service id */ public function getId() { if (empty($this->_id)) { $this->_id = $this->getName(); } return $this->_id; } /** * @return string service name. */ public function getName() { if ($this->_name === null) { $this->_name = $this->defaultName(); } return $this->_name; } /** * @param string $name service name. */ public function setName($name) { $this->_name = $name; } /** * @return string service title. */ public function getTitle() { if ($this->_title === null) { $this->_title = $this->defaultTitle(); } return $this->_title; } /** * @param string $title service title. */ public function setTitle($title) { $this->_title = $title; } /** * @param string $url successful URL. */ public function setSuccessUrl($url) { $this->_successUrl = $url; } /** * @return string successful URL. */ public function getSuccessUrl() { if (empty($this->_successUrl)) { $this->_successUrl = $this->defaultSuccessUrl(); } return $this->_successUrl; } /** * @param string $url cancel URL. */ public function setCancelUrl($url) { $this->_cancelUrl = $url; } /** * @return string cancel URL. */ public function getCancelUrl() { if (empty($this->_cancelUrl)) { $this->_cancelUrl = $this->defaultCancelUrl(); } return $this->_cancelUrl; } /** * Generates service name. * @return string service name. */ protected function defaultName() { return StringHelper::basename(get_class($this)); } /** * Generates service title. * @return string service title. */ protected function defaultTitle() { return StringHelper::basename(get_class($this)); } /** * Creates default {@link successUrl} value. * @return string success URL value. */ protected function defaultSuccessUrl() { return Yii::$app->getUser()->getReturnUrl(); } /** * Creates default {@link cancelUrl} value. * @return string cancel URL value. */ protected function defaultCancelUrl() { return Yii::$app->getRequest()->getAbsoluteUrl(); } /** * Redirect to the given URL or simply close the popup window. * @param mixed $url URL to redirect, could be a string or array config to generate a valid URL. * @param boolean $enforceRedirect indicates if redirect should be performed even in case of popup window. * @return \yii\web\Response response instance. */ public function redirect($url, $enforceRedirect = true) { $viewData = [ 'url' => $url, 'enforceRedirect' => $enforceRedirect, ]; $viewFile = __DIR__ . DIRECTORY_SEPARATOR . 'views' . DIRECTORY_SEPARATOR . 'redirect.php'; $response = Yii::$app->getResponse(); $response->content = Yii::$app->getView()->renderFile($viewFile, $viewData); return $response; } /** * Redirect to the URL. If URL is null, {@link successUrl} will be used. * @param string $url URL to redirect. * @return \yii\web\Response response instance. */ public function redirectSuccess($url = null) { if ($url === null) { $url = $this->getSuccessUrl(); } return $this->redirect($url); } /** * Redirect to the {@link cancelUrl} or simply close the popup window. * @param string $url URL to redirect. * @return \yii\web\Response response instance. */ public function redirectCancel($url = null) { if ($url === null) { $url = $this->getCancelUrl(); } return $this->redirect($url, false); } }