Your IP : 216.73.216.40


Current Path : /var/www/html/ajay/phpwebsite-1.8.x/mod/rss/class/
Upload File :
Current File : /var/www/html/ajay/phpwebsite-1.8.x/mod/rss/class/Admin.php

<?php

/**
 * @author Matthew McNaney <mcnaney at gmail dot com>
 * @version $Id$
 */

class RSS_Admin {

    public static function main()
    {
        $tpl['MESSAGE'] = NULL;
        $message = RSS_Admin::getMessage();
        PHPWS_Core::initModClass('rss', 'Feed.php');
        PHPWS_Core::initModClass('rss', 'Channel.php');

        if (!Current_User::allow('rss')) {
            Current_User::disallow();
        }

        $panel = RSS_Admin::adminPanel();

        if (isset($_REQUEST['command'])) {
            $command = $_REQUEST['command'];
        } elseif (isset($_REQUEST['tab'])) {
            $command = $_REQUEST['tab'];
        } else {
            $command = $panel->getCurrentTab();
        }

        if (isset($_REQUEST['channel_id'])) {
            $channel = new RSS_Channel($_REQUEST['channel_id']);
        } else {
            $channel = new RSS_Channel;
        }

        if (isset($_REQUEST['feed_id'])) {
            $feed = new RSS_Feed($_REQUEST['feed_id']);
        } else {
            $feed = new RSS_Feed;
        }

        switch ($command) {
            case 'channels':
                $tpl = RSS_Admin::channels();
                break;

            case 'settings':
                $tpl = RSS_Admin::settings();
                break;

            case 'save_settings':
                $result = RSS_Admin::save_settings();

                if (!$result) {
                    PHPWS_Settings::save('rss');
                    $result = dgettext('rss', 'Settings saved successfully.');
                }
                $tpl = RSS_Admin::settings();
                $tpl['MESSAGE'] = &$result;
                break;

            case 'save_feed':
                $result = $feed->post();
                if (is_array($result)) {
                    $tpl = RSS_Admin::editFeed($feed);
                    $tpl['MESSAGE'] = implode('<br />', $result);
                    Layout::nakedDisplay(PHPWS_Template::process($tpl, 'rss', 'main.tpl'));
                    exit();
                } else {
                    $result = $feed->save();
                    javascript('close_refresh');
                }
                break;

            case 'edit_channel':
                $tpl = RSS_Admin::editChannel($channel);
                break;

            case 'post_channel':
                $result = $channel->post();
                if (is_array($result)) {
                    $message = implode('<br />', $result);
                    $tpl = RSS_Admin::editChannel($channel);
                } else {
                    $result = $channel->save();
                    if (PHPWS_Error::isError($result)) {
                        RSS_Admin::sendMessage(dgettext('rss', 'An error occurred when saving your channel.'), 'channels');
                    } else {
                        RSS_Admin::sendMessage(dgettext('rss', 'Channel saved.'), 'channels');
                    }
                }
                break;

            case 'reset_feed':
                $feed->reset();
            case 'import':
                $tpl = RSS_Admin::import();
                break;

            case 'turn_on_display':
                $feed->display = 1;
                $feed->save();
                $tpl = RSS_Admin::import();
                break;

            case 'turn_off_display':
                $feed->display = 0;
                $feed->save();
                $tpl = RSS_Admin::import();
                break;

            case 'add_feed':
                $tpl = RSS_Admin::editFeed($feed);
                Layout::nakedDisplay(PHPWS_Template::process($tpl, 'rss', 'main.tpl'));
                exit();
                break;

            case 'edit_feed':
                $tpl = RSS_Admin::editFeed($feed);
                Layout::nakedDisplay(PHPWS_Template::process($tpl, 'rss', 'main.tpl'));
                exit();
                break;

            case 'delete_feed':
                $feed->delete();
                $tpl = RSS_Admin::import();
                break;

            default:
                PHPWS_Core::errorPage('404');
                break;
        }

        if (!empty($message)) {
            $tpl['MESSAGE'] = $message;
        }

        $content = PHPWS_Template::process($tpl, 'rss', 'main.tpl');

        $panel->setContent($content);
        $content = $panel->display();
        Layout::add(PHPWS_ControlPanel::display($content));
    }


    public static function sendMessage($message, $command)
    {
        $_SESSION['RSS_Message'] = $message;

        PHPWS_Core::reroute(sprintf('index.php?module=rss&command=%s&authkey=%s',
        $command, Current_User::getAuthKey()));

    }

