Viewing file: Post.php (7 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/** * Zend Framework * * LICENSE * * This source file is subject to the new BSD license that is bundled * with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://framework.zend.com/license/new-bsd * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@zend.com so we can send you a copy immediately. * * @category Zend * @package Zend_Service * @subpackage Delicious * @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License * @version $Id: Post.php 16211 2009-06-21 19:23:55Z thomas $ */
/** * @see Zend_Date */ require_once 'Zend/Date.php';
/** * @see Zend_Service_Delicious_SimplePost */ require_once 'Zend/Service/Delicious/SimplePost.php';
/** * Zend_Service_Delicious_Post represents a post of a user that can be edited * * @category Zend * @package Zend_Service * @subpackage Delicious * @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ class Zend_Service_Delicious_Post extends Zend_Service_Delicious_SimplePost { /** * Service that has downloaded the post * * @var Zend_Service_Delicious */ protected $_service;
/** * @var int Number of people that have the same post */ protected $_others;
/** * @var Zend_Date Post date */ protected $_date;
/** * @var bool Post share */ protected $_shared = true;
/** * @var string Post hash */ protected $_hash;
/** * Constructs a new del.icio.us post * * @param Zend_Service_Delicious $service Service that has downloaded the post * @param DOMElement|array $values Post content * @throws Zend_Service_Delicious_Exception * @return void */ public function __construct(Zend_Service_Delicious $service, $values) { $this->_service = $service;
if ($values instanceof DOMElement) { $values = self::_parsePostNode($values); }
if (!is_array($values) || !isset($values['url']) || !isset($values['title'])) { /** * @see Zend_Service_Delicious_Exception */ require_once 'Zend/Service/Delicious/Exception.php'; throw new Zend_Service_Delicious_Exception("Second argument must be array with at least 2 keys ('url' and" . " 'title')"); }
if (isset($values['date']) && ! $values['date'] instanceof Zend_Date) { /** * @see Zend_Service_Delicious_Exception */ require_once 'Zend/Service/Delicious/Exception.php'; throw new Zend_Service_Delicious_Exception("Date has to be an instance of Zend_Date"); }
foreach (array('url', 'title', 'notes', 'others', 'tags', 'date', 'shared', 'hash') as $key) { if (isset($values[$key])) { $this->{"_$key"} = $values[$key]; } } }
/** * Setter for title * * @param string $newTitle * @return Zend_Service_Delicious_Post */ public function setTitle($newTitle) { $this->_title = (string) $newTitle;
return $this; }
/** * Setter for notes * * @param string $newNotes * @return Zend_Service_Delicious_Post */ public function setNotes($newNotes) { $this->_notes = (string) $newNotes;
return $this; }
/** * Setter for tags * * @param array $tags * @return Zend_Service_Delicious_Post */ public function setTags(array $tags) { $this->_tags = $tags;
return $this; }
/** * Add a tag * * @param string $tag * @return Zend_Service_Delicious_Post */ public function addTag($tag) { $this->_tags[] = (string) $tag;
return $this; }
/** * Remove a tag * * @param string $tag * @return Zend_Service_Delicious_Post */ public function removeTag($tag) { $this->_tags = array_diff($this->_tags, array((string) $tag));
return $this; }
/** * Getter for date * * @return Zend_Date */ public function getDate() { return $this->_date; }
/** * Getter for others * * This property is only populated when posts are retrieved * with getPosts() method. The getAllPosts() and getRecentPosts() * methods will not populate this property. * * @return int */ public function getOthers() { return $this->_others; }
/** * Getter for hash * * @return string */ public function getHash() { return $this->_hash; }
/** * Getter for shared * * @return bool */ public function getShared() { return $this->_shared; }
/** * Setter for shared * * @param bool $isShared * @return Zend_Service_Delicious_Post */ public function setShared($isShared) { $this->_shared = (bool) $isShared;
return $this; }
/** * Deletes post * * @return Zend_Service_Delicious */ public function delete() { return $this->_service->deletePost($this->_url); }
/** * Saves post * * @return DOMDocument */ public function save() { $parms = array( 'url' => $this->_url, 'description'=> $this->_title, 'extended' => $this->_notes, 'shared' => ($this->_shared ? 'yes' : 'no'), 'tags' => implode(' ', (array) $this->_tags), 'replace' => 'yes' ); /* if ($this->_date instanceof Zend_Date) { $parms['dt'] = $this->_date->get('Y-m-d\TH:i:s\Z'); } */
return $this->_service->makeRequest(Zend_Service_Delicious::PATH_POSTS_ADD, $parms); }
/** * Extracts content from the DOM element of a post * * @param DOMElement $node * @return array */ protected static function _parsePostNode(DOMElement $node) { return array( 'url' => $node->getAttribute('href'), 'title' => $node->getAttribute('description'), 'notes' => $node->getAttribute('extended'), 'others' => (int) $node->getAttribute('others'), 'tags' => explode(' ', $node->getAttribute('tag')), /** * @todo replace strtotime() with Zend_Date equivalent */ 'date' => new Zend_Date(strtotime($node->getAttribute('time'))), 'shared' => ($node->getAttribute('shared') == 'no' ? false : true), 'hash' => $node->getAttribute('hash') ); } }
|