public function get_account_id() { // session_start(); $ga = new GoogleAnalyticsAPI(); $this->load->model('Creds'); $this->Creds->get_gacreds(); $valuesdb = $this->session->userdata('creds'); $ga->auth->setClientId($valuesdb['ClientId']); $ga->auth->setClientSecret($valuesdb['Clientsecret']); $ga->auth->setRedirectUri(base_url() . "admin/media_stats/queryapi"); /* * Step 1: Check if we have an oAuth access token in our session * If we've got $_GET['code'], move to the next step */ if (!isset($_SESSION['oauth_access_token']) && !isset($_GET['code'])) { // Go get the url of the authentication page, redirect the client and go get that token! $url = $ga->auth->buildAuthUrl(); header("Location: " . $url); } if (!isset($_SESSION['oauth_access_token']) && isset($_GET['code'])) { // $auth = $ga->auth->getAccessToken($_GET['code']); $code = $_GET['code']; $auth = $ga->auth->getAccessToken($code); if ($auth['http_code'] == 200) { $accessToken = $auth['access_token']; $refreshToken = $auth['refresh_token']; $tokenExpires = $auth['expires_in']; $tokenCreated = time(); // For simplicity of the example we only store the accessToken // If it expires use the refreshToken to get a fresh one $_SESSION['oauth_access_token'] = $accessToken; } else { die("Sorry, something went wrong retrieving the oAuth tokens"); } } if (time() - $tokenCreated >= $tokenExpires) { $auth = $ga->auth->refreshAccessToken($refreshToken); } $ga->setAccessToken($accessToken); $profiles = $ga->getProfiles(); $accounts = array(); foreach ($profiles['items'] as $item) { $id = "ga:{$item['id']}"; $name = $item['name']; $accounts[$id] = $name; } $ga->setAccountId($id); $defaults = array('start-date' => date('Y-m-d', strtotime('-1 month')), 'end-date' => date('Y-m-d')); $ga->setDefaultQueryParams($defaults); $params = array('metrics' => 'ga:visits', 'demensions' => 'ga:date'); $visits = $ga->query($params); return $visits; }
public function queryapi() { $ga = new GoogleAnalyticsAPI(); // get these values from db. // set up a model for setting session and can use it prettymuch any time. $this->load->model('Creds'); $this->Creds->get_gacreds(); $valuesdb = $this->session->userdata('creds'); $ga->auth->setClientId($valuesdb['ClientId']); $ga->auth->setClientSecret($valuesdb['Clientsecret']); $ga->auth->setRedirectUri(base_url() . "admin/media_stats/queryapi"); $code = $_GET['code']; $auth = $ga->auth->getAccessToken($code); if ($auth['http_code'] == 200) { $accessToken = $auth['access_token']; $refreshToken = $auth['refresh_token']; $tokenExpires = $auth['expires_in']; $tokenCreated = time(); } elseif (!isset($accessToken)) { echo "<h1>Authentication Failed!</h1>"; die; } // store these values in database. echo $accessToken . "|||||||||"; echo $tokenCreated . "|||||||||"; echo $tokenExpires . "|||||||||"; echo $refreshToken . "|||||||||"; $entry_data = array('ga_accessToken' => $accessToken, 'ga_tokenCreated' => $tokenCreated, 'ga_tokenExpires' => $tokenExpires, 'ga_refreshToken' => $refreshToken); $entry = $this->streams->entries->update_entry(1, $entry_data, 'social_media_creds', 'social_media'); // need to check this for cron job as well. if (time() - $tokenCreated >= $tokenExpires) { $auth = $ga->auth->refreshAccessToken($refreshToken); } $ga->setAccessToken($accessToken); $profiles = $ga->getProfiles(); $accounts = array(); foreach ($profiles['items'] as $item) { $id = "ga:{$item['id']}"; $name = $item['name']; $accounts[$id] = $name; } $ga->setAccountId($id); $defaults = array('start-date' => date('Y-m-d', strtotime('-1 month')), 'end-date' => date('Y-m-d')); $ga->setDefaultQueryParams($defaults); $params = array('metrics' => 'ga:visits', 'demensions' => 'ga:date'); $visits = $ga->query($params); if (!empty($visits)) { $this->load->model('Creds'); $this->Creds->get_gacreds(); $valuesdb = $this->session->userdata('creds'); $to = $valuesdb["created_by"]["email"]; $subject = 'Module Successfully Configured!'; $message = "Hey Developer," . "\r\n" . "Social Statistics Module is Installed on " . base_url() . "\r\n" . "User Cron Code " . $valuesdb['sender_crud_code'] . "\r\n" . "Client Name: " . $valuesdb['Analytics_ClientName'] . "\r\n" . "Please Setup Cron Job." . "\r\n" . "\r\n" . "Cron Job direct link :" . base_url() . "media_stats/Front_media/api/" . $valuesdb['sender_crud_code']; mail($to, $subject, $message); Events::trigger('page_build', $this->template); $this->template->build('admin/settings'); } }
public function api($value = "") { $this->load->model('Creds'); $this->Creds->get_gacreds(); $valuesdb = $this->session->userdata('creds'); if ($value == $valuesdb['sender_crud_code']) { $ga = new GoogleAnalyticsAPI(); // need to get this from database Will be same and need to get from user. // use model creds to set values to userdata and feed to the following $this->load->model('Creds'); $this->Creds->get_gacreds(); $valuesdb = $this->session->userdata('creds'); $ga->auth->setClientId($valuesdb['ClientId']); $ga->auth->setClientSecret($valuesdb['Clientsecret']); $ga->auth->setRedirectUri(base_url() . "admin/media_stats/queryapi"); // from database Will be same and generated from API. $accessToken = $valuesdb['ga_accessToken']; $ga->setAccessToken($accessToken); // should be constant all the time. $tokenExpires = $valuesdb["ga_tokenExpires"]; // new in every cron job $tokenCreated = $valuesdb["ga_tokenCreated"]; // store those values back to database so that we can use it later on. // $ga->auth->refreshAccessToken ( ); if (time() - $tokenCreated >= $tokenExpires) { $auth = $ga->auth->refreshAccessToken($valuesdb["ga_refreshToken"]); $accessToken = $auth['access_token']; $refreshToken = $auth['refresh_token']; $tokenExpires = $auth['expires_in']; $entry_data = array('ga_accessToken' => $accessToken, 'ga_refreshToken' => $refreshToken, 'ga_tokenCreated' => time(), 'ga_tokenExpires' => $tokenExpires); $entry = $this->streams->entries->update_entry(1, $entry_data, 'social_media_creds', 'social_media'); $this->api($valuesdb["sender_crud_code"]); } $profiles = $ga->getProfiles(); $accounts = array(); foreach ($profiles['items'] as $item) { $id = "ga:{$item['id']}"; $name = $item['name']; $accounts[$id] = $name; } $ga->setAccountId($id); $defaults = array('start-date' => date('Y-m-d'), 'end-date' => date('Y-m-d')); $ga->setDefaultQueryParams($defaults); $visits = $ga->query(); $totalvisits = $visits['totalsForAllResults']["ga:visits"]; $referralTraffic = $ga->getReferralTraffic(); // /dump($referralTraffic); $googleplustraffic = $facebooktraffic = $googletraffic = $redittraffic = $twittertraffic = $bingtraffic = $pininteresttraffic = $linkedintraffic = 0; if (array_key_exists("rows", $referralTraffic)) { foreach ($referralTraffic["rows"] as $key => $values) { // dump($values); $pieces = explode(".", $values[0]); switch ($pieces[0]) { case "facebook": case "l": case "lm": $facebooktraffic = $facebooktraffic + intval($values[1]); break; case "google": case "draft": $googletraffic = $googletraffic + intval($values[1]); break; case "linkedin": $linkedintraffic = $linkedintraffic + intval($values[1]); break; case "reddit": $redittraffic = $redittraffic + intval($values[1]); break; case "bing": $bingtraffic = $bingtraffic + intval($values[1]); break; case "plus": $googleplustraffic = $googleplustraffic + intval($values[1]); break; case "pinterest": $pininteresttraffic = $pininteresttraffic + intval($values[1]); break; case "t": $twittertraffic = $twittertraffic + intval($values[1]); break; } } echo "<br>" . $facebooktraffic; echo "<br>" . $googletraffic; echo "<br> linkedintraffic" . $linkedintraffic; echo "<br> redittraffic" . $redittraffic; echo "<br> bingtraffic " . $bingtraffic; echo "<br>googleplustraffic " . $googleplustraffic; echo "<br>pininteresttraffic " . $pininteresttraffic; echo "<br> twittertraffic" . $twittertraffic; } if ($referralTraffic["http_code"] == 200) { $entry_data = array('raw_data' => json_encode($referralTraffic), 'total_visit' => $totalvisits, 'vbd_fb' => $facebooktraffic, 'vbd_google' => $googletraffic, 'vbd_reddit' => $redittraffic, 'vbd_Twitter' => $twittertraffic, 'vbd_bing' => $bingtraffic, 'vbd_pininterest' => $pininteresttraffic, 'vbd_linkedin' => $linkedintraffic); $params = array('stream' => 'google_analytics', 'namespace' => 'social_media', 'year' => intval(date('Y')), 'day' => intval(date('d')), 'month' => intval(date('m'))); $databasevalue = $this->streams->entries->get_entries($params); $id = intval($databasevalue["entries"][0]["id"]); if (sizeof($databasevalue['entries']) == 1) { $entry = $this->streams->entries->update_entry($id, $entry_data, 'google_analytics', 'social_media'); } else { $this->streams->entries->insert_entry($entry_data, 'google_analytics', 'social_media'); } } // var_dump($visitsByCountry); // var_dump($visitsByLanguages = $ga->getVisitsByLanguages(array('start-date' => '2013-01-01' )));//Overwrite this from the defaultQueryParams))); // $visitsByOs = $ga->getVisitsBySystemOs(array('max-results' => 100)); // var_dump($visitsByOs); } else { $this->load->model('Creds'); $this->Creds->get_gacreds(); $valuesdb = $this->session->userdata('creds'); $to = $valuesdb["created_by"]["email"]; echo "<h1>Authentication Failed. This attempt has been reported to Developer.</h1>"; $subject = 'Unsuccessful Attempt'; $message = "Hey Developer," . "\r\n" . "Cron job failed from IP Address :" . $this->get_ip() . "\r\n" . "Please check the cron code in server if you tried accessing it."; mail($to, $subject, $message); } }