* @package Horde */ class Horde_Block_Cloud extends Horde_Core_Block { /** */ public function __construct($app, $params = array()) { parent::__construct($app, $params); $this->_name = _("Tag Cloud"); } protected function _escapeJs($string) { return str_replace("\n", '\n', str_replace('"', '\"', addcslashes(str_replace("\r", '', (string)$string), "\0..\37'\\"))); } /** */ protected function _content() { $cloud = new Horde_Core_Ui_TagCloud(); foreach ($this->_getTags() as $tag) { $cloud->addElement( $tag['tag_name'], '#', $tag['count'], null, 'doSearch(\'' . htmlspecialchars($this->_escapeJs($tag['tag_name'])) . '\'); return false;'); } Horde::startBuffer(); include HORDE_TEMPLATES . '/block/cloud.inc'; return Horde::endBuffer() . '
 ' . Horde_Themes_Image::tag('loading.gif', array( 'attr' => array( 'id' => 'cloudloadingimg', 'style' => 'display:none;' ) )) . '
' . $cloud->buildHTML() . '
'; } /** */ protected function _getTags() { global $registry; $results = array(); foreach ($registry->listAPIs() as $api) { if ($registry->hasMethod($api . '/listTagInfo')) { try { $results = array_merge( $results, $registry->call( $api . '/listTagInfo', array(null, $registry->getAuth()))); } catch (Horde_Exception $e) {} } } return $results; } }