Your IP : 216.73.216.40


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

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

PHPWS_Core::requireConfig('notes');
PHPWS_Core::initModClass('notes', 'Note_Item.php');

class Notes_My_Page {
    public $title   = null;
    public $content = null;
    public $message = null;

    public $errors  = null;

    public function __construct()
    {
        if (isset($_SESSION['Note_Message'])) {
            $this->message = $_SESSION['Note_Message'];
            unset($_SESSION['Note_Message']);
        }
    }

    public function main()
    {
        $js = false;

        if (isset($_REQUEST['op'])) {
            $command = & $_REQUEST['op'];
        } else {
            $command = 'read';
        }

        switch ($command) {
        case 'delete_note':
            $note = new Note_Item((int)$_REQUEST['id']);
            $result = $note->delete();
            if (PHPWS_Error::isError($result)) {
                PHPWS_Error::log($result);
            }

            if (isset($_REQUEST['js'])) {
                Layout::nakedDisplay(javascript('close_refresh'));
                exit();
            }

            $this->message = dgettext('notes', 'Message deleted.');
            $this->read();
            break;

        case 'read':
            $this->read();
            break;

        case 'read_note':
            Layout::addStyle('notes', 'note_style.css');
            $note = new Note_Item((int)$_REQUEST['id']);
            Layout::nakedDisplay($note->read(), dgettext('notes', 'Read note'), true);
            break;

        case 'send_note':
            $js = javascriptEnabled();
            $note = new Note_Item;
            $this->sendNote($note);
            break;

        case 'post_note':
            if (javascriptEnabled()) {
                $js = 1;
            }

            $note = new Note_Item;
            $result = $this->postNote($note);
            if (!$result) {
                $this->message = implode('<br />', $this->errors);
                $this->sendNote($note);
            } else {
                if ($note->save()) {
                    $this->sendMessage(dgettext('notes', 'Note sent successfully.'), $js);
                } else {
                    $this->sendMessage(dgettext('notes', 'Note was not sent successfully.'), $js);
                }
            }
            break;

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

        $tpl['TITLE'] =  $this->title;
        $tpl['CONTENT'] = $this->content;
        $tpl['MESSAGE'] = $this->message;

        if ($js) {
            Layout::nakedDisplay(PHPWS_Template::process($tpl, 'notes', 'main.tpl'), null, true);
        } else {
            return PHPWS_Template::process($tpl, 'notes', 'main.tpl');
        }
    }

    public static function miniAdminLink($key)
    {
        $vars = Notes_My_Page::myPageVars(false);
        $vars['op'] = 'send_note';
        $vars['key_id'] = $key->id;
        if (javascriptEnabled()) {
            $js_vars['address'] = PHPWS_Text::linkAddress('users', $vars);
            $js_vars['label']   = dgettext('notes', 'Associate note');
            $js_vars['width']   = 650;
            $js_vars['height']  = 650;
            MiniAdmin::add('notes', javascript('open_window', $js_vars));
        } else {
            MiniAdmin::add('notes', PHPWS_Text::moduleLink(dgettext('notes', 'Associate note'), 'users', $vars));
        }
    }

    public static function myPageVars($include_mod=true)
    {
        $vars = array('action' => 'user', 'tab' => 'notes');

        if ($include_mod) {
            $vars['module'] = 'users';
        }

        return $vars;
    }

    public function postNote(Note_Item $note)
    {
        if (empty($_POST['title'])) {
            $this->errors['missing_title'] = dgettext('notes', 'Your note needs a title.');
        }

        if (!$_POST['uid'] && !preg_match('/[^\w\s\.]/', $_POST['username'])) {
            $db = new PHPWS_DB('users');
            $db->addWhere('username', $_POST['username']);
            $db->addColumn('id');

            $user_id = $db->select('one');

            if ($user_id) {
                $note->setUserId($user_id);
            } else {
                $db->resetWhere();
                $db->addWhere('display_name', $_POST['username']);
                if ($user_id = $db->select('one')) {
                    $note->setUserId($user_id);
                } else {
                    $note->setUserId(0);
                }
            }
        } else {
            $note->setUserId($_POST['uid']);
        }

        $user = new PHPWS_User($note->user_id);

        $note->setTitle($_POST['title']);
        $note->setContent($_POST['content']);
        $note->sender_id = Current_User::getId();
        $note->sender = Current_User::getDisplayName();

        if (!$user->id) {
            $this->errors['bad_user_id'] =  dgettext('notes', 'Unable to resolve user name.');
        } else {
            $note->username = $user->display_name;
        }

        if (empty($note->title) && empty($note->content)) {
            $this->errors['no_content'] = dgettext('notes', 'You need to enter a title or some content.');
        }

        if (!empty($_POST['key_id'])) {
            $note->key_id = (int)$_POST['key_id'];
        }

        if (!empty($this->errors)) {
            return false;
        } else {
            return true;
        }
    }

    public function read()
    {
        Layout::addStyle('notes');
        unset($_SESSION['Notes_Unread']);
        PHPWS_Core::initCoreClass('DBPager.php');
        $pager = new DBPager('notes', 'Note_Item');
        $pager->setModule('notes');
        $pager->setTemplate('read.tpl');
        $pager->setEmptyMessage(dgettext('notes', 'No notes found.'));
        $pager->addWhere('user_id', Current_User::getId());
        $pager->setOrder('date_sent', 'desc', true);

        $page_tags['TITLE_LABEL'] = dgettext('notes', 'Title');
        $page_tags['DATE_SENT_LABEL'] = dgettext('notes', 'Date sent');
        $page_tags['SEND_LINK'] = Note_Item::sendLink();

        $pager->addPageTags($page_tags);
        $pager->addRowTags('getTags');
        $this->title = dgettext('notes', 'Read notes');
        $this->content = $pager->get();
    }

    public function sendMessage($message, $js=false)
    {
        $_SESSION['Note_Message'] = $message;
        if ($js) {
            javascript('close_refresh');
            Layout::nakedDisplay();
        } else {
            PHPWS_Core::reroute('index.php?module=users&action=user&tab=notes');
            exit();
        }
    }


    public function sendNote(Note_Item $note)
    {
        Layout::addStyle('notes');
        $form = new PHPWS_Form('send_note');

        $form->addHidden($this->myPageVars());
        $form->addHidden('op', 'post_note');

        if (isset($_REQUEST['key_id'])) {
            $key = new Key($_REQUEST['key_id']);
            if ($key->id) {
                $form->addHidden('key_id', $key->id);
                $assoc = sprintf(dgettext('notes', 'Associate note to item: %s'), $key->title);
                $form->addTplTag('KEY_ASSOCIATION', $assoc);
            }
        }

        if (isset($_REQUEST['uid'])) {
            $user = new PHPWS_User((int)$_REQUEST['uid']);
            if ($user->id) {
                $note->user_id  = $user->id;
                $note->username = $user->display_name;
            }
        }

        $form->addHidden('uid', $note->user_id);

        $form->addHidden('js', 1);
        $form->addTplTag('CANCEL', javascript('close_window', array('value' =>dgettext('notes', 'Cancel'))));
        javascript('jquery');
        javascriptMod('notes', 'search_user');

        $form->addText('username', $note->username);
        $form->setLabel('username', dgettext('notes', 'Recipient'));

        $form->addText('title', $note->title);
        $form->setLabel('title', dgettext('notes', 'Title'));
        $form->setSize('title', 45);

        $form->addTextArea('content', $note->content);
        $form->useEditor('content', true, true, 0, 0, 'tinymce');
        $form->setLabel('content', dgettext('notes', 'Message'));
        $form->setRows('content', 10);
        $form->setCols('content', 50);

        $form->addSubmit(dgettext('notes', 'Send note'));

        $tpl = $form->getTemplate();

        $this->title = dgettext('notes', 'Send note');
        $this->content = PHPWS_Template::process($tpl, 'notes', 'send_note.tpl');
    }

    public static function showAssociations($key)
    {
        $db = new PHPWS_DB('notes');
        $db->addWhere('user_id', Current_User::getId());
        $db->addWhere('key_id', $key->id);
        $db->addOrder('date_sent', 'desc');
        $notes = $db->getObjects('Note_Item');

        if (empty($notes)) {
            return;
        }

        foreach ($notes as $note) {
            $content[] = $note->readLink();
        }
        $tpl['TITLE'] = dgettext('notes', 'Associated Notes');
        $tpl['CONTENT'] = implode('<br />', $content);
        Layout::add(PHPWS_Template::process($tpl, 'layout', 'box.tpl'), 'notes', 'reminder');
    }

    public static function showUnread()
    {
        if ( isset($_SESSION['Notes_Unread']) && ( $_SESSION['Notes_Unread']['last_check'] + (NOTE_CHECK_INTERVAL * 60) >=  time() ) ) {
            $notes = $_SESSION['Notes_Unread']['last_count'];
        } else {
            $db = new PHPWS_DB('notes');
            $db->addWhere('user_id', Current_User::getId());
            $db->addWhere('read_once', 0);
            $notes = $db->count();
            if (PHPWS_Error::isError($notes)) {
                PHPWS_Error::log($notes);
                return;
            }
            $_SESSION['Notes_Unread']['last_check'] = time();
            $_SESSION['Notes_Unread']['last_count'] = &$notes;
        }

        if ($notes) {
            $tpl['TITLE'] = dgettext('notes', 'Notes');
            $link_val = sprintf(dgettext('notes', 'You have %d unread notes.'), $notes);
            $val = Notes_My_Page::myPageVars(false);
            $tpl['CONTENT'] = PHPWS_Text::moduleLink($link_val, 'users', $val);
            $content = PHPWS_Template::process($tpl, 'layout', 'box.tpl');
            Layout::add($content, 'notes', 'reminder');
        }

    }

}


?>