}
}
-/**
- * Hook when a comment is added.
- *
- * @param stdClass $comment The comment.
- * @param stdClass $params The parameters.
- * @return array
- */
-function tool_lp_comment_add($comment, $params) {
- global $USER;
-
- if (!\core_competency\api::is_enabled()) {
- return;
- }
-
- if ($params->commentarea == 'user_competency') {
- $uc = new \core_competency\user_competency($params->itemid);
-
- // Message both the user and the reviewer, except when they are the author of the message.
- $recipients = array($uc->get_userid());
- if ($uc->get_reviewerid()) {
- $recipients[] = $uc->get_reviewerid();
- }
- $recipients = array_diff($recipients, array($comment->userid));
- if (empty($recipients)) {
- return;
- }
-
- // Get the sender.
- $user = $USER;
- if ($USER->id != $comment->userid) {
- $user = core_user::get_user($comment->userid);
- }
- $fullname = fullname($user);
-
- // Get the competency.
- $competency = $uc->get_competency();
- $competencyname = format_string($competency->get_shortname(), true, array('context' => $competency->get_context()));
-
- // We want to send a message for one plan, trying to find an active one first, or the last modified one.
- $plan = null;
- $plans = $uc->get_plans();
- foreach ($plans as $candidate) {
- if ($candidate->get_status() == \core_competency\plan::STATUS_ACTIVE) {
- $plan = $candidate;
- break;
-
- } else if (!empty($plan) && $plan->get_timemodified() < $candidate->get_timemodified()) {
- $plan = $candidate;
-
- } else if (empty($plan)) {
- $plan = $candidate;
- }
- }
-
- // Urls.
- // TODO MDL-52749 Replace the link to the plan with the user competency page.
- if (empty($plan)) {
- $urlname = get_string('userplans', 'tool_lp');
- $url = new moodle_url('/admin/tool/lp/plans.php', array('userid' => $uc->get_userid()));
- } else {
- $urlname = $competencyname;
- $url = new moodle_url('/admin/tool/lp/user_competency_in_plan.php', array(
- 'userid' => $uc->get_userid(),
- 'competencyid' => $uc->get_competencyid(),
- 'planid' => $plan->get_id()
- ));
- }
-
- // Construct the message content.
- $fullmessagehtml = get_string('usercommentedonacompetencyhtml', 'tool_lp', array(
- 'fullname' => $fullname,
- 'competency' => $competencyname,
- 'comment' => format_text($comment->content, $comment->format, array('context' => $params->context->id)),
- 'url' => $url->out(true),
- 'urlname' => $urlname,
- ));
- if ($comment->format == FORMAT_PLAIN || $comment->format == FORMAT_MOODLE) {
- $format = FORMAT_MOODLE;
- $fullmessage = get_string('usercommentedonacompetency', 'tool_lp', array(
- 'fullname' => $fullname,
- 'competency' => $competencyname,
- 'comment' => $comment->content,
- 'url' => $url->out(false),
- ));
- } else {
- $format = FORMAT_HTML;
- $fullmessage = $fullmessagehtml;
- }
-
- $message = new \core\message\message();
- $message->component = 'moodle';
- $message->name = 'competencyusercompcomment';
- $message->notification = 1;
- $message->userfrom = core_user::get_noreply_user();
- $message->subject = get_string('usercommentedonacompetencysubject', 'tool_lp', $fullname);
- $message->fullmessage = $fullmessage;
- $message->fullmessageformat = $format;
- $message->fullmessagehtml = $fullmessagehtml;
- $message->smallmessage = get_string('usercommentedonacompetencysmall', 'tool_lp', array(
- 'fullname' => $fullname,
- 'competency' => $competencyname,
- ));
- $message->contexturl = $url->out(false);
- $message->contexturlname = $urlname;
-
- // Message each recipient.
- foreach ($recipients as $recipient) {
- $msgcopy = clone($message);
- $msgcopy->userto = $recipient;
- message_send($msgcopy);
- }
-
- } else if ($params->commentarea == 'plan') {
- $plan = new \core_competency\plan($params->itemid);
-
- // Message both the user and the reviewer, except when they are the author of the message.
- $recipients = array($plan->get_userid());
- if ($plan->get_reviewerid()) {
- $recipients[] = $plan->get_reviewerid();
- }
- $recipients = array_diff($recipients, array($comment->userid));
- if (empty($recipients)) {
- return;
- }
-
- // Get the sender.
- $user = $USER;
- if ($USER->id != $comment->userid) {
- $user = core_user::get_user($comment->userid);
- }
-
- $fullname = fullname($user);
- $planname = format_string($plan->get_name(), true, array('context' => $plan->get_context()));
- $urlname = $planname;
- $url = new moodle_url('/admin/tool/lp/plan.php', array(
- 'id' => $plan->get_id()
- ));
-
- // Construct the message content.
- $fullmessagehtml = get_string('usercommentedonaplanhtml', 'tool_lp', array(
- 'fullname' => $fullname,
- 'plan' => $planname,
- 'comment' => format_text($comment->content, $comment->format, array('context' => $params->context->id)),
- 'url' => $url->out(true),
- 'urlname' => $urlname,
- ));
- if ($comment->format == FORMAT_PLAIN || $comment->format == FORMAT_MOODLE) {
- $format = FORMAT_MOODLE;
- $fullmessage = get_string('usercommentedonaplan', 'tool_lp', array(
- 'fullname' => $fullname,
- 'plan' => $planname,
- 'comment' => $comment->content,
- 'url' => $url->out(false),
- ));
- } else {
- $format = FORMAT_HTML;
- $fullmessage = $fullmessagehtml;
- }
-
- $message = new \core\message\message();
- $message->component = 'moodle';
- $message->name = 'competencyplancomment';
- $message->notification = 1;
- $message->userfrom = core_user::get_noreply_user();
- $message->subject = get_string('usercommentedonaplansubject', 'tool_lp', $fullname);
- $message->fullmessage = $fullmessage;
- $message->fullmessageformat = $format;
- $message->fullmessagehtml = $fullmessagehtml;
- $message->smallmessage = get_string('usercommentedonaplansmall', 'tool_lp', array(
- 'fullname' => $fullname,
- 'plan' => $planname,
- ));
- $message->contexturl = $url->out(false);
- $message->contexturlname = $urlname;
-
- // Message each recipient.
- foreach ($recipients as $recipient) {
- $msgcopy = clone($message);
- $msgcopy->userto = $recipient;
- message_send($msgcopy);
- }
- }
-}
-
-/**
- * Return the permissions of for the comments.
- *
- * @param stdClass $params The parameters.
- * @return array
- */
-function tool_lp_comment_permissions($params) {
- if (!\core_competency\api::is_enabled()) {
- return array('post' => false, 'view' => false);
- }
-
- if ($params->commentarea == 'user_competency') {
- $uc = new \core_competency\user_competency($params->itemid);
- if ($uc->can_read()) {
- return array('post' => $uc->can_comment(), 'view' => $uc->can_read_comments());
- }
- } else if ($params->commentarea == 'plan') {
- $plan = new \core_competency\plan($params->itemid);
- if ($plan->can_read()) {
- return array('post' => $plan->can_comment(), 'view' => $plan->can_read_comments());
- }
- }
-
- return array('post' => false, 'view' => false);
-}
-
-/**
- * Validates comments.
- *
- * @param stdClass $params The parameters.
- * @return bool
- */
-function tool_lp_comment_validate($params) {
- if (!\core_competency\api::is_enabled()) {
- return false;
- }
-
- if ($params->commentarea == 'user_competency') {
- if (!\core_competency\user_competency::record_exists($params->itemid)) {
- return false;
- }
- return true;
- } else if ($params->commentarea == 'plan') {
- if (!\core_competency\plan::record_exists($params->itemid)) {
- return false;
- }
- return true;
- }
- return false;
-}
-
/**
* Inject the competencies elements into all moodle module settings forms.
*
$comment = new comment((object) array(
'client_id' => 'plancommentarea' . $this->get_id(),
'context' => $this->get_context(),
- 'component' => 'tool_lp',
+ 'component' => 'competency', // This cannot be named 'core_competency'.
'itemid' => $this->get_id(),
'area' => 'plan',
'showcount' => true,
$comment = new comment((object) array(
'context' => $this->get_context(),
- 'component' => 'tool_lp',
+ 'component' => 'competency', // This cannot be named 'core_competency'.
'itemid' => $this->get_id(),
'area' => 'user_competency',
'showcount' => true,
defined('MOODLE_INTERNAL') || die();
use core_competency\api;
+use core_competency\plan;
+use core_competency\user_competency;
use core_competency\user_evidence;
+/**
+ * Hook when a comment is added.
+ *
+ * @param stdClass $comment The comment.
+ * @param stdClass $params The parameters.
+ * @return array
+ */
+function core_competency_comment_add($comment, $params) {
+ global $USER;
+
+ if (!api::is_enabled()) {
+ return;
+ }
+
+ if ($params->commentarea == 'user_competency') {
+ $uc = new user_competency($params->itemid);
+
+ // Message both the user and the reviewer, except when they are the author of the message.
+ $recipients = array($uc->get_userid());
+ if ($uc->get_reviewerid()) {
+ $recipients[] = $uc->get_reviewerid();
+ }
+ $recipients = array_diff($recipients, array($comment->userid));
+ if (empty($recipients)) {
+ return;
+ }
+
+ // Get the sender.
+ $user = $USER;
+ if ($USER->id != $comment->userid) {
+ $user = core_user::get_user($comment->userid);
+ }
+ $fullname = fullname($user);
+
+ // Get the competency.
+ $competency = $uc->get_competency();
+ $competencyname = format_string($competency->get_shortname(), true, array('context' => $competency->get_context()));
+
+ // We want to send a message for one plan, trying to find an active one first, or the last modified one.
+ $plan = null;
+ $plans = $uc->get_plans();
+ foreach ($plans as $candidate) {
+ if ($candidate->get_status() == plan::STATUS_ACTIVE) {
+ $plan = $candidate;
+ break;
+
+ } else if (!empty($plan) && $plan->get_timemodified() < $candidate->get_timemodified()) {
+ $plan = $candidate;
+
+ } else if (empty($plan)) {
+ $plan = $candidate;
+ }
+ }
+
+ // Urls.
+ // TODO MDL-52749 Replace the link to the plan with the user competency page.
+ // FIXME Use a URL resolver here.
+ if (empty($plan)) {
+ $urlname = get_string('userplans', 'tool_lp');
+ $url = new moodle_url('/admin/tool/lp/plans.php', array('userid' => $uc->get_userid()));
+ } else {
+ $urlname = $competencyname;
+ $url = new moodle_url('/admin/tool/lp/user_competency_in_plan.php', array(
+ 'userid' => $uc->get_userid(),
+ 'competencyid' => $uc->get_competencyid(),
+ 'planid' => $plan->get_id()
+ ));
+ }
+
+ // Construct the message content.
+ $fullmessagehtml = get_string('usercommentedonacompetencyhtml', 'tool_lp', array(
+ 'fullname' => $fullname,
+ 'competency' => $competencyname,
+ 'comment' => format_text($comment->content, $comment->format, array('context' => $params->context->id)),
+ 'url' => $url->out(true),
+ 'urlname' => $urlname,
+ ));
+ if ($comment->format == FORMAT_PLAIN || $comment->format == FORMAT_MOODLE) {
+ $format = FORMAT_MOODLE;
+ $fullmessage = get_string('usercommentedonacompetency', 'tool_lp', array(
+ 'fullname' => $fullname,
+ 'competency' => $competencyname,
+ 'comment' => $comment->content,
+ 'url' => $url->out(false),
+ ));
+ } else {
+ $format = FORMAT_HTML;
+ $fullmessage = $fullmessagehtml;
+ }
+
+ $message = new \core\message\message();
+ $message->component = 'moodle';
+ $message->name = 'competencyusercompcomment';
+ $message->notification = 1;
+ $message->userfrom = core_user::get_noreply_user();
+ $message->subject = get_string('usercommentedonacompetencysubject', 'tool_lp', $fullname);
+ $message->fullmessage = $fullmessage;
+ $message->fullmessageformat = $format;
+ $message->fullmessagehtml = $fullmessagehtml;
+ $message->smallmessage = get_string('usercommentedonacompetencysmall', 'tool_lp', array(
+ 'fullname' => $fullname,
+ 'competency' => $competencyname,
+ ));
+ $message->contexturl = $url->out(false);
+ $message->contexturlname = $urlname;
+
+ // Message each recipient.
+ foreach ($recipients as $recipient) {
+ $msgcopy = clone($message);
+ $msgcopy->userto = $recipient;
+ message_send($msgcopy);
+ }
+
+ } else if ($params->commentarea == 'plan') {
+ $plan = new plan($params->itemid);
+
+ // Message both the user and the reviewer, except when they are the author of the message.
+ $recipients = array($plan->get_userid());
+ if ($plan->get_reviewerid()) {
+ $recipients[] = $plan->get_reviewerid();
+ }
+ $recipients = array_diff($recipients, array($comment->userid));
+ if (empty($recipients)) {
+ return;
+ }
+
+ // Get the sender.
+ $user = $USER;
+ if ($USER->id != $comment->userid) {
+ $user = core_user::get_user($comment->userid);
+ }
+
+ $fullname = fullname($user);
+ $planname = format_string($plan->get_name(), true, array('context' => $plan->get_context()));
+ $urlname = $planname;
+ // FIXME Use a URL resolver here.
+ $url = new moodle_url('/admin/tool/lp/plan.php', array(
+ 'id' => $plan->get_id()
+ ));
+
+ // Construct the message content.
+ $fullmessagehtml = get_string('usercommentedonaplanhtml', 'tool_lp', array(
+ 'fullname' => $fullname,
+ 'plan' => $planname,
+ 'comment' => format_text($comment->content, $comment->format, array('context' => $params->context->id)),
+ 'url' => $url->out(true),
+ 'urlname' => $urlname,
+ ));
+ if ($comment->format == FORMAT_PLAIN || $comment->format == FORMAT_MOODLE) {
+ $format = FORMAT_MOODLE;
+ $fullmessage = get_string('usercommentedonaplan', 'tool_lp', array(
+ 'fullname' => $fullname,
+ 'plan' => $planname,
+ 'comment' => $comment->content,
+ 'url' => $url->out(false),
+ ));
+ } else {
+ $format = FORMAT_HTML;
+ $fullmessage = $fullmessagehtml;
+ }
+
+ $message = new \core\message\message();
+ $message->component = 'moodle';
+ $message->name = 'competencyplancomment';
+ $message->notification = 1;
+ $message->userfrom = core_user::get_noreply_user();
+ $message->subject = get_string('usercommentedonaplansubject', 'tool_lp', $fullname);
+ $message->fullmessage = $fullmessage;
+ $message->fullmessageformat = $format;
+ $message->fullmessagehtml = $fullmessagehtml;
+ $message->smallmessage = get_string('usercommentedonaplansmall', 'tool_lp', array(
+ 'fullname' => $fullname,
+ 'plan' => $planname,
+ ));
+ $message->contexturl = $url->out(false);
+ $message->contexturlname = $urlname;
+
+ // Message each recipient.
+ foreach ($recipients as $recipient) {
+ $msgcopy = clone($message);
+ $msgcopy->userto = $recipient;
+ message_send($msgcopy);
+ }
+ }
+}
+
+/**
+ * Return the permissions of for the comments.
+ *
+ * @param stdClass $params The parameters.
+ * @return array
+ */
+function core_competency_comment_permissions($params) {
+ if (!api::is_enabled()) {
+ return array('post' => false, 'view' => false);
+ }
+
+ if ($params->commentarea == 'user_competency') {
+ $uc = new user_competency($params->itemid);
+ if ($uc->can_read()) {
+ return array('post' => $uc->can_comment(), 'view' => $uc->can_read_comments());
+ }
+ } else if ($params->commentarea == 'plan') {
+ $plan = new plan($params->itemid);
+ if ($plan->can_read()) {
+ return array('post' => $plan->can_comment(), 'view' => $plan->can_read_comments());
+ }
+ }
+
+ return array('post' => false, 'view' => false);
+}
+
+/**
+ * Validates comments.
+ *
+ * @param stdClass $params The parameters.
+ * @return bool
+ */
+function core_competency_comment_validate($params) {
+ if (!api::is_enabled()) {
+ return false;
+ }
+
+ if ($params->commentarea == 'user_competency') {
+ if (!user_competency::record_exists($params->itemid)) {
+ return false;
+ }
+ return true;
+ } else if ($params->commentarea == 'plan') {
+ if (!plan::record_exists($params->itemid)) {
+ return false;
+ }
+ return true;
+ }
+ return false;
+}
/**
* File serving.
$cmt->context = $context;
$cmt->area = 'plan';
$cmt->itemid = $plan->get_id();
- $cmt->component = 'tool_lp';
+ $cmt->component = 'competency';
$cmt->showcount = 1;
$manager = new comment($cmt);
$manager->set_post_permission(true);
$event = array_pop($events);
// Checking that the event contains the expected values.
- $this->assertInstanceOf('\tool_lp\event\comment_created', $event);
+ $this->assertInstanceOf('\core\event\competency_comment_created', $event);
$this->assertEquals($context, $event->get_context());
$this->assertEquals($plan->get_id(), $event->other['itemid']);
$this->assertEventContextNotUsed($event);
$cmt->context = $context;
$cmt->area = 'plan';
$cmt->itemid = $plan->get_id();
- $cmt->component = 'tool_lp';
+ $cmt->component = 'competency';
$manager = new comment($cmt);
$newcomment = $manager->add("Comment to be deleted");
$event = reset($events);
// Checking that the event contains the expected values.
- $this->assertInstanceOf('\tool_lp\event\comment_deleted', $event);
+ $this->assertInstanceOf('\core\event\competency_comment_deleted', $event);
$this->assertEquals($context, $event->get_context());
$this->assertEquals($plan->get_id(), $event->other['itemid']);
$this->assertEventContextNotUsed($event);
$cmt->context = $context;
$cmt->area = 'user_competency';
$cmt->itemid = $uc->get_id();
- $cmt->component = 'tool_lp';
+ $cmt->component = 'competency';
$cmt->showcount = 1;
$manager = new comment($cmt);
$event = reset($events);
// Checking that the event contains the expected values.
- $this->assertInstanceOf('\tool_lp\event\comment_created', $event);
+ $this->assertInstanceOf('\core\event\competency_comment_created', $event);
$this->assertEquals($context, $event->get_context());
$this->assertEquals($uc->get_id(), $event->other['itemid']);
$this->assertEventContextNotUsed($event);
$cmt->context = $context;
$cmt->area = 'user_competency';
$cmt->itemid = $uc->get_id();
- $cmt->component = 'tool_lp';
+ $cmt->component = 'competency';
$manager = new comment($cmt);
$newcomment = $manager->add("Comment to be deleted");
$event = reset($events);
// Checking that the event contains the expected values.
- $this->assertInstanceOf('\tool_lp\event\comment_deleted', $event);
+ $this->assertInstanceOf('\core\event\competency_comment_deleted', $event);
$this->assertEquals($context, $event->get_context());
$this->assertEquals($uc->get_id(), $event->other['itemid']);
$this->assertEventContextNotUsed($event);
/**
* Lib tests.
*
- * @package tool_lp
+ * @package core_competency
* @copyright 2015 Frédéric Massart - FMCorz.net
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
/**
* Lib testcase.
*
- * @package tool_lp
+ * @package core_competency
* @copyright 2015 Frédéric Massart - FMCorz.net
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
* Comment created event for tool_lp areas.
*
*
- * @package tool_lp
+ * @package core_competency
* @copyright 2016 Issam Taboubi <issam.taboubi@umontreal.ca>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
-namespace tool_lp\event;
+namespace core\event;
defined('MOODLE_INTERNAL') || die();
/**
- * Comment created event class for tool_lp areas.
+ * Comment created event class for core_competency areas.
*
*
- * @package tool_lp
+ * @package core_competency
* @since Moodle 3.1
* @copyright 2016 Issam Taboubi <issam.taboubi@umontreal.ca>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
-class comment_created extends \core\event\comment_created {
+class competency_comment_created extends \core\event\comment_created {
/**
* Returns description of what happened.
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
- * Comment deleted event for tool_lp areas.
+ * Comment deleted event for core_competency areas.
*
*
- * @package tool_lp
+ * @package core_competency
* @copyright 2016 Issam Taboubi <issam.taboubi@umontreal.ca>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
-namespace tool_lp\event;
+namespace core\event;
defined('MOODLE_INTERNAL') || die();
/**
- * Comment deleted event class for tool_lp areas.
+ * Comment deleted event class for core_competency areas.
*
*
- * @package tool_lp
+ * @package core_competency
* @since Moodle 3.1
* @copyright 2016 Issam Taboubi <issam.taboubi@umontreal.ca>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
-class comment_deleted extends \core\event\comment_deleted {
+class competency_comment_deleted extends \core\event\comment_deleted {
/**
* Returns description of what happened.