From 06f945f27840b53e57795dadbc38e76f7e11ab1c Mon Sep 17 00:00:00 2001 From: Horus3 Date: Mon, 24 Feb 2014 16:42:14 +0100 Subject: init --- zend/library/Zend/Gdata/Analytics/AccountEntry.php | 102 ++++++ zend/library/Zend/Gdata/Analytics/AccountFeed.php | 57 +++ zend/library/Zend/Gdata/Analytics/AccountQuery.php | 190 ++++++++++ zend/library/Zend/Gdata/Analytics/DataEntry.php | 116 ++++++ zend/library/Zend/Gdata/Analytics/DataFeed.php | 64 ++++ zend/library/Zend/Gdata/Analytics/DataQuery.php | 403 +++++++++++++++++++++ .../Zend/Gdata/Analytics/Extension/Dimension.php | 40 ++ .../Zend/Gdata/Analytics/Extension/Goal.php | 52 +++ .../Zend/Gdata/Analytics/Extension/Metric.php | 54 +++ .../Zend/Gdata/Analytics/Extension/Property.php | 122 +++++++ .../Zend/Gdata/Analytics/Extension/TableId.php | 112 ++++++ 11 files changed, 1312 insertions(+) create mode 100644 zend/library/Zend/Gdata/Analytics/AccountEntry.php create mode 100644 zend/library/Zend/Gdata/Analytics/AccountFeed.php create mode 100644 zend/library/Zend/Gdata/Analytics/AccountQuery.php create mode 100644 zend/library/Zend/Gdata/Analytics/DataEntry.php create mode 100644 zend/library/Zend/Gdata/Analytics/DataFeed.php create mode 100644 zend/library/Zend/Gdata/Analytics/DataQuery.php create mode 100644 zend/library/Zend/Gdata/Analytics/Extension/Dimension.php create mode 100644 zend/library/Zend/Gdata/Analytics/Extension/Goal.php create mode 100644 zend/library/Zend/Gdata/Analytics/Extension/Metric.php create mode 100644 zend/library/Zend/Gdata/Analytics/Extension/Property.php create mode 100644 zend/library/Zend/Gdata/Analytics/Extension/TableId.php (limited to 'zend/library/Zend/Gdata/Analytics') diff --git a/zend/library/Zend/Gdata/Analytics/AccountEntry.php b/zend/library/Zend/Gdata/Analytics/AccountEntry.php new file mode 100644 index 0000000..c709bb7 --- /dev/null +++ b/zend/library/Zend/Gdata/Analytics/AccountEntry.php @@ -0,0 +1,102 @@ +registerAllNamespaces(Zend_Gdata_Analytics::$namespaces); + parent::__construct($element); + } + + /** + * @param DOMElement $child + * @return void + */ + protected function takeChildFromDOM($child) + { + $absoluteNodeName = $child->namespaceURI . ':' . $child->localName; + switch ($absoluteNodeName){ + case $this->lookupNamespace('analytics') . ':' . 'property'; + $property = new Zend_Gdata_Analytics_Extension_Property(); + $property->transferFromDOM($child); + $this->{$property->getName()} = $property; + break; + case $this->lookupNamespace('analytics') . ':' . 'tableId'; + $tableId = new Zend_Gdata_Analytics_Extension_TableId(); + $tableId->transferFromDOM($child); + $this->_tableId = $tableId; + break; + case $this->lookupNamespace('ga') . ':' . 'goal'; + $goal = new Zend_Gdata_Analytics_Extension_Goal(); + $goal->transferFromDOM($child); + $this->_goal = $goal; + break; + default: + parent::takeChildFromDOM($child); + break; + } + } +} diff --git a/zend/library/Zend/Gdata/Analytics/AccountFeed.php b/zend/library/Zend/Gdata/Analytics/AccountFeed.php new file mode 100644 index 0000000..b0e81a6 --- /dev/null +++ b/zend/library/Zend/Gdata/Analytics/AccountFeed.php @@ -0,0 +1,57 @@ +registerAllNamespaces(Zend_Gdata_Analytics::$namespaces); + parent::__construct($element); + } +} diff --git a/zend/library/Zend/Gdata/Analytics/AccountQuery.php b/zend/library/Zend/Gdata/Analytics/AccountQuery.php new file mode 100644 index 0000000..6d8dbdc --- /dev/null +++ b/zend/library/Zend/Gdata/Analytics/AccountQuery.php @@ -0,0 +1,190 @@ +_accountId = $accountId; + return $this; + } + + /** + * @return string + */ + public function getAccountId() + { + return $this->_accountId; + } + + /** + * @param string $webpropertyId + * @return Zend_Gdata_Analytics_AccountQuery + */ + public function setWebpropertyId($webpropertyId) + { + $this->_webpropertyId = $webpropertyId; + return $this; + } + + /** + * @return string + */ + public function getWebpropertyId() + { + return $this->_webpropertyId; + } + + /** + * @param string $profileId + * @return Zend_Gdata_Analytics_AccountQuery + */ + public function setProfileId($profileId) + { + $this->_profileId = $profileId; + return $this; + } + + /** + * @return string + */ + public function getProfileId() + { + return $this->_profileId; + } + + /** + * @param string $accountId + * @return Zend_Gdata_Analytics_AccountQuery + */ + public function webproperties($accountId = '~all') + { + $this->_webproperties = true; + $this->setAccountId($accountId); + return $this; + } + + /** + * @param string $webpropertyId + * @param string $accountId + * @return Zend_Gdata_Analytics_AccountQuery + */ + public function profiles($webpropertyId = '~all', $accountId = '~all') + { + $this->_profiles = true; + if (null !== $accountId) { + $this->setAccountId($accountId); + } + $this->setWebpropertyId($webpropertyId); + return $this; + } + + /** + * @param string $webpropertyId + * @param string $accountId + * @param string $accountId + * @return Zend_Gdata_Analytics_AccountQuery + */ + public function goals($profileId = '~all', $webpropertyId = '~all', $accountId = '~all') + { + $this->_goals = true; + if (null !== $accountId) { + $this->setAccountId($accountId); + } + if (null !== $webpropertyId) { + $this->setWebpropertyId($webpropertyId); + } + $this->setProfileId($profileId); + return $this; + } + + /** + * @return string url + */ + public function getQueryUrl() + { + $url = $this->_defaultFeedUri; + + // add account id + if ($this->_webproperties or $this->_profiles or $this->_goals) { + $url .= '/' . $this->_accountId . '/webproperties'; + } + + if ($this->_profiles or $this->_goals) { + $url .= '/' . $this->_webpropertyId . '/profiles'; + } + + if ($this->_goals) { + $url .= '/' . $this->_profileId . '/goals'; + } + + $url .= $this->getQueryString(); + return $url; + } +} \ No newline at end of file diff --git a/zend/library/Zend/Gdata/Analytics/DataEntry.php b/zend/library/Zend/Gdata/Analytics/DataEntry.php new file mode 100644 index 0000000..a0ccb81 --- /dev/null +++ b/zend/library/Zend/Gdata/Analytics/DataEntry.php @@ -0,0 +1,116 @@ +registerAllNamespaces(Zend_Gdata_Analytics::$namespaces); + parent::__construct($element); + } + + /** + * @param DOMElement $child + * @return void + */ + protected function takeChildFromDOM($child) + { + $absoluteNodeName = $child->namespaceURI . ':' . $child->localName; + switch ($absoluteNodeName) { + case $this->lookupNamespace('analytics') . ':' . 'dimension'; + $dimension = new Zend_Gdata_Analytics_Extension_Dimension(); + $dimension->transferFromDOM($child); + $this->_dimensions[] = $dimension; + break; + case $this->lookupNamespace('analytics') . ':' . 'metric'; + $metric = new Zend_Gdata_Analytics_Extension_Metric(); + $metric->transferFromDOM($child); + $this->_metrics[] = $metric; + break; + default: + parent::takeChildFromDOM($child); + break; + } + } + + /** + * @param string $name + * @return mixed + */ + public function getDimension($name) + { + foreach ($this->_dimensions as $dimension) { + if ($dimension->getName() == $name) { + return $dimension; + } + } + return null; + } + + /** + * @param string $name + * @return mixed + */ + public function getMetric($name) + { + foreach ($this->_metrics as $metric) { + if ($metric->getName() == $name) { + return $metric; + } + } + return null; + } + + /** + * @param string $name + * @return mixed + */ + public function getValue($name) + { + if (null !== ($metric = $this->getMetric($name))) { + return $metric; + } + return $this->getDimension($name); + } +} diff --git a/zend/library/Zend/Gdata/Analytics/DataFeed.php b/zend/library/Zend/Gdata/Analytics/DataFeed.php new file mode 100644 index 0000000..42e3156 --- /dev/null +++ b/zend/library/Zend/Gdata/Analytics/DataFeed.php @@ -0,0 +1,64 @@ +registerAllNamespaces(Zend_Gdata_Analytics::$namespaces); + parent::__construct($element); + } +} diff --git a/zend/library/Zend/Gdata/Analytics/DataQuery.php b/zend/library/Zend/Gdata/Analytics/DataQuery.php new file mode 100644 index 0000000..51c9e5c --- /dev/null +++ b/zend/library/Zend/Gdata/Analytics/DataQuery.php @@ -0,0 +1,403 @@ +"; + const LESS = ">"; + const GREATER_EQUAL = ">="; + const LESS_EQUAL = "<="; + const CONTAINS = "=@"; + const CONTAINS_NOT ="!@"; + const REGULAR ="=~"; + const REGULAR_NOT ="!~"; + + /** + * @var string + */ + protected $_profileId; + /** + * @var array + */ + protected $_dimensions = array(); + /** + * @var array + */ + protected $_metrics = array(); + /** + * @var array + */ + protected $_sort = array(); + /** + * @var array + */ + protected $_filters = array(); + + /** + * @param string $id + * @return Zend_Gdata_Analytics_DataQuery + */ + public function setProfileId($id) + { + $this->_profileId = $id; + return $this; + } + + /** + * @return string + */ + public function getProfileId() + { + return $this->_profileId; + } + + /** + * @param string $dimension + * @return Zend_Gdata_Analytics_DataQuery + */ + public function addDimension($dimension) + { + $this->_dimensions[$dimension] = true; + return $this; + } + + /** + * @param string $metric + * @return Zend_Gdata_Analytics_DataQuery + */ + public function addMetric($metric) + { + $this->_metrics[$metric] = true; + return $this; + } + + /** + * @return array + */ + public function getDimensions() + { + return $this->_dimensions; + } + + /** + * @return array + */ + public function getMetrics() + { + return $this->_metrics; + } + + /** + * @param string $dimension + * @return Zend_Gdata_Analytics_DataQuery + */ + public function removeDimension($dimension) + { + unset($this->_dimensions[$dimension]); + return $this; + } + /** + * @param string $metric + * @return Zend_Gdata_Analytics_DataQuery + */ + public function removeMetric($metric) + { + unset($this->_metrics[$metric]); + return $this; + } + /** + * @param string $value + * @return Zend_Gdata_Analytics_DataQuery + */ + public function setStartDate($date) + { + $this->setParam("start-date", $date); + return $this; + } + /** + * @param string $value + * @return Zend_Gdata_Analytics_DataQuery + */ + public function setEndDate($date) + { + $this->setParam("end-date", $date); + return $this; + } + + /** + * @param string $filter + * @return Zend_Gdata_Analytics_DataQuery + */ + public function addFilter($filter) + { + $this->_filters[] = array($filter, true); + return $this; + } + + /** + * @param string $filter + * @return Zend_Gdata_Analytics_DataQuery + */ + public function addOrFilter($filter) + { + $this->_filters[] = array($filter, false); + return $this; + } + + /** + * @param string $sort + * @param boolean[optional] $descending + * @return Zend_Gdata_Analytics_DataQuery + */ + public function addSort($sort, $descending=false) + { + // add to sort storage + $this->_sort[] = ($descending?'-':'').$sort; + return $this; + } + + /** + * @return Zend_Gdata_Analytics_DataQuery + */ + public function clearSort() + { + $this->_sort = array(); + return $this; + } + + /** + * @param string $segment + * @return Zend_Gdata_Analytics_DataQuery + */ + public function setSegment($segment) + { + $this->setParam('segment', $segment); + return $this; + } + + /** + * @return string url + */ + public function getQueryUrl() + { + $uri = $this->_defaultFeedUri; + if (isset($this->_url)) { + $uri = $this->_url; + } + + $dimensions = $this->getDimensions(); + if (!empty($dimensions)) { + $this->setParam('dimensions', implode(",", array_keys($dimensions))); + } + + $metrics = $this->getMetrics(); + if (!empty($metrics)) { + $this->setParam('metrics', implode(",", array_keys($metrics))); + } + + // profile id (ga:tableId) + if ($this->getProfileId() != null) { + $this->setParam('ids', 'ga:'.ltrim($this->getProfileId(), "ga:")); + } + + // sorting + if ($this->_sort) { + $this->setParam('sort', implode(",", $this->_sort)); + } + + // filtering + $filters = ""; + foreach ($this->_filters as $filter) { + $filters.=($filter[1]===true?';':',').$filter[0]; + } + + if ($filters!="") { + $this->setParam('filters', ltrim($filters, ",;")); + } + + $uri .= $this->getQueryString(); + return $uri; + } +} diff --git a/zend/library/Zend/Gdata/Analytics/Extension/Dimension.php b/zend/library/Zend/Gdata/Analytics/Extension/Dimension.php new file mode 100644 index 0000000..1c61728 --- /dev/null +++ b/zend/library/Zend/Gdata/Analytics/Extension/Dimension.php @@ -0,0 +1,40 @@ +registerAllNamespaces(Zend_Gdata_Analytics::$namespaces); + parent::__construct(); + } + + /** + * @return string + */ + public function __toString() + { + $attribs = $this->getExtensionAttributes(); + return $attribs['name']['value']; + } +} diff --git a/zend/library/Zend/Gdata/Analytics/Extension/Metric.php b/zend/library/Zend/Gdata/Analytics/Extension/Metric.php new file mode 100644 index 0000000..6aa399c --- /dev/null +++ b/zend/library/Zend/Gdata/Analytics/Extension/Metric.php @@ -0,0 +1,54 @@ +localName) { + case 'name': + $this->_name = $attribute->nodeValue; + break; + case 'value': + $this->_value = $attribute->nodeValue; + break; + default: + parent::takeAttributeFromDOM($attribute); + } + } +} diff --git a/zend/library/Zend/Gdata/Analytics/Extension/Property.php b/zend/library/Zend/Gdata/Analytics/Extension/Property.php new file mode 100644 index 0000000..4788bf6 --- /dev/null +++ b/zend/library/Zend/Gdata/Analytics/Extension/Property.php @@ -0,0 +1,122 @@ +registerAllNamespaces(Zend_Gdata_Analytics::$namespaces); + parent::__construct(); + $this->_value = $value; + $this->_name = $name; + } + + /** + * Given a DOMNode representing an attribute, tries to map the data into + * instance members. If no mapping is defined, the name and value are + * stored in an array. + * + * @param DOMNode $attribute The DOMNode attribute needed to be handled + */ + protected function takeAttributeFromDOM($attribute) + { + switch ($attribute->localName) { + case 'name': + $name = explode(':', $attribute->nodeValue); + $this->_name = end($name); + break; + case 'value': + $this->_value = $attribute->nodeValue; + break; + default: + parent::takeAttributeFromDOM($attribute); + } + } + + /** + * Get the value for this element's value attribute. + * + * @return string The value associated with this attribute. + */ + public function getValue() + { + return $this->_value; + } + + /** + * Set the value for this element's value attribute. + * + * @param string $value The desired value for this attribute. + * @return Zend_Gdata_Analytics_Extension_Property The element being modified. + */ + public function setValue($value) + { + $this->_value = $value; + return $this; + } + + /** + * @param string $name + * @return Zend_Gdata_Analytics_Extension_Property + */ + public function setName($name) + { + $this->_name = $name; + return $this; + } + + /** + * @return string + */ + public function getName() + { + return $this->_name; + } + + /** + * Magic toString method allows using this directly via echo + * Works best in PHP >= 4.2.0 + */ + public function __toString() + { + return $this->getValue(); + } +} diff --git a/zend/library/Zend/Gdata/Analytics/Extension/TableId.php b/zend/library/Zend/Gdata/Analytics/Extension/TableId.php new file mode 100644 index 0000000..f1ddad5 --- /dev/null +++ b/zend/library/Zend/Gdata/Analytics/Extension/TableId.php @@ -0,0 +1,112 @@ +registerAllNamespaces(Zend_Gdata_Analytics::$namespaces); + parent::__construct(); + $this->_value = $value; + } + + /** + * Retrieves a DOMElement which corresponds to this element and all + * child properties. This is used to build an entry back into a DOM + * and eventually XML text for sending to the server upon updates, or + * for application storage/persistence. + * + * @param DOMDocument $doc The DOMDocument used to construct DOMElements + * @return DOMElement The DOMElement representing this element and all + * child properties. + */ + public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null) + { + $element = parent::getDOM($doc, $majorVersion, $minorVersion); + if ($this->_value != null) { + $element->setAttribute('value', $this->_value); + } + return $element; + } + + /** + * Given a DOMNode representing an attribute, tries to map the data into + * instance members. If no mapping is defined, the name and value are + * stored in an array. + * + * @param DOMNode $attribute The DOMNode attribute needed to be handled + */ + protected function takeChildFromDOM($child) + { + $this->_value = $child->nodeValue; + } + + /** + * Get the value for this element's value attribute. + * + * @return string The value associated with this attribute. + */ + public function getValue() + { + return $this->_value; + } + + /** + * Set the value for this element's value attribute. + * + * @param string $value The desired value for this attribute. + * @return Zend_Gdata_Calendar_Extension_Timezone The element being modified. + */ + public function setValue($value) + { + $this->_value = $value; + return $this; + } + + /** + * Magic toString method allows using this directly via echo + * Works best in PHP >= 4.2.0 + */ + public function __toString() + { + return $this->getValue(); + } +} -- cgit v1.2.3