diff -r 877f952ae2bd -r 6b6c2214f778 web/lib/Zend/Mobile/Push/Message/Gcm.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/Zend/Mobile/Push/Message/Gcm.php Thu Mar 21 19:52:38 2013 +0100 @@ -0,0 +1,274 @@ +_token)) { + $this->_token[] = $token; + } + return $this; + } + + /** + * Set Token + * + * @param string|array $token + * @return Zend_Mobile_Push_Message_Gcm + * @throws Zend_Mobile_Push_Message_Exception + */ + public function setToken($token) + { + $this->clearToken(); + if (is_string($token)) { + $this->addToken($token); + } else if (is_array($token)) { + foreach ($token as $t) { + $this->addToken($t); + } + } + return $this; + } + + /** + * Clear Tokens + * + * @return Zend_Mobile_Push_Message_Gcm + */ + public function clearToken() + { + $this->_token = array(); + return $this; + } + + + /** + * Add Data + * + * @param string $key + * @param string $value + * @return Zend_Mobile_Push_Message_Gcm + * @throws Zend_Mobile_Push_Message_Exception + */ + public function addData($key, $value) + { + if (!is_string($key)) { + throw new Zend_Mobile_Push_Message_Exception('$key is not a string'); + } + if (!is_scalar($value)) { + throw new Zend_Mobile_Push_Message_Exception('$value is not a string'); + } + $this->_data[$key] = $value; + return $this; + } + + /** + * Set Data + * + * @param array $data + * @return Zend_Mobile_Push_Message_Gcm + * @throws Zend_Mobile_Push_Message_Exception + */ + public function setData(array $data) + { + $this->clearData(); + foreach ($data as $k => $v) { + $this->addData($k, $v); + } + return $this; + } + + /** + * Clear Data + * + * @return Zend_Mobile_Push_Message_Gcm + */ + public function clearData() + { + $this->_data = array(); + return $this; + } + + /** + * Get Data + * + * @return array + */ + public function getData() + { + return $this->_data; + } + + /** + * Set Delay While Idle + * + * @param boolean $delay + * @return Zend_Mobile_Push_Message_Gcm + * @throws Zend_Mobile_Push_Message_Exception + */ + public function setDelayWhileIdle($delay) + { + if (!is_bool($delay)) { + throw new Zend_Mobile_Push_Message_Exception('$delay must be boolean'); + } + $this->_delay = $delay; + return $this; + } + + /** + * Get Delay While Idle + * + * @return boolean + */ + public function getDelayWhileIdle() + { + return $this->_delay; + } + + /** + * Set time to live + * If $secs is set to 0 it will be handled as + * not being set. + * + * @param int $secs + * @return Zend_Mobile_Push_Message_Gcm + */ + public function setTtl($secs) + { + if (!is_numeric($secs)) { + throw new Zend_Mobile_Push_Message_Exception('$secs must be numeric'); + } + $this->_ttl = (int) $secs; + return $this; + } + + /** + * Get time to live + * + * @return int + */ + public function getTtl() + { + return $this->_ttl; + } + + /** + * Validate this is a proper Gcm message + * Does not validate size. + * + * @return boolean + */ + public function validate() + { + if (!is_array($this->_token) || empty($this->_token)) { + return false; + } + if ($this->_ttl > 0 && + (!is_scalar($this->_id) || + strlen($this->_id) === 0)) { + return false; + } + return true; + } + + /** + * To Json utility method + * Takes the data and properly assigns it to + * a json encoded array to match the Gcm format. + * + * @return string + */ + public function toJson() + { + $json = array(); + if ($this->_token) { + $json['registration_ids'] = $this->_token; + } + if ($this->_id) { + $json['collapse_key'] = (string) $this->_id; + } + if ($this->_data) { + $json['data'] = $this->_data; + } + if ($this->_delay) { + $json['delay_while_idle'] = $this->_delay; + } + if ($this->_ttl) { + $json['time_to_live'] = $this->_ttl; + } + return json_encode($json); + } +}