    public static function getMessage()
    {
        if (!isset($_SESSION['RSS_Message'])) {
            return NULL;
        }

        $message = $_SESSION['RSS_Message'];
        unset($_SESSION['RSS_Message']);
        return $message;
    }

    public static function adminPanel()
    {
        $opt['link'] = 'index.php?module=rss';

        $opt['title'] = dgettext('rss', 'Channels');
        $tab['channels'] = $opt;

        $opt['title'] = dgettext('rss', 'Import');
        $tab['import'] = $opt;

        $opt['title'] = dgettext('rss', 'Settings');
        $tab['settings'] = $opt;

        $panel = new PHPWS_Panel('rss_admin');
        $panel->quickSetTabs($tab);
        return $panel;
    }

    public static function editChannel(RSS_Channel $channel)
    {
        $form = new PHPWS_Form;
        $form->addHidden('module', 'rss');
        $form->addHidden('command', 'post_channel');
        $form->addSubmit(dgettext('rss', 'Save Channel'));

        if ($channel->id) {
            $form->addHidden('channel_id', $channel->id);
        }

        $form->addText('title', $channel->title);
        $form->setLabel('title', dgettext('rss', 'Title'));

        $form->addTextArea('description', $channel->description);
        $form->setLabel('description', dgettext('rss', 'Description'));

        $formtpl = $form->getTemplate();

        $tpl['CONTENT'] = PHPWS_Template::processTemplate($formtpl, 'rss', 'channel_form.tpl');

        $tpl['TITLE'] = dgettext('rss', 'Edit channel');

        return $tpl;

    }

    public static function settings()
    {
        $form = new PHPWS_Form('rss-settings');
        $form->addHidden('module', 'rss');
        $form->addHidden('command', 'save_settings');

        $files = array(1=>'1', 2=>'2');
        $filenames = array(1=>'RSS 1.0', 2=>'RSS 2.0');
        $form->addRadio('rssfeed', $files);
        $form->setLabel('rssfeed', $filenames);
        $form->setMatch('rssfeed', PHPWS_Settings::get('rss', 'rssfeed'));


        $form->addText('editor', PHPWS_Settings::get('rss', 'editor'));
        $form->setLabel('editor', dgettext('rss', 'Managing editor email address'));
        $form->setSize('editor', 30);

        $form->addText('webmaster', PHPWS_Settings::get('rss', 'webmaster'));
        $form->setLabel('webmaster', dgettext('rss', 'Webmaster email address'));
        $form->setSize('webmaster', 30);

        $form->addText('copyright', PHPWS_Settings::get('rss', 'copyright'));
        $form->setLabel('copyright', dgettext('rss', 'Copyright'));
        $form->setSize('copyright', 40);
        $form->addSubmit(dgettext('rss', 'Save settings'));

        $tpl = $form->getTemplate();

        $fc['TITLE']   = dgettext('rss', 'General Settings');
        $fc['CONTENT'] = PHPWS_Template::process($tpl, 'rss', 'settings.tpl');

        return $fc;
    }

    public static function save_settings()
    {
        $message = null;
        PHPWS_Settings::set('rss', 'rssfeed', (int)$_POST['rssfeed']);

        if (!empty($_POST['editor'])) {
            if (PHPWS_Text::isValidInput($_POST['editor'], 'email')) {
                PHPWS_Settings::set('rss', 'editor', $_POST['editor']);
            } else {
                $message = dgettext('rss', 'Please check editor email format.');
            }
        } else {
            PHPWS_Settings::set('rss', 'editor', '');
        }

        if (!empty($_POST['webmaster'])) {
            if (PHPWS_Text::isValidInput($_POST['webmaster'], 'email')) {
                PHPWS_Settings::set('rss', 'webmaster', $_POST['webmaster']);
            } else {
                $message = dgettext('rss', 'Please check webmaster email format.');
            }
        } else {
            PHPWS_Settings::set('rss', 'webmaster', '');
        }

        if (!empty($_POST['copyright'])) {
            PHPWS_Settings::set('rss', 'copyright', strip_tags($_POST['copyright']));
        }

        return $message;
    }

