private function initInstagram(array $options = array()) { $config = array('client_id' => JO_Registry::get('oauth_in_key'), 'client_secret' => JO_Registry::get('oauth_in_secret'), 'grant_type' => 'authorization_code', 'redirect_uri' => WM_Router::create($this->getRequest()->getBaseUrl() . '?controller=instagram')); $this->instagram = new WM_Instagram(JO_Array::array_extend($config, $options)); if ($this->user_data) { return true; } if (JO_Session::get('user[user_id]')) { if (JO_Session::get('user[instagram_connect]') != 1 && !$this->getRequest()->getParam('state')) { return false; } } $InstagramAccessToken = $this->instagram->getAccessToken(); $user_data = JO_Json::decode($this->instagram->getUser(), true); if (isset($user_data['meta']['code']) && $user_data['meta']['code'] == 200) { JO_Session::set('InstagramAccessToken', $InstagramAccessToken); $this->user_data = $user_data['data']; } elseif ($InstagramAccessToken) { JO_Session::set('InstagramAccessToken', $InstagramAccessToken); $this->instagram->setAccessToken($InstagramAccessToken); } elseif (JO_Session::get('InstagramAccessToken')) { $this->instagram->setAccessToken(JO_Session::get('InstagramAccessToken')); } elseif (JO_Session::get('user[instagram_token]')) { $this->instagram->setAccessToken(JO_Session::get('user[instagram_token]')); } if (!$this->user_data) { $user_data = JO_Json::decode($this->instagram->getUser(), true); if (isset($user_data['meta']['code']) && $user_data['meta']['code'] == 200) { $this->user_data = $user_data['data']; } } return $this->user_data ? true : false; }
public function instagram_connectAction() { $request = $this->getRequest(); if (!JO_Session::get('user[user_id]')) { if (!$request->isXmlHttpRequest()) { $this->redirect(WM_Router::create($this->getRequest()->getBaseUrl() . '?controller=settings')); } exit('[]'); } if ($request->getQuery('state') && $request->getQuery('state') == JO_Session::get('state')) { $state = JO_Session::get('state'); } else { $state = md5(uniqid(rand(), TRUE)); JO_Session::set('state', $state); } $config = array('client_id' => JO_Registry::get('oauth_in_key'), 'client_secret' => JO_Registry::get('oauth_in_secret'), 'grant_type' => 'authorization_code', 'redirect_uri' => WM_Router::create($this->getRequest()->getBaseUrl() . '?controller=instagram&next=' . urlencode(WM_Router::create($request->getBaseUrl() . '?controller=settings&action=instagram_connect&state=' . $state)))); $instagram = new WM_Instagram($config); $InstagramAccessToken = $instagram->getAccessToken(); $user_data = JO_Json::decode($instagram->getUser(), true); if (isset($user_data['meta']['code']) && $user_data['meta']['code'] == 200) { JO_Session::set('InstagramAccessToken', $InstagramAccessToken); } elseif ($InstagramAccessToken) { JO_Session::set('InstagramAccessToken', $InstagramAccessToken); $instagram->setAccessToken($InstagramAccessToken); } elseif (JO_Session::get('InstagramAccessToken')) { $instagram->setAccessToken(JO_Session::get('InstagramAccessToken')); } elseif (JO_Session::get('user[instagram_token]')) { JO_Session::set('InstagramAccessToken', JO_Session::get('user[instagram_token]')); $instagram->setAccessToken(JO_Session::get('user[instagram_token]')); } if (!isset($user_data['meta']['code']) || $user_data['meta']['code'] != 200) { $user_data = JO_Json::decode($instagram->getUser(), true); } if ($request->getQuery('state') && $request->getQuery('state') == JO_Session::get('state') && isset($user_data['meta']['code']) && $user_data['meta']['code'] == 200) { JO_Session::clear('state'); Model_Users::edit2(JO_Session::get('user[user_id]'), array('instagram_connect' => '1', 'instagram_profile_id' => $user_data['data']['id'], 'instagram_token' => (string) JO_Session::get('InstagramAccessToken'))); $this->redirect(WM_Router::create($this->getRequest()->getBaseUrl() . '?controller=settings')); exit; } if ($request->getPost('instagram_connect') == 'on') { if (isset($user_data['meta']['code']) && $user_data['meta']['code'] == 200) { Model_Users::edit2(JO_Session::get('user[user_id]'), array('instagram_connect' => '1', 'instagram_profile_id' => $user_data['data']['id'], 'instagram_token' => (string) JO_Session::get('InstagramAccessToken'))); } else { JO_Session::set('InstagramAccessToken', false); JO_Session::set('user[instagram_token]', array_merge((array) JO_Session::get('user'), array('instagram_token' => null))); $this->view->login = WM_Router::create($this->getRequest()->getBaseUrl() . '?controller=instagram&next=' . urlencode(WM_Router::create($request->getBaseUrl() . '?controller=settings&action=instagram_connect&state=' . $state))); } } else { Model_Users::edit2(JO_Session::get('user[user_id]'), array('instagram_connect' => '0', 'instagram_profile_id' => '0', 'instagram_token' => '')); } if (!$this->view->login) { $ud = Model_Users::getUser(JO_Session::get('user[user_id]'), true); if ($ud) { $this->view->connected = $ud['instagram_connect'] ? 'on' : 'off'; } else { JO_Session::set('InstagramAccessToken', false); JO_Session::set('user[instagram_token]', array_merge((array) JO_Session::get('user'), array('instagram_token' => null))); $this->view->connected = 'off'; } } if (!$request->isXmlHttpRequest()) { $this->redirect(WM_Router::create($this->getRequest()->getBaseUrl() . '?controller=settings')); exit; } echo $this->renderScript('json'); }