moodle_page: MDL-12212 reimplement user_is_editing, deprecate isediting
[moodle.git] / blog / blogpage.php
1 <?php  // $Id$
3 if (!defined('MOODLE_INTERNAL')) {
4     die('Direct access to this script is forbidden.');    ///  It must be included from a Moodle page
5 }
7 /**
8 * Definition of blog page type.
9  */
10 define('PAGE_BLOG_VIEW', 'blog-view');
12 // Blog class derived from moodle's page class
13 class page_blog extends page_base {
15     var $editing = false;
16     var $filtertype = NULL;
17     var $filterselect = NULL;
18     var $tagid = NULL;
20     // Do any validation of the officially recognized bits of the data and forward to parent.
21     // Do NOT load up "expensive" resouces (e.g. SQL data) here!
22     function init_quick($data) {
23         parent::init_quick($data);
24         if (empty($data->pageid)) {
25             //if no pageid then the user is viewing a collection of blog entries
26             $this->id = 0; //set blog id to 0
27         }
28     }
30     /**
31      * Here you should load up all heavy-duty data for your page. Basically everything that
32      * does not NEED to be loaded for the class to make basic decisions should NOT be loaded
33      * in init_quick() and instead deferred here. Of course this function had better recognize
34      * $this->full_init_done to prevent wasteful multiple-time data retrieval.
35      */
36     function init_full() {
37         global $DB;
39         if ($this->full_init_done) {
40             return;
41         }
42         // I need to determine how best to utilize this function. Most init
43         // is already done before we get here in blogFilter and blogInfo
45         if ($this->courseid == 0 || $this->courseid == 1 || !is_numeric($this->courseid) ) {
46             $this->courseid = '';
47         }
48         $this->full_init_done = true;
49     }
51     // For this test page, only admins are going to be allowed editing (for simplicity).
52     function user_allowed_editing() {
53         if (isloggedin() && !isguest()) {
54             return true;
55         }
56         return false;
57     }
59     //over-ride parent method's print_header because blog already passes more than just the title along
60     function print_header($pageTitle='', $pageHeading='', $pageNavigation='', $pageFocus='', $pageMeta='') {
61         global $USER;
63         $this->init_full();
64         $extraheader = '';
65         if (!empty($USER) && !empty($USER->id)) {
66             $extraheader = $this->get_extra_header_string();
67         }
68         print_header($pageTitle, $pageHeading, $pageNavigation, $pageFocus, $pageMeta, true, $extraheader );
69     }
71     /////////// Blog page specific functions
72     function get_extra_header_string() {
73         global $CFG, $USER;
75         $editformstring = '';
76         if ($this->user_allowed_editing()) {
77             if ($this->user_is_editing()) {
78                 $editingString = get_string('turneditingoff');
79             } else {
80                 $editingString = get_string('turneditingon');
81             }
83             $params = $this->url->params();
84             $params['edit'] = $this->user_is_editing() ? 0 : 1;
85             $paramstring = '';
86             foreach ($params as $key=>$val) {
87                 $paramstring .= '<input type="hidden" name="'.$key.'" value="'.s($val).'" />';
88             }
90             $editformstring = '<form '.$CFG->frametarget.' method="get" action="'.$this->url->out(false).'"><div>'
91                              .$paramstring.'<input type="submit" value="'.$editingString.'" /></div></form>';
92         }
94         return $editformstring;
95     }
96 }
97 ?>