. /** * The comments block helper functions and callbacks * * @package block_comments * @copyright 2011 Dongsheng Cai * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die(); /** * Validate comment parameter before perform other comments actions * * @package block_comments * @category comment * * @param stdClass $comment_param { * context => context the context object * courseid => int course id * cm => stdClass course module object * commentarea => string comment area * itemid => int itemid * } * @return boolean */ function block_comments_comment_validate($comment_param) { if ($comment_param->commentarea != 'page_comments') { throw new comment_exception('invalidcommentarea'); } if ($comment_param->itemid != 0) { throw new comment_exception('invalidcommentitemid'); } return true; } /** * Running addtional permission check on plugins * * @package block_comments * @category comment * * @param stdClass $args * @return array */ function block_comments_comment_permissions($args) { global $DB, $USER; // By default, anyone can post and view comments. $canpost = $canview = true; // Check if it's the user context and not the owner's profile. if ($args->context->contextlevel == CONTEXT_USER && $USER->id != $args->context->instanceid) { // Check whether the context owner has a comment block in the user's profile. $sqlparam = [ 'blockname' => 'comments', 'parentcontextid' => $args->context->id, 'pagetypepattern' => 'user-profile', ]; // If the comment block is not present at the target user's profile, // then the logged-in user cannot post or view comments. $canpost = $canview = $DB->record_exists_select( 'block_instances', 'blockname = :blockname AND parentcontextid = :parentcontextid AND pagetypepattern = :pagetypepattern', $sqlparam, ); } return ['post' => $canpost, 'view' => $canview]; } /** * Validate comment data before displaying comments * * @package block_comments * @category comment * * @param stdClass $comment * @param stdClass $args * @return boolean */ function block_comments_comment_display($comments, $args) { if ($args->commentarea != 'page_comments') { throw new comment_exception('invalidcommentarea'); } if ($args->itemid != 0) { throw new comment_exception('invalidcommentitemid'); } return $comments; }