-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
adding services that can load GA data #56
- Loading branch information
1 parent
d7d67cb
commit ed97dcd
Showing
6 changed files
with
714 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,130 @@ | ||
<?php | ||
|
||
namespace App\Src\GA; | ||
|
||
|
||
class GoogleAnalyticsService | ||
{ | ||
|
||
/** | ||
* | ||
*/ | ||
public function main() | ||
{ | ||
dd('asd', config('services.ga')); | ||
$analytics = $this->initializeAnalytics(); | ||
$profile = $this->getFirstProfileId($analytics); | ||
$results = $this->getResults($analytics, $profile); | ||
$this->printResults($results); | ||
} | ||
|
||
/** | ||
* @return Google_Service_Analytics | ||
*/ | ||
public function initializeAnalytics() | ||
{ | ||
// Creates and returns the Analytics Reporting service object. | ||
|
||
// Use the developers console and download your service account | ||
// credentials in JSON format. Place them in this directory or | ||
// change the key file location if necessary. | ||
$config = config('services.ga'); | ||
|
||
// Create and configure a new client object. | ||
$client = new Google_Client(); | ||
$client->setApplicationName("SearchYuotubes"); | ||
$client->setAuthConfig($config); | ||
$client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']); | ||
$analytics = new Google_Service_Analytics($client); | ||
|
||
return $analytics; | ||
} | ||
|
||
/** | ||
* @param $analytics | ||
* | ||
* @return mixed | ||
* @throws Exception | ||
*/ | ||
public function getFirstProfileId($analytics) | ||
{ | ||
// Get the user's first view (profile) ID. | ||
|
||
// Get the list of accounts for the authorized user. | ||
$accounts = $analytics->management_accounts->listManagementAccounts(); | ||
|
||
if (count($accounts->getItems()) > 0) { | ||
$items = $accounts->getItems(); | ||
$firstAccountId = $items[0]->getId(); | ||
|
||
// Get the list of properties for the authorized user. | ||
$properties = $analytics->management_webproperties | ||
->listManagementWebproperties($firstAccountId); | ||
|
||
if (count($properties->getItems()) > 0) { | ||
$items = $properties->getItems(); | ||
$firstPropertyId = $items[0]->getId(); | ||
|
||
// Get the list of views (profiles) for the authorized user. | ||
$profiles = $analytics->management_profiles | ||
->listManagementProfiles($firstAccountId, $firstPropertyId); | ||
|
||
if (count($profiles->getItems()) > 0) { | ||
$items = $profiles->getItems(); | ||
|
||
// Return the first view (profile) ID. | ||
return $items[0]->getId(); | ||
|
||
} else { | ||
throw new Exception('No views (profiles) found for this user.'); | ||
} | ||
} else { | ||
throw new Exception('No properties found for this user.'); | ||
} | ||
} else { | ||
throw new Exception('No accounts found for this user.'); | ||
} | ||
} | ||
|
||
/** | ||
* @param $analytics | ||
* @param $profileId | ||
* | ||
* @return mixed | ||
*/ | ||
public function getResults($analytics, $profileId) | ||
{ | ||
// Calls the Core Reporting API and queries for the number of sessions | ||
// for the last seven days. | ||
return $analytics->data_ga->get( | ||
'ga:' . $profileId, | ||
'7daysAgo', | ||
'today', | ||
'ga:sessions' | ||
); | ||
} | ||
|
||
/** | ||
* @param $results | ||
*/ | ||
public function printResults($results) | ||
{ | ||
// Parses the response from the Core Reporting API and prints | ||
// the profile name and total sessions. | ||
if (count($results->getRows()) > 0) { | ||
|
||
// Get the profile name. | ||
$profileName = $results->getProfileInfo()->getProfileName(); | ||
|
||
// Get the entry for the first entry in the first row. | ||
$rows = $results->getRows(); | ||
$sessions = $rows[0][0]; | ||
|
||
// Print the results. | ||
print "First view (profile) found: $profileName\n"; | ||
print "Total sessions: $sessions\n"; | ||
} else { | ||
print "No results found.\n"; | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.