AutorÃa | Ultima modificación | Ver Log |
<?php// This file is part of Moodle - http://moodle.org///// Moodle is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.//// Moodle is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with Moodle. If not, see <http://www.gnu.org/licenses/>./*** The mynotes block helper functions and callbacks** @package block_mynotes* @author Gautam Kumar Das<gautam.arg@gmail.com>*/defined('MOODLE_INTERNAL') || die();class block_mynotes_manager {public $perpage = 5;private $config = null;/** Constructor.*/public function __construct() {$this->config = get_config('block_mynotes');$this->perpage = $this->config->mynotesperpage;}/*** Returns matched mynotes** @param int $page* @return array*/public function get_mynotes($options) {global $DB, $CFG, $USER, $OUTPUT;$page = (!isset($options->page) || !$options->page) ? 0 : $options->page;$perpage = $this->perpage;$params = array();$start = $page * $perpage;$ufields = 'u.id';$where = ' m.userid = :userid';$params['userid'] = $USER->id;if (isset($options->contextarea) && !empty($options->contextarea)) {$where .= ' AND m.contextarea = :contextarea';$params['contextarea'] = $options->contextarea;}if (isset($options->courseid) && $options->courseid) {$where .= ' AND m.courseid = :courseid';$params['courseid'] = $options->courseid;}$sql = "SELECT $ufields,m.id AS mynoteid, m.content AS ccontent, m.contextarea, m.format AS cformat,m.timecreated AS timecreated, c.fullname as coursename, m.courseidFROM {block_mynotes} mJOIN {user} u ON u.id = m.useridLEFT JOIN {course} c ON c.id = m.courseidWHERE $whereORDER BY m.timecreated DESC";$strftime = get_string('strftimerecentfull', 'langconfig');$mynotes = array();$formatoptions = array('overflowdiv' => true);$start = (isset($options->limitfrom)) ? $options->limitfrom : $start;$rs = $DB->get_recordset_sql($sql, $params, $start, $perpage);foreach ($rs as $u) {$c = new stdClass();$c->id = $u->mynoteid;$c->userid = $u->id;if ($u->courseid != SITEID) {$c->coursename = html_writer::link(course_get_url($u->courseid), $u->coursename);} else {$c->coursename = '';}$c->content = $u->ccontent;$c->contextarea = $u->contextarea;$c->format = $u->cformat;$c->timecreated = userdate($u->timecreated, $strftime);$c->content = format_text($c->content, $c->format, $formatoptions);$c->delete = true;$mynotes[] = $c;}$rs->close();return $mynotes;}/*** Returns count of the mynotes in a table where all the given conditions met.** @param object $options* @return int The count of records*/public function count_mynotes($options) {global $DB, $USER;$params = array();$params['userid'] = $USER->id;if (isset($options->contextarea) && !empty($options->contextarea)) {$params['contextarea'] = $options->contextarea;}if (isset($options->courseid) && !empty($options->courseid)) {$params['courseid'] = $options->courseid;}return $DB->count_records('block_mynotes', $params);}/** Returns paging bar for mynotes** @param object $options must contain properties(contextid, count, page, perpage)* @return html*/public function get_pagination($options) {global $OUTPUT;$baseurl = new moodle_url('/blocks/mynotes/mynotes_ajax.php',array('contextid' => $options->contextid));return $OUTPUT->paging_bar($options->count, $options->page, $this->perpage, $baseurl);}/** Adding new record of mynote.** @return object of single mynote record if insert to DB else false*/public function addmynote($context, $contextarea, $course, $content, $format = FORMAT_MOODLE) {global $CFG, $DB, $USER, $OUTPUT;$newnote = new stdClass;$newnote->contextid = $context->id;$newnote->contextarea = $contextarea;$newnote->content = $content;$newnote->courseid = $course->id;$newnote->format = $format;$newnote->userid = $USER->id;$newnote->timecreated = time();if ($cmtid = $DB->insert_record('block_mynotes', $newnote)) {$newnote->id = $cmtid;$newnote->content = format_text($newnote->content, $newnote->format, array('overflowdiv' => true));$newnote->timecreated = userdate($newnote->timecreated, get_string('strftimerecentfull', 'langconfig'));$newnote->coursename = ($newnote->courseid == SITEID) ? '' : $course->fullname;if (!empty($newnote->coursename)) {$newnote->coursename = html_writer::link(course_get_url($course), $newnote->coursename);}return $newnote;} else {return false;}}/** Find all available context areas which is used to store and retrieve mynotes.** @return array*/public function get_available_contextareas() {return array('site' => get_string('site', 'block_mynotes'),'course' => get_string('course', 'block_mynotes'),'mod' => get_string('mod', 'block_mynotes'),'user' => get_string('user', 'block_mynotes'),);}/** Find context area using context level.** @param object $context* @retrun string*/public function get_current_tab($context, $page) {if ($page->url->compare(new moodle_url('/user/view.php'), URL_MATCH_BASE)) {return 'user';} else if ($page->url->compare(new moodle_url('/user/profile.php'), URL_MATCH_BASE)) {return 'user';} else if ($context->contextlevel == CONTEXT_SYSTEM) {return 'site';} else if ($context->contextlevel == CONTEXT_COURSE) {if ($context->instanceid == SITEID) {return 'site';}return 'course';} else if ($context->contextlevel == CONTEXT_MODULE) {return 'mod';} else if ($context->contextlevel == CONTEXT_USER) {return 'user';} else if ($context->contextlevel == CONTEXT_BLOCK) {$parent = $context->get_parent_context();if ($parent->contextlevel == CONTEXT_COURSE) {return 'course';} else if ($parent->contextlevel == CONTEXT_MODULE) {return 'mod';}}}/*** Delete a note** @param int $mynoteid* @return bool*/public function delete($mynoteid) {global $DB, $USER;if (!$mynote = $DB->get_record('block_mynotes', array('id' => $mynoteid))) {throw new mynotes_exception('deletefailed', 'block_mynotes');}if ($USER->id != $mynote->userid) {throw new mynotes_exception('nopermissiontodelete', 'block_mynotes');}return $DB->delete_records('block_mynotes', array('id' => $mynoteid));}}/*** Mynotes exception class*/class mynotes_exception extends moodle_exception {}