    public static function channels()
    {
        PHPWS_Core::initModClass('rss', 'Channel.php');
        $final_tpl['TITLE'] = dgettext('rss', 'Administrate RSS Feeds');

        $db = new PHPWS_DB('rss_channel');
        $db->addOrder('title');
        $channels = $db->getObjects('RSS_Channel');

        if (empty($channels)) {
            $final_tpl['CONTENT'] = dgettext('rss', 'No channels have been registered.');
            return $final_tpl;
        } elseif (PHPWS_Error::isError($channels)) {
            PHPWS_Error::log($channels);
            $final_tpl['CONTENT'] = dgettext('rss', 'An error occurred when trying to access your RSS channels.');
            return $final_tpl;
        }

        foreach ($channels as $oChannel) {
            $row['TITLE'] = $oChannel->getTitle();
            $row['ACTION'] = implode(' | ', $oChannel->getActionLinks());
            if ($oChannel->active) {
                $row['ACTIVE'] = dgettext('rss', 'Yes');
            } else {
                $row['ACTIVE'] = dgettext('rss', 'No');
            }

            $tpl['channels'][] = $row;
        }

        $tpl['TITLE_LABEL']  = dgettext('rss', 'Title');
        $tpl['ACTIVE_LABEL'] = dgettext('rss', 'Active');
        $tpl['ACTION_LABEL'] = dgettext('rss', 'Action');

        $final_tpl['CONTENT'] = PHPWS_Template::process($tpl, 'rss', 'channel_list.tpl');

        return $final_tpl;
    }

    public static function editFeed(RSS_Feed $feed)
    {
        $form = new PHPWS_Form;
        if ($feed->id) {
            $form->addHidden('feed_id', $feed->id);
        }
        $form->addHidden('module', 'rss');
        $form->addHidden('command', 'save_feed');

        $form->addText('address', $feed->address);
        $form->setLabel('address', dgettext('rss', 'Address'));
        $form->setSize('address', '30');

        $form->addText('title', $feed->title);
        $form->setLabel('title', dgettext('rss', 'Title'));
        $form->setSize('title', '30');

        $form->addSubmit('submit', dgettext('rss', 'Save'));

        $form->addButton('cancel', dgettext('rss', 'Cancel'));
        $form->setExtra('cancel', 'onclick="window.close()"');

        $form->addText('item_limit', $feed->item_limit);
        $form->setSize('item_limit', 2);
        $form->setLabel('item_limit', dgettext('rss', 'Item limit'));

        $form->addText('refresh_time', $feed->refresh_time);
        $form->setSize('refresh_time', 5);
        $form->setLabel('refresh_time', dgettext('rss', 'Refresh time'));

        $template = $form->getTemplate();

        $template['TITLE_WARNING'] = dgettext('rss', 'Feed title will be used if left empty');
        $template['REFRESH_WARNING'] = dgettext('rss', 'In seconds');

        $content = PHPWS_Template::process($template, 'rss', 'add_feed.tpl');

        $tpl['TITLE'] = dgettext('rss', 'Add Feed');
        $tpl['CONTENT'] = $content;
        return $tpl;
    }

    public static function import()
    {
        PHPWS_Core::requireConfig('rss');

        if (!ini_get('allow_url_fopen')) {
            $tpl['TITLE'] = dgettext('rss', 'Sorry');
            $tpl['CONTENT'] = dgettext('rss', 'You must enable allow_url_fopen in your php.ini file.');
            return $tpl;
        }

        PHPWS_Core::initCoreClass('DBPager.php');
        PHPWS_Core::initModClass('rss', 'Feed.php');
        $content = NULL;

        $vars['address'] = 'index.php?module=rss&command=add_feed';
        $vars['label'] = dgettext('rss', 'Add feed');
        $vars['width'] = '450';
        $vars['height'] = '350';
        $template['ADD_LINK'] = javascript('open_window', $vars);

        $template['TITLE_LABEL']   = dgettext('rss', 'Title');
        $template['ADDRESS_LABEL'] = dgettext('rss', 'Address');
        $template['DISPLAY_LABEL'] = dgettext('rss', 'Display?');
        $template['ACTION_LABEL']  = dgettext('rss', 'Action');
        $template['REFRESH_TIME_LABEL'] = dgettext('rss', 'Refresh feed');

        $pager = new DBPager('rss_feeds', 'RSS_Feed');
        $pager->setModule('rss');
        $pager->setTemplate('admin_feeds.tpl');
        $pager->addPageTags($template);
        $pager->addRowTags('pagerTags');
        $content = $pager->get();

        $tpl['TITLE'] = dgettext('rss', 'Import RSS Feeds');
        $tpl['CONTENT'] = $content;
        if (!defined('ALLOW_CACHE_LITE') || !ALLOW_CACHE_LITE) {
            $tpl['MESSAGE'] = dgettext('rss', 'Please enable Cache Lite in your config/core/config.php file.');
        }

        return $tpl;
    }
}

?>