Overview

Packages

  • Jonah
  • None

Classes

  • Jonah_Application
  • Jonah_Block_Cloud
  • Jonah_Block_Delivery
  • Jonah_Block_News
  • Jonah_Block_NewsPopular
  • Jonah_Block_Story
  • Jonah_View_Base
  • Jonah_View_DeliveryHtml
  • Overview
  • Package
  • Class
  • Tree
 1: <?php
 2: /**
 3:  * Provide an API to embed the most popular news stories in other Horde
 4:  * applications.
 5:  *
 6:  * Copyright 2002-2012 Horde LLC (http://www.horde.org/)
 7:  *
 8:  * See the enclosed file LICENSE for license information (BSD). If you
 9:  * did not receive this file, see http://cvs.horde.org/co.php/jonah/LICENSE.
10:  *
11:  * @author  Chuck Hagenbuch <chuck@horde.org>
12:  * @author  Michael Rubinsky <mrubinsk@horde.org>
13:  */
14: class Jonah_Block_NewsPopular extends Horde_Core_Block
15: {
16:     /**
17:      */
18:     public function __construct($app, $params = array())
19:     {
20:         parent::__construct($app, $params);
21: 
22:         $this->_name = _("Most Popular Stories");
23:     }
24: 
25:     /**
26:      */
27:     protected function _params()
28:     {
29:         $templates = Horde::loadConfiguration('templates.php', 'templates', 'jonah');
30:         $params['source'] = array('name' => _("Feed"),
31:                                   'type' => 'enum',
32:                                   'values' => array());
33: 
34:         $channels = $GLOBALS['injector']->getInstance('Jonah_Driver')->getChannels();
35:         foreach ($channels as  $channel) {
36:             if ($channel['channel_type'] == Jonah::INTERNAL_CHANNEL) {
37:                 $params['source']['values'][$channel['channel_id']] = $channel['channel_name'];
38:             }
39:         }
40:         natcasesort($params['source']['values']);
41: 
42:         $params['view'] = array('name' => _("View"),
43:                                 'type' => 'enum',
44:                                 'values' => array());
45:         foreach ($templates as $key => $template) {
46:             $params['view']['values'][$key] = $template['name'];
47:         }
48: 
49:         $params['max'] = array('name' => _("Maximum Stories"),
50:                                'type' => 'int',
51:                                'default' => 10,
52:                                'required' => false);
53: 
54:         return $params;
55:     }
56: 
57:     /**
58:      */
59:     protected function _title()
60:     {
61:         try {
62:             $channel = $GLOBALS['injector']->getInstance('Jonah_Driver')->getChannel($this->_params['source']);
63:         } catch (Exception $e) {
64:             return htmlspecialchars($e->getMessage());
65:         }
66: 
67:         if (!empty($channel['channel_link'])) {
68:             $title = Horde::link(htmlspecialchars($channel['channel_link']), '', '', '_blank')
69:                 . htmlspecialchars($channel['channel_name'])
70:                 . _(" - Most read stories") . '</a>';
71:         } else {
72:             $title = htmlspecialchars($channel['channel_name'])
73:                 . _(" - Most read stories");
74:         }
75: 
76:         return $title;
77:     }
78: 
79:     /**
80:      */
81:     protected function _content()
82:     {
83:         if (empty($this->_params['source'])) {
84:             return _("No feed specified.");
85:         }
86: 
87:         $params = $this->_params();
88: 
89:         $view = isset($this->_params['view']) ? $this->_params['view'] : 'standard';
90:         if (!isset($this->_params['max'])) {
91:             $this->_params['max'] = $params['max']['default'];
92:         }
93: 
94: 
95:         return $GLOBALS['injector']->getInstance('Jonah_Driver')->renderChannel($this->_params['source'], $view, $this->_params['max'], 0, Jonah::ORDER_READ);
96:     }
97: 
98: }
99: 
API documentation generated by ApiGen