Source of file Subscription.php
Size: 3,857 Bytes - Last Modified: 2014-03-12T23:21:18+01:00
/home/theseer/Downloads/ZendFramework-2.3.0/library/Zend/Feed/PubSubHubbub/Model/Subscription.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 | <?php /** * Zend Framework (http://framework.zend.com/) * * @link http://github.com/zendframework/zf2 for the canonical source repository * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ namespace Zend\Feed\PubSubHubbub\Model; use DateInterval; use DateTime; use Zend\Feed\PubSubHubbub; class Subscription extends AbstractModel implements SubscriptionPersistenceInterface { /** * Common DateTime object to assist with unit testing * * @var DateTime */ protected $now; /** * Save subscription to RDMBS * * @param array $data * @return bool * @throws PubSubHubbub\Exception\InvalidArgumentException */ public function setSubscription(array $data) { if (!isset($data['id'])) { throw new PubSubHubbub\Exception\InvalidArgumentException( 'ID must be set before attempting a save' ); } $result = $this->db->select(array('id' => $data['id'])); if ($result && (0 < count($result))) { $data['created_time'] = $result->current()->created_time; $now = $this->getNow(); if (array_key_exists('lease_seconds', $data) && $data['lease_seconds'] ) { $data['expiration_time'] = $now->add(new DateInterval('PT' . $data['lease_seconds'] . 'S')) ->format('Y-m-d H:i:s'); } $this->db->update( $data, array('id' => $data['id']) ); return false; } $this->db->insert($data); return true; } /** * Get subscription by ID/key * * @param string $key * @return array * @throws PubSubHubbub\Exception\InvalidArgumentException */ public function getSubscription($key) { if (empty($key) || !is_string($key)) { throw new PubSubHubbub\Exception\InvalidArgumentException('Invalid parameter "key"' .' of "' . $key . '" must be a non-empty string'); } $result = $this->db->select(array('id' => $key)); if (count($result)) { return $result->current()->getArrayCopy(); } return false; } /** * Determine if a subscription matching the key exists * * @param string $key * @return bool * @throws PubSubHubbub\Exception\InvalidArgumentException */ public function hasSubscription($key) { if (empty($key) || !is_string($key)) { throw new PubSubHubbub\Exception\InvalidArgumentException('Invalid parameter "key"' .' of "' . $key . '" must be a non-empty string'); } $result = $this->db->select(array('id' => $key)); if (count($result)) { return true; } return false; } /** * Delete a subscription * * @param string $key * @return bool */ public function deleteSubscription($key) { $result = $this->db->select(array('id' => $key)); if (count($result)) { $this->db->delete( array('id' => $key) ); return true; } return false; } /** * Get a new DateTime or the one injected for testing * * @return DateTime */ public function getNow() { if (null === $this->now) { return new DateTime(); } return $this->now; } /** * Set a DateTime instance for assisting with unit testing * * @param DateTime $now * @return Subscription */ public function setNow(DateTime $now) { $this->now = $now; return $this; } } |