Файловый менеджер - Редактировать - /home/wuectly/www/03cbe/data.tar
Назад
calendar.php 0000604 00000036730 15245570410 0007036 0 ustar 00 <?php /** * @package Joomla.Platform * @subpackage Google * * @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE */ defined('JPATH_PLATFORM') or die; use Joomla\Registry\Registry; /** * Google Calendar data class for the Joomla Platform. * * @since 3.1.4 * @deprecated 4.0 Use the `joomla/google` package via Composer instead */ class JGoogleDataCalendar extends JGoogleData { /** * Constructor. * * @param Registry $options Google options object * @param JGoogleAuth $auth Google data http client object * * @since 3.1.4 */ public function __construct(Registry $options = null, JGoogleAuth $auth = null) { parent::__construct($options, $auth); if (isset($this->auth) && !$this->auth->getOption('scope')) { $this->auth->setOption('scope', 'https://www.googleapis.com/auth/calendar'); } } /** * Method to remove a calendar from a user's calendar list * * @param string $calendarID ID of calendar to delete * * @return boolean Success or failure * * @since 3.1.4 * @throws UnexpectedValueException */ public function removeCalendar($calendarID) { if ($this->isAuthenticated()) { $jdata = $this->query('https://www.googleapis.com/calendar/v3/users/me/calendarList/' . urlencode($calendarID), null, null, 'delete'); if ($jdata->body != '') { throw new UnexpectedValueException("Unexpected data received from Google: `{$jdata->body}`."); } return true; } else { return false; } } /** * Method to get a calendar's settings from Google * * @param string $calendarID ID of calendar to get. * * @return mixed Data from Google * * @since 3.1.4 * @throws UnexpectedValueException */ public function getCalendar($calendarID) { if ($this->isAuthenticated()) { $jdata = $this->query('https://www.googleapis.com/calendar/v3/users/me/calendarList/' . urlencode($calendarID)); if ($data = json_decode($jdata->body, true)) { return $data; } else { throw new UnexpectedValueException("Unexpected data received from Google: `{$jdata->body}`."); } } else { return false; } } /** * Method to add a calendar to a user's Google Calendar list * * @param string $calendarID New calendar ID * @param array $options New calendar settings * * @return mixed Data from Google * * @since 3.1.4 * @throws UnexpectedValueException */ public function addCalendar($calendarID, $options = array()) { if ($this->isAuthenticated()) { $options['id'] = $calendarID; $url = 'https://www.googleapis.com/calendar/v3/users/me/calendarList'; $jdata = $this->query($url, json_encode($options), array('Content-type' => 'application/json'), 'post'); if ($data = json_decode($jdata->body, true)) { return $data; } else { throw new UnexpectedValueException("Unexpected data received from Google: `{$jdata->body}`."); } } else { return false; } } /** * Method to retrieve calendar list from Google * * @param array $options Search settings * @param int $maxpages Maximum number of pages of calendars to return * * @return mixed Data from Google * * @since 3.1.4 * @throws UnexpectedValueException */ public function listCalendars($options = array(), $maxpages = 1) { if ($this->isAuthenticated()) { $next = array_key_exists('nextPageToken', $options) ? $options['nextPage'] : null; unset($options['nextPageToken']); $url = 'https://www.googleapis.com/calendar/v3/users/me/calendarList?' . http_build_query($options); return $this->listGetData($url, $maxpages, $next); } else { return false; } } /** * Method to edit a Google Calendar's settings * * @param string $calendarID Calendar ID * @param array $options Calendar settings * * @return mixed Data from Google * * @since 3.1.4 * @throws UnexpectedValueException */ public function editCalendarSettings($calendarID, $options) { if ($this->isAuthenticated()) { $url = 'https://www.googleapis.com/calendar/v3/users/me/calendarList/' . urlencode($calendarID); $jdata = $this->query($url, json_encode($options), array('Content-type' => 'application/json'), 'put'); if ($data = json_decode($jdata->body, true)) { return $data; } else { throw new UnexpectedValueException("Unexpected data received from Google: `{$jdata->body}`."); } } else { return false; } } /** * Method to clear a Google Calendar * * @param string $calendarID ID of calendar to clear * * @return boolean Success or failure * * @since 3.1.4 * @throws UnexpectedValueException */ public function clearCalendar($calendarID) { if ($this->isAuthenticated()) { $data = $this->query('https://www.googleapis.com/calendar/v3/users/me/calendars/' . urlencode($calendarID) . '/clear', null, null, 'post'); if ($data->body != '') { throw new UnexpectedValueException("Unexpected data received from Google: `{$data->body}`."); } return true; } else { return false; } } /** * Method to delete a calendar from Google * * @param string $calendarID ID of calendar to delete. * * @return boolean Success or failure * * @since 3.1.4 * @throws UnexpectedValueException */ public function deleteCalendar($calendarID) { if ($this->isAuthenticated()) { $data = $this->query('https://www.googleapis.com/calendar/v3/users/me/calendars/' . urlencode($calendarID), null, null, 'delete'); if ($data->body != '') { throw new UnexpectedValueException("Unexpected data received from Google: `{$data->body}`."); } return true; } else { return false; } } /** * Method to create a Google Calendar * * @param string $title New calendar title * @param array $options New calendar settings * * @return mixed Data from Google. * * @since 3.1.4 * @throws UnexpectedValueException */ public function createCalendar($title, $options = array()) { if ($this->isAuthenticated()) { $options['summary'] = $title; $url = 'https://www.googleapis.com/calendar/v3/calendars'; $jdata = $this->query($url, json_encode($options), array('Content-type' => 'application/json'), 'post'); if ($data = json_decode($jdata->body, true)) { return $data; } else { throw new UnexpectedValueException("Unexpected data received from Google: `{$jdata->body}`."); } } else { return false; } } /** * Method to edit a Google Calendar * * @param string $calendarID Calendar ID. * @param array $options Calendar settings. * * @return mixed Data from Google. * * @since 3.1.4 * @throws UnexpectedValueException */ public function editCalendar($calendarID, $options) { if ($this->isAuthenticated()) { $url = 'https://www.googleapis.com/calendar/v3/users/me/calendars/' . urlencode($calendarID); $jdata = $this->query($url, json_encode($options), array('Content-type' => 'application/json'), 'put'); $data = json_decode($jdata->body, true); if ($data && array_key_exists('items', $data)) { return $data; } else { throw new UnexpectedValueException("Unexpected data received from Google: `{$jdata->body}`."); } } else { return false; } } /** * Method to delete an event from a Google Calendar * * @param string $calendarID ID of calendar to delete from * @param string $eventID ID of event to delete. * * @return boolean Success or failure. * * @since 3.1.4 * @throws UnexpectedValueException */ public function deleteEvent($calendarID, $eventID) { if ($this->isAuthenticated()) { $url = 'https://www.googleapis.com/calendar/v3/users/me/calendars/' . urlencode($calendarID) . '/events/' . urlencode($eventID); $data = $this->query($url, null, null, 'delete'); if ($data->body != '') { throw new UnexpectedValueException("Unexpected data received from Google: `{$data->body}`."); } return true; } else { return false; } } /** * Method to get an event from a Google Calendar * * @param string $calendarID ID of calendar * @param string $eventID ID of event to get * @param array $options Options to send to Google * * @return mixed Data from Google. * * @since 3.1.4 * @throws UnexpectedValueException */ public function getEvent($calendarID, $eventID, $options = array()) { if ($this->isAuthenticated()) { $url = 'https://www.googleapis.com/calendar/v3/users/me/calendarList/'; $url .= urlencode($calendarID) . '/events/' . urlencode($eventID) . '?' . http_build_query($options); $jdata = $this->query($url); if ($data = json_decode($jdata->body, true)) { return $data; } else { throw new UnexpectedValueException("Unexpected data received from Google: `{$jdata->body}`."); } } else { return false; } } /** * Method to create a Google Calendar event * * @param string $calendarID ID of calendar * @param mixed $start Event start time * @param mixed $end Event end time * @param array $options New event settings * @param mixed $timezone Timezone for event * @param boolean $allday Treat event as an all-day event * @param boolean $notify Notify participants * * @return mixed Data from Google. * * @since 3.1.4 * @throws InvalidArgumentException * @throws UnexpectedValueException */ public function createEvent($calendarID, $start, $end = false, $options = array(), $timezone = false, $allday = false, $notify = false) { if ($this->isAuthenticated()) { if (!$start) { $startobj = new DateTime; } elseif (is_int($start)) { $startobj = new DateTime; $startobj->setTimestamp($start); } elseif (is_string($start)) { $startobj = new DateTime($start); } elseif (is_a($start, 'DateTime')) { $startobj = $start; } else { throw new InvalidArgumentException('Invalid event start time.'); } if (!$end) { $endobj = $startobj; } elseif (is_int($end)) { $endobj = new DateTime; $endobj->setTimestamp($end); } elseif (is_string($end)) { $endobj = new DateTime($end); } elseif (is_a($end, 'DateTime')) { $endobj = $end; } else { throw new InvalidArgumentException('Invalid event end time.'); } if ($allday) { $options['start'] = array('date' => $startobj->format('Y-m-d')); $options['end'] = array('date' => $endobj->format('Y-m-d')); } else { $options['start'] = array('dateTime' => $startobj->format(DateTime::RFC3339)); $options['end'] = array('dateTime' => $endobj->format(DateTime::RFC3339)); } if ($timezone === true) { $options['start']['timeZone'] = $startobj->getTimezone()->getName(); $options['end']['timeZone'] = $endobj->getTimezone()->getName(); } elseif (is_a($timezone, 'DateTimeZone')) { $options['start']['timeZone'] = $timezone->getName(); $options['end']['timeZone'] = $timezone->getName(); } elseif (is_string($timezone)) { $options['start']['timeZone'] = $timezone; $options['end']['timeZone'] = $timezone; } $url = 'https://www.googleapis.com/calendar/v3/calendars/' . urlencode($calendarID) . '/events' . ($notify ? '?sendNotifications=true' : ''); $jdata = $this->query($url, json_encode($options), array('Content-type' => 'application/json'), 'post'); if ($data = json_decode($jdata->body, true)) { return $data; } else { throw new UnexpectedValueException("Unexpected data received from Google: `{$jdata->body}`."); } } else { return false; } } /** * Method to retrieve a list of events on a Google calendar * * @param string $calendarID Calendar ID * @param string $eventID ID of the event to change * @param array $options Search settings * @param int $maxpages Minimum number of events to retrieve (more may be retrieved depending on page size) * * @return mixed Data from Google. * * @since 3.1.4 * @throws UnexpectedValueException */ public function listRecurrences($calendarID, $eventID, $options = array(), $maxpages = 1) { if ($this->isAuthenticated()) { $next = array_key_exists('nextPageToken', $options) ? $options['nextPage'] : null; unset($options['nextPageToken']); $url = 'https://www.googleapis.com/calendar/v3/users/me/calendars/' . urlencode($calendarID) . '/events/' . urlencode($eventID) . '/instances'; $url .= '?' . http_build_query($options); return $this->listGetData($url, $maxpages, $next); } else { return false; } } /** * Method to retrieve a list of events on a Google calendar * * @param string $calendarID Calendar ID * @param array $options Calendar settings * @param int $maxpages Cycle through pages of data to generate a complete list * * @return mixed Data from Google. * * @since 3.1.4 * @throws UnexpectedValueException */ public function listEvents($calendarID, $options = array(), $maxpages = 1) { if ($this->isAuthenticated()) { $next = array_key_exists('nextPageToken', $options) ? $options['nextPage'] : null; unset($options['nextPageToken']); $url = 'https://www.googleapis.com/calendar/v3/calendars/' . urlencode($calendarID) . '/events?' . http_build_query($options); return $this->listGetData($url, $maxpages, $next); } else { return false; } } /** * Method to move an event from one calendar to another * * @param string $calendarID Calendar ID * @param string $eventID ID of the event to change * @param string $destID Calendar ID * @param boolean $notify Notify participants of changes * * @return mixed Data from Google. * * @since 3.1.4 * @throws UnexpectedValueException */ public function moveEvent($calendarID, $eventID, $destID, $notify = false) { if ($this->isAuthenticated()) { $url = 'https://www.googleapis.com/calendar/v3/calendars/' . urlencode($calendarID) . '/events/' . urlencode($eventID) . '/move'; $url .= '?destination=' . $destID . ($notify ? '&sendNotifications=true' : ''); $jdata = $this->query($url, null, null, 'post'); if ($data = json_decode($jdata->body, true)) { return $data; } else { throw new UnexpectedValueException("Unexpected data received from Google: `{$jdata->body}`."); } } else { return false; } } /** * Method to edit a Google Calendar event * * @param string $calendarID Calendar ID * @param string $eventID ID of the event to change * @param array $options Event settings * @param boolean $notify Notify participants of changes * * @return mixed Data from Google. * * @since 3.1.4 * @throws UnexpectedValueException */ public function editEvent($calendarID, $eventID, $options, $notify = false) { if ($this->isAuthenticated()) { $url = 'https://www.googleapis.com/calendar/v3/calendars/'; $url .= urlencode($calendarID) . '/events/' . urlencode($eventID) . ($notify ? '?sendNotifications=true' : ''); $jdata = $this->query($url, json_encode($options), array('Content-type' => 'application/json'), 'put'); if ($data = json_decode($jdata->body, true)) { return $data; } else { throw new UnexpectedValueException("Unexpected data received from Google: `{$jdata->body}`."); } } else { return false; } } } plus.php 0000604 00000004274 15245570410 0006246 0 ustar 00 <?php /** * @package Joomla.Platform * @subpackage Google * * @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE */ defined('JPATH_PLATFORM') or die; use Joomla\Registry\Registry; /** * Google+ data class for the Joomla Platform. * * @since 3.1.4 * @deprecated 4.0 Use the `joomla/google` package via Composer instead */ class JGoogleDataPlus extends JGoogleData { /** * @var JGoogleDataPlusPeople Google+ API object for people. * @since 3.1.4 */ protected $people; /** * @var JGoogleDataPlusActivities Google+ API object for people. * @since 3.1.4 */ protected $activities; /** * @var JGoogleDataPlusComments Google+ API object for people. * @since 3.1.4 */ protected $comments; /** * Constructor. * * @param Registry $options Google options object * @param JGoogleAuth $auth Google data http client object * * @since 3.1.4 */ public function __construct(Registry $options = null, JGoogleAuth $auth = null) { // Setup the default API url if not already set. $options->def('api.url', 'https://www.googleapis.com/plus/v1/'); parent::__construct($options, $auth); if (isset($this->auth) && !$this->auth->getOption('scope')) { $this->auth->setOption('scope', 'https://www.googleapis.com/auth/plus.me'); } } /** * Magic method to lazily create API objects * * @param string $name Name of property to retrieve * * @return JGoogleDataPlus Google+ API object (people, activities, comments). * * @since 3.1.4 */ public function __get($name) { switch ($name) { case 'people': if ($this->people == null) { $this->people = new JGoogleDataPlusPeople($this->options, $this->auth); } return $this->people; case 'activities': if ($this->activities == null) { $this->activities = new JGoogleDataPlusActivities($this->options, $this->auth); } return $this->activities; case 'comments': if ($this->comments == null) { $this->comments = new JGoogleDataPlusComments($this->options, $this->auth); } return $this->comments; } } } picasa/photo.php 0000604 00000016217 15245570410 0007654 0 ustar 00 <?php /** * @package Joomla.Platform * @subpackage Google * * @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE */ defined('JPATH_PLATFORM') or die; use Joomla\Registry\Registry; /** * Google Picasa data class for the Joomla Platform. * * @since 3.1.4 * @deprecated 4.0 Use the `joomla/google` package via Composer instead */ class JGoogleDataPicasaPhoto extends JGoogleData { /** * @var SimpleXMLElement The photo's XML * @since 3.1.4 */ protected $xml; /** * Constructor. * * @param SimpleXMLElement $xml XML from Google * @param Registry $options Google options object * @param JGoogleAuth $auth Google data http client object * * @since 3.1.4 */ public function __construct(SimpleXMLElement $xml, Registry $options = null, JGoogleAuth $auth = null) { $this->xml = $xml; parent::__construct($options, $auth); if (isset($this->auth) && !$this->auth->getOption('scope')) { $this->auth->setOption('scope', 'https://picasaweb.google.com/data/'); } } /** * Method to delete a Picasa photo * * @param mixed $match Check for most up to date photo * * @return boolean Success or failure. * * @since 3.1.4 * @throws Exception * @throws RuntimeException * @throws UnexpectedValueException */ public function delete($match = '*') { if ($this->isAuthenticated()) { $url = $this->getLink(); if ($match === true) { $match = $this->xml->xpath('./@gd:etag'); $match = $match[0]; } try { $jdata = $this->query($url, null, array('GData-Version' => 2, 'If-Match' => $match), 'delete'); } catch (Exception $e) { if (strpos($e->getMessage(), 'Error code 412 received requesting data: Mismatch: etags') === 0) { throw new RuntimeException("Etag match failed: `$match`.", $e->getCode(), $e); } throw $e; } if ($jdata->body != '') { throw new UnexpectedValueException("Unexpected data received from Google: `{$jdata->body}`."); } $this->xml = null; return true; } else { return false; } } /** * Method to get the photo link * * @param string $type Type of link to return * * @return string Link or false on failure * * @since 3.1.4 */ public function getLink($type = 'edit') { $links = $this->xml->link; foreach ($links as $link) { if ($link->attributes()->rel == $type) { return (string) $link->attributes()->href; } } return false; } /** * Method to get the photo's URL * * @return string Link * * @since 3.1.4 */ public function getUrl() { return (string) $this->xml->children()->content->attributes()->src; } /** * Method to get the photo's thumbnails * * @return array An array of thumbnails * * @since 3.1.4 */ public function getThumbnails() { $thumbs = array(); foreach ($this->xml->children('media', true)->group->thumbnail as $item) { $url = (string) $item->attributes()->url; $width = (int) $item->attributes()->width; $height = (int) $item->attributes()->height; $thumbs[$width] = array('url' => $url, 'w' => $width, 'h' => $height); } return $thumbs; } /** * Method to get the title of the photo * * @return string Photo title * * @since 3.1.4 */ public function getTitle() { return (string) $this->xml->children()->title; } /** * Method to get the summary of the photo * * @return string Photo description * * @since 3.1.4 */ public function getSummary() { return (string) $this->xml->children()->summary; } /** * Method to get the access level of the photo * * @return string Photo access level * * @since 3.1.4 */ public function getAccess() { return (string) $this->xml->children('gphoto', true)->access; } /** * Method to get the time of the photo * * @return double Photo time * * @since 3.1.4 */ public function getTime() { return (double) $this->xml->children('gphoto', true)->timestamp / 1000; } /** * Method to get the size of the photo * * @return int Photo size * * @since 3.1.4 */ public function getSize() { return (int) $this->xml->children('gphoto', true)->size; } /** * Method to get the height of the photo * * @return int Photo height * * @since 3.1.4 */ public function getHeight() { return (int) $this->xml->children('gphoto', true)->height; } /** * Method to get the width of the photo * * @return int Photo width * * @since 3.1.4 */ public function getWidth() { return (int) $this->xml->children('gphoto', true)->width; } /** * Method to set the title of the photo * * @param string $title New photo title * * @return JGoogleDataPicasaPhoto The object for method chaining * * @since 3.1.4 */ public function setTitle($title) { $this->xml->children()->title = $title; return $this; } /** * Method to set the summary of the photo * * @param string $summary New photo description * * @return JGoogleDataPicasaPhoto The object for method chaining * * @since 3.1.4 */ public function setSummary($summary) { $this->xml->children()->summary = $summary; return $this; } /** * Method to set the access level of the photo * * @param string $access New photo access level * * @return JGoogleDataPicasaPhoto The object for method chaining * * @since 3.1.4 */ public function setAccess($access) { $this->xml->children('gphoto', true)->access = $access; return $this; } /** * Method to set the time of the photo * * @param int $time New photo time * * @return JGoogleDataPicasaPhoto The object for method chaining * * @since 3.1.4 */ public function setTime($time) { $this->xml->children('gphoto', true)->timestamp = $time * 1000; return $this; } /** * Method to modify a Picasa Photo * * @param string $match Optional eTag matching parameter * * @return mixed Data from Google. * * @since 3.1.4 */ public function save($match = '*') { if ($this->isAuthenticated()) { $url = $this->getLink(); if ($match === true) { $match = $this->xml->xpath('./@gd:etag'); $match = $match[0]; } try { $headers = array('GData-Version' => 2, 'Content-type' => 'application/atom+xml', 'If-Match' => $match); $jdata = $this->query($url, $this->xml->asXml(), $headers, 'put'); } catch (Exception $e) { if (strpos($e->getMessage(), 'Error code 412 received requesting data: Mismatch: etags') === 0) { throw new RuntimeException("Etag match failed: `$match`.", $e->getCode(), $e); } throw $e; } $this->xml = $this->safeXml($jdata->body); return $this; } else { return false; } } /** * Refresh photo data * * @return mixed Data from Google * * @since 3.1.4 */ public function refresh() { if ($this->isAuthenticated()) { $url = $this->getLink(); $jdata = $this->query($url, null, array('GData-Version' => 2)); $this->xml = $this->safeXml($jdata->body); return $this; } else { return false; } } } picasa/album.php 0000604 00000023541 15245570410 0007621 0 ustar 00 <?php /** * @package Joomla.Platform * @subpackage Google * * @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE */ defined('JPATH_PLATFORM') or die; use Joomla\Registry\Registry; /** * Google Picasa data class for the Joomla Platform. * * @since 3.1.4 * @deprecated 4.0 Use the `joomla/google` package via Composer instead */ class JGoogleDataPicasaAlbum extends JGoogleData { /** * @var SimpleXMLElement The album's XML * @since 3.1.4 */ protected $xml; /** * Constructor. * * @param SimpleXMLElement $xml XML from Google * @param Registry $options Google options object * @param JGoogleAuth $auth Google data http client object * * @since 3.1.4 */ public function __construct(SimpleXMLElement $xml, Registry $options = null, JGoogleAuth $auth = null) { $this->xml = $xml; parent::__construct($options, $auth); if (isset($this->auth) && !$this->auth->getOption('scope')) { $this->auth->setOption('scope', 'https://picasaweb.google.com/data/'); } } /** * Method to delete a Picasa album * * @param mixed $match Check for most up to date album * * @return boolean Success or failure. * * @since 3.1.4 * @throws Exception * @throws RuntimeException * @throws UnexpectedValueException */ public function delete($match = '*') { if ($this->isAuthenticated()) { $url = $this->getLink(); if ($match === true) { $match = $this->xml->xpath('./@gd:etag'); $match = $match[0]; } try { $jdata = $this->query($url, null, array('GData-Version' => 2, 'If-Match' => $match), 'delete'); } catch (Exception $e) { if (strpos($e->getMessage(), 'Error code 412 received requesting data: Mismatch: etags') === 0) { throw new RuntimeException("Etag match failed: `$match`.", $e->getCode(), $e); } throw $e; } if ($jdata->body != '') { throw new UnexpectedValueException("Unexpected data received from Google: `{$jdata->body}`."); } $this->xml = null; return true; } else { return false; } } /** * Method to get the album link * * @param string $type Type of link to return * * @return string Link or false on failure * * @since 3.1.4 */ public function getLink($type = 'edit') { $links = $this->xml->link; foreach ($links as $link) { if ($link->attributes()->rel == $type) { return (string) $link->attributes()->href; } } return false; } /** * Method to get the title of the album * * @return string Album title * * @since 3.1.4 */ public function getTitle() { return (string) $this->xml->children()->title; } /** * Method to get the summary of the album * * @return string Album summary * * @since 3.1.4 */ public function getSummary() { return (string) $this->xml->children()->summary; } /** * Method to get the location of the album * * @return string Album location * * @since 3.1.4 */ public function getLocation() { return (string) $this->xml->children('gphoto', true)->location; } /** * Method to get the access level of the album * * @return string Album access level * * @since 3.1.4 */ public function getAccess() { return (string) $this->xml->children('gphoto', true)->access; } /** * Method to get the time of the album * * @return double Album time * * @since 3.1.4 */ public function getTime() { return (double) $this->xml->children('gphoto', true)->timestamp / 1000; } /** * Method to set the title of the album * * @param string $title New album title * * @return JGoogleDataPicasaAlbum The object for method chaining * * @since 3.1.4 */ public function setTitle($title) { $this->xml->children()->title = $title; return $this; } /** * Method to set the summary of the album * * @param string $summary New album summary * * @return JGoogleDataPicasaAlbum The object for method chaining * * @since 3.1.4 */ public function setSummary($summary) { $this->xml->children()->summary = $summary; return $this; } /** * Method to set the location of the album * * @param string $location New album location * * @return JGoogleDataPicasaAlbum The object for method chaining * * @since 3.1.4 */ public function setLocation($location) { $this->xml->children('gphoto', true)->location = $location; return $this; } /** * Method to set the access level of the album * * @param string $access New album access * * @return JGoogleDataPicasaAlbum The object for method chaining * * @since 3.1.4 */ public function setAccess($access) { $this->xml->children('gphoto', true)->access = $access; return $this; } /** * Method to set the time of the album * * @param int $time New album time * * @return JGoogleDataPicasaAlbum The object for method chaining * * @since 3.1.4 */ public function setTime($time) { $this->xml->children('gphoto', true)->timestamp = $time * 1000; return $this; } /** * Method to modify a Picasa Album * * @param string $match Optional eTag matching parameter * * @return mixed Data from Google. * * @since 3.1.4 * @throws Exception */ public function save($match = '*') { if ($this->isAuthenticated()) { $url = $this->getLink(); if ($match === true) { $match = $this->xml->xpath('./@gd:etag'); $match = $match[0]; } try { $headers = array('GData-Version' => 2, 'Content-type' => 'application/atom+xml', 'If-Match' => $match); $jdata = $this->query($url, $this->xml->asXml(), $headers, 'put'); } catch (Exception $e) { if (strpos($e->getMessage(), 'Error code 412 received requesting data: Mismatch: etags') === 0) { throw new RuntimeException("Etag match failed: `$match`.", $e->getCode(), $e); } throw $e; } $this->xml = $this->safeXml($jdata->body); return $this; } else { return false; } } /** * Refresh Picasa Album * * @return mixed Data from Google * * @since 3.1.4 * @throws UnexpectedValueException */ public function refresh() { if ($this->isAuthenticated()) { $url = $this->getLink(); $jdata = $this->query($url, null, array('GData-Version' => 2)); $this->xml = $this->safeXml($jdata->body); return $this; } else { return false; } } /** * Method to retrieve a list of Picasa Photos * * @return mixed Data from Google * * @since 3.1.4 * @throws UnexpectedValueException */ public function listPhotos() { if ($this->isAuthenticated()) { $url = $this->getLink('http://schemas.google.com/g/2005#feed'); $jdata = $this->query($url, null, array('GData-Version' => 2)); $xml = $this->safeXml($jdata->body); if (isset($xml->children()->entry)) { $items = array(); foreach ($xml->children()->entry as $item) { $items[] = new JGoogleDataPicasaPhoto($item, $this->options, $this->auth); } return $items; } else { throw new UnexpectedValueException("Unexpected data received from Google: `{$jdata->body}`."); } } else { return false; } } /** * Add photo * * @param string $file Path of file to upload * @param string $title Title to give to file (defaults to filename) * @param string $summary Description of the file * * @return mixed Data from Google * * @since 3.1.4 * @throws RuntimeException */ public function upload($file, $title = '', $summary = '') { if ($this->isAuthenticated()) { jimport('joomla.filesystem.file'); $title = $title != '' ? $title : JFile::getName($file); if (!($type = $this->getMime($file))) { throw new RuntimeException('Inappropriate file type.'); } if (!($data = file_get_contents($file))) { throw new RuntimeException("Cannot access file: `$file`"); } $xml = new SimpleXMLElement('<entry></entry>'); $xml->addAttribute('xmlns', 'http://www.w3.org/2005/Atom'); $xml->addChild('title', $title); $xml->addChild('summary', $summary); $cat = $xml->addChild('category', ''); $cat->addAttribute('scheme', 'http://schemas.google.com/g/2005#kind'); $cat->addAttribute('term', 'http://schemas.google.com/photos/2007#photo'); $post = "Media multipart posting\n"; $post .= "--END_OF_PART\n"; $post .= "Content-Type: application/atom+xml\n\n"; $post .= $xml->asXml() . "\n"; $post .= "--END_OF_PART\n"; $post .= "Content-Type: {$type}\n\n"; $post .= $data; $jdata = $this->query($this->getLink(), $post, array('GData-Version' => 2, 'Content-Type: multipart/related'), 'post'); return new JGoogleDataPicasaPhoto($this->safeXml($jdata->body), $this->options, $this->auth); } else { return false; } } /** * Add photo * * @param string $file Filename * * @return mixed Data from Google * * @since 3.1.4 * @throws UnexpectedValueException */ protected function getMime($file) { switch (strtolower(JFile::getExt($file))) { case 'bmp': case 'bm': return 'image/bmp'; case 'gif': return 'image/gif'; case 'jpg': case 'jpeg': case 'jpe': case 'jif': case 'jfif': case 'jfi': return 'image/jpeg'; case 'png': return 'image/png'; case '3gp': return 'video/3gpp'; case 'avi': return 'video/avi'; case 'mov': case 'moov': case 'qt': return 'video/quicktime'; case 'mp4': case 'm4a': case 'm4p': case 'm4b': case 'm4r': case 'm4v': return 'video/mp4'; case 'mpg': case 'mpeg': case 'mp1': case 'mp2': case 'mp3': case 'm1v': case 'm1a': case 'm2a': case 'mpa': case 'mpv': return 'video/mpeg'; case 'asf': return 'video/x-ms-asf'; case 'wmv': return 'video/x-ms-wmv'; default: return false; } } } plus/activities.php 0000604 00000012542 15245570410 0010407 0 ustar 00 <?php /** * @package Joomla.Platform * @subpackage Google * * @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE */ defined('JPATH_PLATFORM') or die; use Joomla\Registry\Registry; /** * Google+ data class for the Joomla Platform. * * @since 3.1.4 * @deprecated 4.0 Use the `joomla/google` package via Composer instead */ class JGoogleDataPlusActivities extends JGoogleData { /** * Constructor. * * @param Registry $options Google options object * @param JGoogleAuth $auth Google data http client object * * @since 3.1.4 */ public function __construct(Registry $options = null, JGoogleAuth $auth = null) { parent::__construct($options, $auth); if (isset($this->auth) && !$this->auth->getOption('scope')) { $this->auth->setOption('scope', 'https://www.googleapis.com/auth/plus.me'); } } /** * List all of the activities in the specified collection for a particular user. * * @param string $userId The ID of the user to get activities for. The special value "me" can be used to indicate the authenticated user. * @param string $collection The collection of activities to list. Acceptable values are: "public". * @param string $fields Used to specify the fields you want returned. * @param integer $max The maximum number of people to include in the response, used for paging. * @param string $token The continuation token, used to page through large result sets. To get the next page of results, set this * parameter to the value of "nextPageToken" from the previous response. This token may be of any length. * @param string $alt Specifies an alternative representation type. Acceptable values are: "json" - Use JSON format (default) * * @return mixed Data from Google * * @since 3.1.4 */ public function listActivities($userId, $collection, $fields = null, $max = 10, $token = null, $alt = null) { if ($this->isAuthenticated()) { $url = $this->getOption('api.url') . 'people/' . $userId . '/activities/' . $collection; // Check if fields is specified. if ($fields) { $url .= '?fields=' . $fields; } // Check if max is specified. if ($max != 10) { $url .= (strpos($url, '?') === false) ? '?maxResults=' : '&maxResults='; $url .= $max; } // Check if token is specified. if ($token) { $url .= (strpos($url, '?') === false) ? '?pageToken=' : '&pageToken='; $url .= $token; } // Check if alt is specified. if ($alt) { $url .= (strpos($url, '?') === false) ? '?alt=' : '&alt='; $url .= $alt; } $jdata = $this->auth->query($url); return json_decode($jdata->body, true); } else { return false; } } /** * Get an activity. * * @param string $id The ID of the activity to get. * @param string $fields Used to specify the fields you want returned. * @param string $alt Specifies an alternative representation type. Acceptable values are: "json" - Use JSON format (default) * * @return mixed Data from Google * * @since 3.1.4 */ public function getActivity($id, $fields = null, $alt = null) { if ($this->isAuthenticated()) { $url = $this->getOption('api.url') . 'activities/' . $id; // Check if fields is specified. if ($fields) { $url .= '?fields=' . $fields; } // Check if alt is specified. if ($alt) { $url .= (strpos($url, '?') === false) ? '?alt=' : '&alt='; $url .= $alt; } $jdata = $this->auth->query($url); return json_decode($jdata->body, true); } else { return false; } } /** * Search all public activities. * * @param string $query Full-text search query string. * @param string $fields Used to specify the fields you want returned. * @param string $language Specify the preferred language to search with. https://developers.google.com/+/api/search#available-languages * @param integer $max The maximum number of people to include in the response, used for paging. * @param string $order Specifies how to order search results. Acceptable values are "best" and "recent". * @param string $token The continuation token, used to page through large result sets. To get the next page of results, set this * parameter to the value of "nextPageToken" from the previous response. This token may be of any length. * * @return mixed Data from Google * * @since 3.1.4 */ public function search($query, $fields = null, $language = null, $max = 10, $order = null, $token = null) { if ($this->isAuthenticated()) { $url = $this->getOption('api.url') . 'activities?query=' . urlencode($query); // Check if fields is specified. if ($fields) { $url .= '&fields=' . $fields; } // Check if language is specified. if ($language) { $url .= '&language=' . $language; } // Check if max is specified. if ($max != 10) { $url .= '&maxResults=' . $max; } // Check if order is specified. if ($order) { $url .= '&orderBy=' . $order; } // Check of token is specified. if ($token) { $url .= '&pageToken=' . $token; } $jdata = $this->auth->query($url); return json_decode($jdata->body, true); } else { return false; } } } plus/people.php 0000604 00000011230 15245570410 0007520 0 ustar 00 <?php /** * @package Joomla.Platform * @subpackage Google * * @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE */ defined('JPATH_PLATFORM') or die; use Joomla\Registry\Registry; /** * Google+ data class for the Joomla Platform. * * @since 3.1.4 * @deprecated 4.0 Use the `joomla/google` package via Composer instead */ class JGoogleDataPlusPeople extends JGoogleData { /** * Constructor. * * @param Registry $options Google options object * @param JGoogleAuth $auth Google data http client object * * @since 3.1.4 */ public function __construct(Registry $options = null, JGoogleAuth $auth = null) { parent::__construct($options, $auth); if (isset($this->auth) && !$this->auth->getOption('scope')) { $this->auth->setOption('scope', 'https://www.googleapis.com/auth/plus.me'); } } /** * Get a person's profile. * * @param string $id The ID of the person to get the profile for. The special value "me" can be used to indicate the authenticated user. * @param string $fields Used to specify the fields you want returned. * * @return mixed Data from Google * * @since 3.1.4 */ public function getPeople($id, $fields = null) { if ($this->isAuthenticated()) { $url = $this->getOption('api.url') . 'people/' . $id; // Check if fields is specified. if ($fields) { $url .= '?fields=' . $fields; } $jdata = $this->auth->query($url); return json_decode($jdata->body, true); } else { return false; } } /** * Search all public profiles. * * @param string $query Specify a query string for full text search of public text in all profiles. * @param string $fields Used to specify the fields you want returned. * @param string $language Specify the preferred language to search with. https://developers.google.com/+/api/search#available-languages * @param integer $max The maximum number of people to include in the response, used for paging. * @param string $token The continuation token, used to page through large result sets. To get the next page of results, set this * parameter to the value of "nextPageToken" from the previous response. This token may be of any length. * * @return mixed Data from Google * * @since 3.1.4 */ public function search($query, $fields = null, $language = null, $max = 10, $token = null) { if ($this->isAuthenticated()) { $url = $this->getOption('api.url') . 'people?query=' . urlencode($query); // Check if fields is specified. if ($fields) { $url .= '&fields=' . $fields; } // Check if language is specified. if ($language) { $url .= '&language=' . $language; } // Check if max is specified. if ($max != 10) { $url .= '&maxResults=' . $max; } // Check of token is specified. if ($token) { $url .= '&pageToken=' . $token; } $jdata = $this->auth->query($url); return json_decode($jdata->body, true); } else { return false; } } /** * List all of the people in the specified collection for a particular activity. * * @param string $activityId The ID of the activity to get the list of people for. * @param string $collection The collection of people to list. Acceptable values are "plusoners" and "resharers". * @param string $fields Used to specify the fields you want returned. * @param integer $max The maximum number of people to include in the response, used for paging. * @param string $token The continuation token, used to page through large result sets. To get the next page of results, set this * parameter to the value of "nextPageToken" from the previous response. This token may be of any length. * * @return mixed Data from Google * * @since 3.1.4 */ public function listByActivity($activityId, $collection, $fields = null, $max = 10, $token = null) { if ($this->isAuthenticated()) { $url = $this->getOption('api.url') . 'activities/' . $activityId . '/people/' . $collection; // Check if fields is specified. if ($fields) { $url .= '?fields=' . $fields; } // Check if max is specified. if ($max != 10) { $url .= (strpos($url, '?') === false) ? '?maxResults=' : '&maxResults='; $url .= $max; } // Check of token is specified. if ($token) { $url .= (strpos($url, '?') === false) ? '?pageToken=' : '&pageToken='; $url .= $token; } $jdata = $this->auth->query($url); return json_decode($jdata->body, true); } else { return false; } } } plus/comments.php 0000604 00000006723 15245570410 0010074 0 ustar 00 <?php /** * @package Joomla.Platform * @subpackage Google * * @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE */ defined('JPATH_PLATFORM') or die; use Joomla\Registry\Registry; /** * Google+ data class for the Joomla Platform. * * @since 3.1.4 * @deprecated 4.0 Use the `joomla/google` package via Composer instead */ class JGoogleDataPlusComments extends JGoogleData { /** * Constructor. * * @param Registry $options Google options object * @param JGoogleAuth $auth Google data http client object * * @since 3.1.4 */ public function __construct(Registry $options = null, JGoogleAuth $auth = null) { parent::__construct($options, $auth); if (isset($this->auth) && !$this->auth->getOption('scope')) { $this->auth->setOption('scope', 'https://www.googleapis.com/auth/plus.me'); } } /** * List all of the comments for an activity. * * @param string $activityId The ID of the activity to get comments for. * @param string $fields Used to specify the fields you want returned. * @param integer $max The maximum number of people to include in the response, used for paging. * @param string $order The order in which to sort the list of comments. Acceptable values are "ascending" and "descending". * @param string $token The continuation token, used to page through large result sets. To get the next page of results, set this * parameter to the value of "nextPageToken" from the previous response. This token may be of any length. * @param string $alt Specifies an alternative representation type. Acceptable values are: "json" - Use JSON format (default) * * @return mixed Data from Google * * @since 3.1.4 */ public function listComments($activityId, $fields = null, $max = 20, $order = null, $token = null, $alt = null) { if ($this->isAuthenticated()) { $url = $this->getOption('api.url') . 'activities/' . $activityId . '/comments'; // Check if fields is specified. if ($fields) { $url .= '?fields=' . $fields; } // Check if max is specified. if ($max != 20) { $url .= (strpos($url, '?') === false) ? '?maxResults=' : '&maxResults='; $url .= $max; } // Check if order is specified. if ($order) { $url .= (strpos($url, '?') === false) ? '?orderBy=' : '&orderBy='; $url .= $order; } // Check of token is specified. if ($token) { $url .= (strpos($url, '?') === false) ? '?pageToken=' : '&pageToken='; $url .= $token; } // Check if alt is specified. if ($alt) { $url .= (strpos($url, '?') === false) ? '?alt=' : '&alt='; $url .= $alt; } $jdata = $this->auth->query($url); return json_decode($jdata->body, true); } else { return false; } } /** * Get a comment. * * @param string $id The ID of the comment to get. * @param string $fields Used to specify the fields you want returned. * * @return mixed Data from Google * * @since 3.1.4 */ public function getComment($id, $fields = null) { if ($this->isAuthenticated()) { $url = $this->getOption('api.url') . 'comments/' . $id; // Check if fields is specified. if ($fields) { $url .= '?fields=' . $fields; } $jdata = $this->auth->query($url); return json_decode($jdata->body, true); } else { return false; } } } picasa.php 0000604 00000010022 15245570410 0006507 0 ustar 00 <?php /** * @package Joomla.Platform * @subpackage Google * * @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE */ defined('JPATH_PLATFORM') or die; use Joomla\Registry\Registry; /** * Google Picasa data class for the Joomla Platform. * * @since 3.1.4 * @deprecated 4.0 Use the `joomla/google` package via Composer instead */ class JGoogleDataPicasa extends JGoogleData { /** * Constructor. * * @param Registry $options Google options object * @param JGoogleAuth $auth Google data http client object * * @since 3.1.4 */ public function __construct(Registry $options = null, JGoogleAuth $auth = null) { parent::__construct($options, $auth); if (isset($this->auth) && !$this->auth->getOption('scope')) { $this->auth->setOption('scope', 'https://picasaweb.google.com/data/'); } } /** * Method to retrieve a list of Picasa Albums * * @param string $userID ID of user * * @return mixed Data from Google * * @since 3.1.4 * @throws UnexpectedValueException */ public function listAlbums($userID = 'default') { if ($this->isAuthenticated()) { $url = 'https://picasaweb.google.com/data/feed/api/user/' . urlencode($userID); $jdata = $this->query($url, null, array('GData-Version' => 2)); $xml = $this->safeXml($jdata->body); if (isset($xml->children()->entry)) { $items = array(); foreach ($xml->children()->entry as $item) { $items[] = new JGoogleDataPicasaAlbum($item, $this->options, $this->auth); } return $items; } else { throw new UnexpectedValueException("Unexpected data received from Google: `{$jdata->body}`."); } } else { return false; } } /** * Method to create a Picasa Album * * @param string $userID ID of user * @param string $title New album title * @param string $access New album access settings * @param string $summary New album summary * @param string $location New album location * @param int $time New album timestamp * @param array $keywords New album keywords * * @return mixed Data from Google. * * @since 3.1.4 */ public function createAlbum($userID = 'default', $title = '', $access = 'private', $summary = '', $location = '', $time = false, $keywords = array()) { if ($this->isAuthenticated()) { $time = $time ? $time : time(); $title = $title != '' ? $title : date('F j, Y'); $xml = new SimpleXMLElement('<entry></entry>'); $xml->addAttribute('xmlns', 'http://www.w3.org/2005/Atom'); $xml->addChild('title', $title); $xml->addChild('summary', $summary); $xml->addChild('gphoto:location', $location, 'http://schemas.google.com/photos/2007'); $xml->addChild('gphoto:access', $access); $xml->addChild('gphoto:timestamp', $time); $media = $xml->addChild('media:group', '', 'http://search.yahoo.com/mrss/'); $media->addChild('media:keywords', implode(', ', $keywords)); $cat = $xml->addChild('category', ''); $cat->addAttribute('scheme', 'http://schemas.google.com/g/2005#kind'); $cat->addAttribute('term', 'http://schemas.google.com/photos/2007#album'); $url = 'https://picasaweb.google.com/data/feed/api/user/' . urlencode($userID); $jdata = $this->query($url, $xml->asXml(), array('GData-Version' => 2, 'Content-type' => 'application/atom+xml'), 'post'); $xml = $this->safeXml($jdata->body); return new JGoogleDataPicasaAlbum($xml, $this->options, $this->auth); } else { return false; } } /** * Get Picasa Album * * @param string $url URL of album to get * * @return mixed Data from Google * * @since 3.1.4 * @throws UnexpectedValueException */ public function getAlbum($url) { if ($this->isAuthenticated()) { $jdata = $this->query($url, null, array('GData-Version' => 2)); $xml = $this->safeXml($jdata->body); return new JGoogleDataPicasaAlbum($xml, $this->options, $this->auth); } else { return false; } } } adsense.php 0000604 00000026043 15245570410 0006703 0 ustar 00 <?php /** * @package Joomla.Platform * @subpackage Google * * @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE */ defined('JPATH_PLATFORM') or die; use Joomla\Registry\Registry; /** * Google Adsense data class for the Joomla Platform. * * @since 3.1.4 * @deprecated 4.0 Use the `joomla/google` package via Composer instead */ class JGoogleDataAdsense extends JGoogleData { /** * Constructor. * * @param Registry $options Google options object * @param JGoogleAuth $auth Google data http client object * * @since 3.1.4 */ public function __construct(Registry $options = null, JGoogleAuth $auth = null) { parent::__construct($options, $auth); if (isset($this->auth) && !$this->auth->getOption('scope')) { $this->auth->setOption('scope', 'https://www.googleapis.com/auth/adsense'); } } /** * Method to get an Adsense account's settings from Google * * @param string $accountID ID of account to get * @param boolean $subaccounts Include list of subaccounts * * @return mixed Data from Google * * @since 3.1.4 * @throws UnexpectedValueException */ public function getAccount($accountID, $subaccounts = true) { if ($this->isAuthenticated()) { $url = 'https://www.googleapis.com/adsense/v1.1/accounts/' . urlencode($accountID) . ($subaccounts ? '?tree=true' : ''); $jdata = $this->query($url); if ($data = json_decode($jdata->body, true)) { return $data; } else { throw new UnexpectedValueException("Unexpected data received from Google: `{$jdata->body}`."); } } else { return false; } } /** * Method to retrieve a list of AdSense accounts from Google * * @param array $options Search settings * @param int $maxpages Maximum number of pages of accounts to return * * @return mixed Data from Google * * @since 3.1.4 * @throws UnexpectedValueException */ public function listAccounts($options = array(), $maxpages = 1) { if ($this->isAuthenticated()) { $next = array_key_exists('nextPageToken', $options) ? $options['nextPage'] : null; unset($options['nextPageToken']); $url = 'https://www.googleapis.com/adsense/v1.1/accounts?' . http_build_query($options); return $this->listGetData($url, $maxpages, $next); } else { return false; } } /** * Method to retrieve a list of AdSense clients from Google * * @param string $accountID ID of account to list the clients from * @param array $options Search settings * @param int $maxpages Maximum number of pages of accounts to return * * @return mixed Data from Google * * @since 3.1.4 * @throws UnexpectedValueException */ public function listClients($accountID, $options = array(), $maxpages = 1) { if ($this->isAuthenticated()) { $next = array_key_exists('nextPageToken', $options) ? $options['nextPage'] : null; unset($options['nextPageToken']); $url = 'https://www.googleapis.com/adsense/v1.1/accounts/' . urlencode($accountID) . '/adclients?' . http_build_query($options); return $this->listGetData($url, $maxpages, $next); } else { return false; } } /** * Method to get an AdSense AdUnit * * @param string $accountID ID of account to get * @param string $adclientID ID of client to get * @param string $adunitID ID of adunit to get * * @return mixed Data from Google * * @since 3.1.4 * @throws UnexpectedValueException */ public function getUnit($accountID, $adclientID, $adunitID) { if ($this->isAuthenticated()) { $url = 'https://www.googleapis.com/adsense/v1.1/accounts/' . urlencode($accountID); $url .= '/adclients/' . urlencode($adclientID) . '/adunits/' . urlencode($adunitID); $jdata = $this->query($url); if ($data = json_decode($jdata->body, true)) { return $data; } else { throw new UnexpectedValueException("Unexpected data received from Google: `{$jdata->body}`."); } } else { return false; } } /** * Method to retrieve a list of AdSense Custom Channels for a specific Adunit * * @param string $accountID ID of account * @param string $adclientID ID of client * @param string $adunitID ID of adunit to list channels from * @param array $options Search settings * @param int $maxpages Maximum number of pages of accounts to return * * @return mixed Data from Google * * @since 3.1.4 * @throws UnexpectedValueException */ public function listUnitChannels($accountID, $adclientID, $adunitID, $options = array(), $maxpages = 1) { if ($this->isAuthenticated()) { $next = array_key_exists('nextPageToken', $options) ? $options['nextPage'] : null; unset($options['nextPageToken']); $url = 'https://www.googleapis.com/adsense/v1.1/accounts/' . urlencode($accountID); $url .= '/adclients/' . urlencode($adclientID) . '/adunits/' . urlencode($adunitID) . '/customchannels?' . http_build_query($options); return $this->listGetData($url, $maxpages, $next); } else { return false; } } /** * Method to get an Adsense Channel * * @param string $accountID ID of account to get * @param string $adclientID ID of client to get * @param string $channelID ID of channel to get * * @return mixed Data from Google * * @since 3.1.4 * @throws UnexpectedValueException */ public function getChannel($accountID, $adclientID, $channelID) { if ($this->isAuthenticated()) { $url = 'https://www.googleapis.com/adsense/v1.1/accounts/' . urlencode($accountID) . '/adclients/'; $url .= urlencode($adclientID) . '/customchannels/' . urlencode($channelID); $jdata = $this->query($url); if ($data = json_decode($jdata->body, true)) { return $data; } else { throw new UnexpectedValueException("Unexpected data received from Google: `{$jdata->body}`."); } } else { return false; } } /** * Method to retrieve a list of AdSense Custom Channels * * @param string $accountID ID of account * @param string $adclientID ID of client to list channels from * @param array $options Search settings * @param int $maxpages Maximum number of pages of accounts to return * * @return mixed Data from Google * * @since 3.1.4 * @throws UnexpectedValueException */ public function listChannels($accountID, $adclientID, $options = array(), $maxpages = 1) { if ($this->isAuthenticated()) { $next = array_key_exists('nextPageToken', $options) ? $options['nextPage'] : null; unset($options['nextPageToken']); $url = 'https://www.googleapis.com/adsense/v1.1/accounts/' . urlencode($accountID) . '/adclients/' . urlencode($adclientID); $url .= '/customchannels?' . http_build_query($options); return $this->listGetData($url, $maxpages, $next); } else { return false; } } /** * Method to retrieve a list of AdSense Adunits for a specific Custom Channel * * @param string $accountID ID of account * @param string $adclientID ID of client * @param string $channelID ID of channel to list units from * @param array $options Search settings * @param int $maxpages Maximum number of pages of accounts to return * * @return mixed Data from Google * * @since 3.1.4 * @throws UnexpectedValueException */ public function listChannelUnits($accountID, $adclientID, $channelID, $options = array(), $maxpages = 1) { if ($this->isAuthenticated()) { $next = array_key_exists('nextPageToken', $options) ? $options['nextPage'] : null; unset($options['nextPageToken']); $url = 'https://www.googleapis.com/adsense/v1.1/accounts/' . urlencode($accountID) . '/adclients/' . urlencode($adclientID); $url .= '/customchannels/' . urlencode($channelID) . '/adunits?' . http_build_query($options); return $this->listGetData($url, $maxpages, $next); } else { return false; } } /** * Method to generate a report from Google AdSense * * @param string $accountID ID of account * @param string $adclientID ID of client * @param array $options Search settings * @param int $maxpages Maximum number of pages of accounts to return * * @return mixed Data from Google * * @since 3.1.4 * @throws UnexpectedValueException */ public function listUrlChannels($accountID, $adclientID, $options = array(), $maxpages = 1) { if ($this->isAuthenticated()) { $next = array_key_exists('nextPageToken', $options) ? $options['nextPage'] : null; unset($options['nextPageToken']); $url = 'https://www.googleapis.com/adsense/v1.1/accounts/' . urlencode($accountID); $url .= '/adclients/' . urlencode($adclientID) . '/urlchannels?' . http_build_query($options); return $this->listGetData($url, $maxpages, $next); } else { return false; } } /** * Method to retrieve a list of AdSense Channel URLs * * @param string $accountID ID of account * @param mixed $start Start day * @param mixed $end End day * @param array $options Search settings * @param int $maxpages Maximum number of pages of accounts to return * * @return mixed Data from Google * * @since 3.1.4 * @throws InvalidArgumentException * @throws UnexpectedValueException */ public function generateReport($accountID, $start, $end = false, $options = array(), $maxpages = 1) { if ($this->isAuthenticated()) { if (is_int($start)) { $startobj = new DateTime; $startobj->setTimestamp($start); } elseif (is_string($start)) { $startobj = new DateTime($start); } elseif (is_a($start, 'DateTime')) { $startobj = $start; } else { throw new InvalidArgumentException('Invalid start time.'); } if (!$end) { $endobj = new DateTime; } elseif (is_int($end)) { $endobj = new DateTime; $endobj->setTimestamp($end); } elseif (is_string($end)) { $endobj = new DateTime($end); } elseif (is_a($end, 'DateTime')) { $endobj = $end; } else { throw new InvalidArgumentException('Invalid end time.'); } $options['startDate'] = $startobj->format('Y-m-d'); $options['endDate'] = $endobj->format('Y-m-d'); unset($options['startIndex']); $url = 'https://www.googleapis.com/adsense/v1.1/accounts/' . urlencode($accountID) . '/reports?' . http_build_query($options); if (strpos($url, '&')) { $url .= '&'; } $i = 0; $data['rows'] = array(); do { $jdata = $this->query($url . 'startIndex=' . count($data['rows'])); $newdata = json_decode($jdata->body, true); if ($newdata && array_key_exists('rows', $newdata)) { $newdata['rows'] = array_merge($data['rows'], $newdata['rows']); $data = $newdata; } else { throw new UnexpectedValueException("Unexpected data received from Google: `{$jdata->body}`."); } $i++; } while (count($data['rows']) < $data['totalMatchedRows'] && $i < $maxpages); return $data; } else { return false; } } }
| ver. 1.4 |
Github
|
.
| PHP 8.1.34 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка