Of the API features that Google offers for their Blogger service the one that I was most surprised to see missing is a method to retrieve all the tags(category) for a blog. Though listed in their query parameters is the syntax for search by tag/category, the "cloud" was missing. The below code takes care of this missing feature.
::NOTE::
This class will be rolled into my helper classes soon.
class CW_Blog_Util {
const BLOGGER_URL = 'http://www.blogger.com/feeds/blogId/posts/default';
/**
* associative array holding blog tbl properties
*
* @var array
*/
private $_blogs = array();
/**
* blog title
*
* @var string
*/
private $_title = "";
private $_gDataQuery = null;
private $_gQuery = null;
public function __construct() {
$this->_gQuery = new Zend_Gdata();
}
public function getAllEntries() {
$query = $this->_getGdataQuery();
$feed = $this->_gQuery->getFeed($query);
return $feed;
}
public function getLatestBlog() {
$query = $this->_getGdataQuery();
$feed = $this->_gQuery->getFeed($query);
return $feed->current();
}
public function getBlogListByTag($tag) {
$query = $this->_getGdataQuery();
$query->setCategory($tag);
$feed = $this->_gQuery->getFeed($query);
return $feed;
}
public function getBlogLabels() {
$labels = array();
foreach ($this->getAllEntries() as $attr) {
for ($i = 0; $i < count($attr->category); $i++) {
$labels[] = $attr->category[$i]->term;
}
}
return array_count_values($labels);
}
private function _getGdataQuery() {
$this->_gDataQuery = new Zend_Gdata_Query(self::BLOGGER_URL);
return $this->_gDataQuery;
}
}
// Usage
$blogs = new CW_Blog_Util();
foreach ($blogs->getBlogLabels() as $label => $count) {
print "Label {$label}
";
}
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment