Oara\Network\Publisher\Smg::login PHP Метод

login() публичный Метод

public login ( $credentials )
$credentials
    public function login($credentials)
    {
        $this->_credentials = $credentials;
        $this->_client = new \Oara\Curl\Access($credentials);
        $user = $this->_credentials['user'];
        $password = $this->_credentials['password'];
        $loginUrl = 'https://member.impactradius.co.uk/secure/login.user';
        $valuesLogin = array(new \Oara\Curl\Parameter('j_username', $user), new \Oara\Curl\Parameter('j_password', $password));
        $urls = array();
        $urls[] = new \Oara\Curl\Request($loginUrl, $valuesLogin);
        $this->_client->post($urls);
        // Get accounts and API credentials for each account
        $urls = array();
        $urls[] = new \Oara\Curl\Request('https://member.impactradius.co.uk/secure/mediapartner/home/pview.ihtml', array());
        $exportReport = $this->_client->get($urls);
        if (preg_match_all('/\\/secure\\/member\\/set\\-current\\-usership\\-flow\\.ihtml\\?newUsershipId=(.+)\'/', $exportReport[0], $match)) {
            $this->_accounts = array();
            for ($i = 0; $i < count($match[1]); $i++) {
                $accountId = $match[1][$i];
                $urls = array();
                $urls[] = new \Oara\Curl\Request('https://member.impactradius.co.uk/secure/member/set-current-usership-flow.ihtml?newUsershipId=' . $accountId, array());
                $this->_client->get($urls);
                // Get API credentials for this account
                $urls = array();
                $urls[] = new \Oara\Curl\Request('https://member.impactradius.co.uk/secure/mediapartner/accountSettings/mp-wsapi-flow.ihtml?', array());
                $exportReport = $this->_client->get($urls);
                $dom = new \Zend_Dom_Query($exportReport[0]);
                $results = $dom->query('div .uitkFields');
                $count = \count($results);
                if ($count == 0) {
                    $activeAPI = array(new \Oara\Curl\Parameter('_eventId', "activate"));
                    $urls = array();
                    $urls[] = new \Oara\Curl\Request('https://member.impactradius.co.uk/secure/mediapartner/accountSettings/mp-wsapi-flow.ihtml?', $activeAPI);
                    $this->_client->post($urls);
                    $urls = array();
                    $urls[] = new \Oara\Curl\Request('https://member.impactradius.co.uk/secure/mediapartner/accountSettings/mp-wsapi-flow.ihtml?', array());
                    $exportReport = $this->_client->get($urls);
                    $dom = new \Zend_Dom_Query($exportReport[0]);
                    $results = $dom->query('div .uitkFields');
                    $count = \count($results);
                    // get number of matches: 4
                    if ($count == 0) {
                        throw new \Exception("No API credentials");
                    }
                }
                $j = 0;
                $account = array();
                foreach ($results as $result) {
                    if ($j == 0) {
                        $account['accountSid'] = \str_replace(array("\n", "\t", " "), "", $result->nodeValue);
                    } else {
                        if ($j == 1) {
                            $account['authToken'] = \str_replace(array("\n", "\t", " "), "", $result->nodeValue);
                        } else {
                            $this->_accounts[] = $account;
                            break;
                        }
                    }
                    $j++;
                }
            }
        }
    }