コード例 #1
0
 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);
     }
 }