Пример #1
0
 protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
 {
     $store = null;
     $disabled = false;
     if ($code = $this->getRequest()->getParam('store')) {
         $store = Mage::getModel('core/store')->load($code);
     }
     if ($store instanceof Mage_Core_Model_Store) {
         /* @var Nosto_Tagging_Helper_Account $accountHelper */
         $accountHelper = Mage::helper('nosto_tagging/account');
         /* @var NostoAccount $nostoAccount */
         $nostoAccount = $accountHelper->find($store);
         if ($nostoAccount instanceof NostoAccountInterface) {
             foreach (NostoApiToken::getApiTokenNames() as $token) {
                 if (!$nostoAccount->getApiToken($token)) {
                     $disabled = true;
                     break;
                 }
             }
         }
     }
     if ($disabled === true) {
         /** @noinspection PhpUndefinedMethodInspection */
         $element->setDisabled('disabled');
         $metaOauth = new Nosto_Tagging_Model_Meta_Oauth();
         /** @noinspection PhpUndefinedVariableInspection */
         $metaOauth->loadData($store, $nostoAccount);
         $client = new NostoOAuthClient($metaOauth);
         $comment = sprintf('Your Nosto account is missing required tokens' . ' for updating settings to Nosto. Please click <a href="%s">' . ' here to re-connect</a> your account.', $client->getAuthorizationUrl());
         $element->setData('comment', $comment);
     }
     return parent::_getElementHtml($element);
 }
 /**
  * Redirects user to the Nosto OAuth 2 authorization server to fetch missing
  * scopes (API tokens) for an account.
  */
 public function syncAccountAction()
 {
     $this->getResponse()->setHeader('Content-type', 'application/json', true);
     /** @var Nosto_Tagging_Helper_Account $accountHelper */
     $accountHelper = Mage::helper('nosto_tagging/account');
     $store = $this->getSelectedStore();
     $account = !is_null($store) ? $accountHelper->find($store) : null;
     if ($this->getRequest()->isPost() && !is_null($store) && !is_null($account)) {
         /** @var Nosto_Tagging_Model_Meta_Oauth $meta */
         $meta = new Nosto_Tagging_Model_Meta_Oauth();
         $meta->loadData($store, $account);
         $client = new NostoOAuthClient($meta);
         $responseBody = array('success' => true, 'redirect_url' => $client->getAuthorizationUrl());
     }
     if (!isset($responseBody)) {
         $responseBody = array('success' => false, 'redirect_url' => $accountHelper->getIframeUrl($store, $account, array('message_type' => NostoMessage::TYPE_ERROR, 'message_code' => NostoMessage::CODE_ACCOUNT_CONNECT)));
     }
     $this->getResponse()->setBody(json_encode($responseBody));
 }
 /**
  * Returns the meta data model needed for using the OAuth2 client included
  * in the Nosto SDk.
  *
  * @param Mage_Core_Model_Store $store the store to get the oauth meta data for..
  *
  * @return Nosto_Tagging_Model_Meta_Oauth the meta data instance.
  */
 public function getMetaData(Mage_Core_Model_Store $store)
 {
     $meta = new Nosto_Tagging_Model_Meta_Oauth();
     $meta->loadData($store);
     return $meta;
 }