Exemplo n.º 1
0
function add_comment()
{
    safe('comment');
    global $global, $smarty, $lang;
    $channel = post('channel');
    $com_page_id = post('page_id');
    $com_username = post('username');
    $com_email = post('email');
    $com_rank = post('rank');
    $com_text = post('text');
    if ($channel == '' || $com_page_id == '' || $com_username == '' || $com_email == '' || $com_rank == '' || $com_text == '') {
        $info_text = $lang['submit_error_info'];
    } else {
        $com_channel_id = get_id('channel', 'cha_code', $channel);
        $com_add_time = time();
        $obj = new comment();
        $obj->set_value('com_channel_id', $com_channel_id);
        $obj->set_value('com_page_id', $com_page_id);
        $obj->set_value('com_username', $com_username);
        $obj->set_value('com_email', $com_email);
        $obj->set_value('com_rank', $com_rank);
        $obj->set_value('com_text', $com_text);
        $obj->set_value('com_add_time', $com_add_time);
        $obj->set_value('com_show', 0);
        $obj->set_value('com_lang', S_LANG);
        $obj->add();
        if (intval(get_varia('sentmail'))) {
            $email_title = '您的网站有了新的评论';
            $str = get_data($channel, $com_page_id, substr($channel, 0, 3) . '_title');
            $email_text = '评论:《' . $str . '》<br />' . $com_text;
            call_send_email($email_title, $email_text, $com_username, $com_email);
        }
        $info_text = $lang['submit_comment'];
    }
    $smarty->assign('info_text', $info_text);
    $smarty->assign('link_text', $lang['go_back']);
    $smarty->assign('link_href', url(array('channel' => $channel, 'id' => $com_page_id)));
}
Exemplo n.º 2
0
/**
 * Add comments ro database
 *
 * @param object $context. Current context
 * @param int $pageid. Current pageid
 * @param string $content. Content of the comment
 * @param string editor. Version of editor we are using.
 **/
function wiki_add_comment($context, $pageid, $content, $editor)
{
    global $CFG;
    require_once $CFG->dirroot . '/comment/lib.php';
    list($context, $course, $cm) = get_context_info_array($context->id);
    $cmt = new stdclass();
    $cmt->context = $context;
    $cmt->itemid = $pageid;
    $cmt->area = 'wiki_page';
    $cmt->course = $course;
    $cmt->component = 'mod_wiki';
    $manager = new comment($cmt);
    if ($editor == 'creole') {
        $manager->add($content, FORMAT_CREOLE);
    } else {
        if ($editor == 'html') {
            $manager->add($content, FORMAT_HTML);
        } else {
            if ($editor == 'nwiki') {
                $manager->add($content, FORMAT_NWIKI);
            }
        }
    }
}
Exemplo n.º 3
0
$args = new stdClass();
$args->context = $context;
$args->course = $course;
$args->cm = $cm;
$args->area = $area;
$args->itemid = $itemid;
$args->client_id = $client_id;
$args->component = $component;
$manager = new comment($args);
echo $OUTPUT->header();
// send headers
// process ajax request
switch ($action) {
    case 'add':
        if ($manager->can_post()) {
            $result = $manager->add($content);
            if (!empty($result) && is_object($result)) {
                $result->count = $manager->count();
                $result->client_id = $client_id;
                echo json_encode($result);
                die;
            }
        }
        break;
    case 'delete':
        $comment_record = $DB->get_record('comments', array('id' => $commentid));
        if ($manager->can_delete($commentid) || $comment_record->userid == $USER->id) {
            if ($manager->delete($commentid)) {
                $result = array('client_id' => $client_id, 'commentid' => $commentid);
                echo json_encode($result);
                die;
Exemplo n.º 4
0
 /**
  * Upgrade the submission from the old assignment to the new one
  *
  * @param context $oldcontext The context for the old assignment
  * @param stdClass $oldassignment The data record for the old assignment
  * @param stdClass $oldsubmission The data record for the old submission
  * @param stdClass $submission The new submission record
  * @param string $log Record upgrade messages in the log
  * @return bool true or false - false will trigger a rollback
  */
 public function upgrade(context $oldcontext, stdClass $oldassignment, stdClass $oldsubmission, stdClass $submission, &$log)
 {
     if ($oldsubmission->data1 != '') {
         // need to used this innit() otherwise it shows up undefined !
         // require js for commenting
         comment::init();
         $options = new stdClass();
         $options->area = 'submission_comments_upgrade';
         $options->course = $this->assignment->get_course();
         $options->context = $this->assignment->get_context();
         $options->itemid = $submission->id;
         $options->component = 'assignsubmission_comments';
         $options->showcount = true;
         $options->displaycancel = true;
         $comment = new comment($options);
         $comment->add($oldsubmission->data1);
         $comment->set_view_permission(true);
         return $comment->output(true);
     }
     return true;
 }
Exemplo n.º 5
0
 /**
  * Test comment_deleted event.
  */
 public function test_data_comment_deleted_event()
 {
     global $CFG, $DB;
     require_once $CFG->dirroot . '/comment/lib.php';
     $this->resetAfterTest();
     // Create a record for deleting.
     $this->setAdminUser();
     $course = $this->getDataGenerator()->create_course();
     $record = new stdClass();
     $record->course = $course->id;
     $record->name = "Mod data delete test";
     $record->intro = "Some intro of some sort";
     $record->comments = 1;
     $module = $this->getDataGenerator()->create_module('data', $record);
     $field = data_get_field_new('text', $module);
     $fielddetail = new stdClass();
     $fielddetail->name = 'Name';
     $fielddetail->description = 'Some name';
     $field->define_field($fielddetail);
     $field->insert_field();
     $recordid = data_add_record($module);
     $datacontent = array();
     $datacontent['fieldid'] = $field->field->id;
     $datacontent['recordid'] = $recordid;
     $datacontent['content'] = 'Asterix';
     $contentid = $DB->insert_record('data_content', $datacontent);
     $cm = get_coursemodule_from_instance('data', $module->id, $course->id);
     $context = context_module::instance($module->cmid);
     $cmt = new stdClass();
     $cmt->context = $context;
     $cmt->course = $course;
     $cmt->cm = $cm;
     $cmt->area = 'database_entry';
     $cmt->itemid = $recordid;
     $cmt->showcount = true;
     $cmt->component = 'mod_data';
     $comment = new comment($cmt);
     $newcomment = $comment->add('New comment 1');
     // Triggering and capturing the event.
     $sink = $this->redirectEvents();
     $comment->delete($newcomment->id);
     $events = $sink->get_events();
     $this->assertCount(1, $events);
     $event = reset($events);
     // Checking that the event contains the expected values.
     $this->assertInstanceOf('\\mod_data\\event\\comment_deleted', $event);
     $this->assertEquals($context, $event->get_context());
     $url = new moodle_url('/mod/data/view.php', array('id' => $module->cmid));
     $this->assertEquals($url, $event->get_url());
     $this->assertEventContextNotUsed($event);
 }
Exemplo n.º 6
0
 /**
  * Test comment_deleted event.
  */
 public function test_comment_deleted()
 {
     global $CFG;
     require_once $CFG->dirroot . '/comment/lib.php';
     // Create a record for deleting comment.
     $this->setAdminUser();
     $course = $this->getDataGenerator()->create_course();
     $glossary = $this->getDataGenerator()->create_module('glossary', array('course' => $course));
     $glossarygenerator = $this->getDataGenerator()->get_plugin_generator('mod_glossary');
     $entry = $glossarygenerator->create_content($glossary);
     $context = context_module::instance($glossary->cmid);
     $cm = get_coursemodule_from_instance('glossary', $glossary->id, $course->id);
     $cmt = new stdClass();
     $cmt->component = 'mod_glossary';
     $cmt->context = $context;
     $cmt->course = $course;
     $cmt->cm = $cm;
     $cmt->area = 'glossary_entry';
     $cmt->itemid = $entry->id;
     $cmt->showcount = true;
     $comment = new comment($cmt);
     $newcomment = $comment->add('New comment 1');
     // Triggering and capturing the event.
     $sink = $this->redirectEvents();
     $comment->delete($newcomment->id);
     $events = $sink->get_events();
     $this->assertCount(1, $events);
     $event = reset($events);
     // Checking that the event contains the expected values.
     $this->assertInstanceOf('\\mod_glossary\\event\\comment_deleted', $event);
     $this->assertEquals($context, $event->get_context());
     $url = new moodle_url('/mod/glossary/view.php', array('id' => $glossary->cmid));
     $this->assertEquals($url, $event->get_url());
     $this->assertEventContextNotUsed($event);
 }
Exemplo n.º 7
0
 /**
  * Upgrade the submission from the old setaskment to the new one
  *
  * @param context $oldcontext The context for the old setaskment
  * @param stdClass $oldsetaskment The data record for the old setaskment
  * @param stdClass $oldsubmission The data record for the old submission
  * @param stdClass $submission The new submission record
  * @param string $log Record upgrade messages in the log
  * @return bool true or false - false will trigger a rollback
  */
 public function upgrade(context $oldcontext, stdClass $oldsetaskment, stdClass $oldsubmission, stdClass $submission, &$log)
 {
     if ($oldsubmission->data1 != '') {
         // Need to used this init() otherwise it does not have the javascript includes.
         comment::init();
         $options = new stdClass();
         $options->area = 'submission_comments_upgrade';
         $options->course = $this->setaskment->get_course();
         $options->context = $this->setaskment->get_context();
         $options->itemid = $submission->id;
         $options->component = 'setasksubmission_comments';
         $options->showcount = true;
         $options->displaycancel = true;
         $comment = new comment($options);
         $comment->add($oldsubmission->data1);
         $comment->set_view_permission(true);
         return $comment->output(true);
     }
     return true;
 }
Exemplo n.º 8
0
    /**
     * Test comment_deleted event.
     */
    public function test_comment_deleted() {
        global $CFG;

        require_once($CFG->dirroot . '/comment/lib.php');

        // Comment on course page.
        $context = context_course::instance($this->course->id);
        $args = new stdClass;
        $args->context   = $context;
        $args->course    = $this->course;
        $args->area      = 'page_comments';
        $args->itemid    = 0;
        $args->component = 'block_comments';
        $args->linktext  = get_string('showcomments');
        $args->notoggle  = true;
        $args->autostart = true;
        $args->displaycancel = false;
        $comment = new comment($args);
        $newcomment = $comment->add('New comment');

        // Triggering and capturing the event.
        $sink = $this->redirectEvents();
        $comment->delete($newcomment->id);
        $events = $sink->get_events();
        $this->assertCount(1, $events);
        $event = reset($events);

        // Checking that the event contains the expected values.
        $this->assertInstanceOf('\block_comments\event\comment_deleted', $event);
        $this->assertEquals($context, $event->get_context());
        $url = new moodle_url('/course/view.php', array('id' => $this->course->id));
        $this->assertEquals($url, $event->get_url());

        // Comments when block is on module (wiki) page.
        $context = context_module::instance($this->wiki->id);
        $args = new stdClass;
        $args->context   = $context;
        $args->course    = $this->course;
        $args->area      = 'page_comments';
        $args->itemid    = 0;
        $args->component = 'block_comments';
        $args->linktext  = get_string('showcomments');
        $args->notoggle  = true;
        $args->autostart = true;
        $args->displaycancel = false;
        $comment = new comment($args);
        $newcomment = $comment->add('New comment 1');

        // Triggering and capturing the event.
        $sink = $this->redirectEvents();
        $comment->delete($newcomment->id);
        $events = $sink->get_events();
        $this->assertCount(1, $events);
        $event = reset($events);

        // Checking that the event contains the expected values.
        $this->assertInstanceOf('\block_comments\event\comment_deleted', $event);
        $this->assertEquals($context, $event->get_context());
        $url = new moodle_url('/mod/wiki/view.php', array('id' => $this->wiki->id));
        $this->assertEquals($url, $event->get_url());
        $this->assertEventContextNotUsed($event);
    }
Exemplo n.º 9
0
 /**
  * Test comment_deleted event.
  */
 public function test_comment_deleted()
 {
     global $CFG;
     require_once $CFG->dirroot . '/comment/lib.php';
     $this->setUser($this->editingteachers[0]);
     $assign = $this->create_instance();
     $submission = $assign->get_user_submission($this->students[0]->id, true);
     $context = $assign->get_context();
     $options = new stdClass();
     $options->area = 'submission_comments';
     $options->course = $assign->get_course();
     $options->context = $context;
     $options->itemid = $submission->id;
     $options->component = 'assignsubmission_comments';
     $options->showcount = true;
     $options->displaycancel = true;
     $comment = new comment($options);
     $newcomment = $comment->add('New comment 1');
     // Triggering and capturing the event.
     $sink = $this->redirectEvents();
     $comment->delete($newcomment->id);
     $events = $sink->get_events();
     $this->assertCount(1, $events);
     $event = reset($events);
     // Checking that the event contains the expected values.
     $this->assertInstanceOf('\\assignsubmission_comments\\event\\comment_deleted', $event);
     $this->assertEquals($context, $event->get_context());
     $url = new moodle_url('/mod/assign/view.php', array('id' => $assign->get_course_module()->id));
     $this->assertEquals($url, $event->get_url());
     $this->assertEventContextNotUsed($event);
 }
Exemplo n.º 10
0
if (empty($CFG->usecomments)) {
    throw new comment_exception('commentsnotenabled', 'moodle');
}
$contextid = optional_param('contextid', SYSCONTEXTID, PARAM_INT);
list($context, $course, $cm) = get_context_info_array($contextid);
require_login($course, true, $cm);
require_sesskey();
$action = optional_param('action', '', PARAM_ALPHA);
$area = optional_param('area', '', PARAM_AREA);
$content = optional_param('content', '', PARAM_RAW);
$itemid = optional_param('itemid', '', PARAM_INT);
$returnurl = optional_param('returnurl', '/', PARAM_LOCALURL);
$component = optional_param('component', '', PARAM_COMPONENT);
// Currently this script can only add comments
if ($action !== 'add') {
    redirect($returnurl);
}
$cmt = new stdClass();
$cmt->contextid = $contextid;
$cmt->courseid = $course->id;
$cmt->cm = $cm;
$cmt->area = $area;
$cmt->itemid = $itemid;
$cmt->component = $component;
$comment = new comment($cmt);
if ($comment->can_post()) {
    $cmt = $comment->add($content);
    if (!empty($cmt) && is_object($cmt)) {
        redirect($returnurl);
    }
}
Exemplo n.º 11
0
 public function test_course_check_module_updates_since()
 {
     global $CFG, $DB, $USER;
     require_once $CFG->dirroot . '/mod/glossary/lib.php';
     require_once $CFG->dirroot . '/rating/lib.php';
     require_once $CFG->dirroot . '/comment/lib.php';
     $this->resetAfterTest(true);
     $CFG->enablecompletion = true;
     $course = $this->getDataGenerator()->create_course(array('enablecompletion' => 1));
     $glossary = $this->getDataGenerator()->create_module('glossary', array('course' => $course->id, 'completion' => COMPLETION_TRACKING_AUTOMATIC, 'completionview' => 1, 'allowcomments' => 1, 'assessed' => RATING_AGGREGATE_AVERAGE, 'scale' => 100));
     $glossarygenerator = $this->getDataGenerator()->get_plugin_generator('mod_glossary');
     $context = context_module::instance($glossary->cmid);
     $modinfo = get_fast_modinfo($course);
     $cm = $modinfo->get_cm($glossary->cmid);
     $user = $this->getDataGenerator()->create_user();
     $studentrole = $DB->get_record('role', array('shortname' => 'student'));
     $this->getDataGenerator()->enrol_user($user->id, $course->id, $studentrole->id);
     $from = time();
     $teacher = $this->getDataGenerator()->create_user();
     $teacherrole = $DB->get_record('role', array('shortname' => 'teacher'));
     $this->getDataGenerator()->enrol_user($teacher->id, $course->id, $teacherrole->id);
     assign_capability('mod/glossary:viewanyrating', CAP_ALLOW, $studentrole->id, $context->id, true);
     // Check nothing changed right now.
     $updates = course_check_module_updates_since($cm, $from);
     $this->assertFalse($updates->configuration->updated);
     $this->assertFalse($updates->completion->updated);
     $this->assertFalse($updates->gradeitems->updated);
     $this->assertFalse($updates->comments->updated);
     $this->assertFalse($updates->ratings->updated);
     $this->assertFalse($updates->introfiles->updated);
     $this->assertFalse($updates->outcomes->updated);
     $this->waitForSecond();
     // Do some changes.
     $this->setUser($user);
     $entry = $glossarygenerator->create_content($glossary);
     $this->setUser($teacher);
     // Name.
     set_coursemodule_name($glossary->cmid, 'New name');
     // Add some ratings.
     $rm = new rating_manager();
     $result = $rm->add_rating($cm, $context, 'mod_glossary', 'entry', $entry->id, 100, 50, $user->id, RATING_AGGREGATE_AVERAGE);
     // Change grades.
     $glossary->cmidnumber = $glossary->cmid;
     glossary_update_grades($glossary, $user->id);
     $this->setUser($user);
     // Completion status.
     glossary_view($glossary, $course, $cm, $context, 'letter');
     // Add one comment.
     $args = new stdClass();
     $args->context = $context;
     $args->course = $course;
     $args->cm = $cm;
     $args->area = 'glossary_entry';
     $args->itemid = $entry->id;
     $args->client_id = 1;
     $args->component = 'mod_glossary';
     $manager = new comment($args);
     $manager->add('blah blah blah');
     // Check upgrade status.
     $updates = course_check_module_updates_since($cm, $from);
     $this->assertTrue($updates->configuration->updated);
     $this->assertTrue($updates->completion->updated);
     $this->assertTrue($updates->gradeitems->updated);
     $this->assertTrue($updates->comments->updated);
     $this->assertTrue($updates->ratings->updated);
     $this->assertFalse($updates->introfiles->updated);
     $this->assertFalse($updates->outcomes->updated);
 }
Exemplo n.º 12
0
 /**
  * Test comment_deleted event.
  */
 public function test_blog_comment_deleted_event()
 {
     global $USER, $CFG;
     $this->setAdminUser();
     require_once $CFG->dirroot . '/comment/lib.php';
     $context = context_user::instance($USER->id);
     $cmt = new stdClass();
     $cmt->context = $context;
     $cmt->courseid = $this->courseid;
     $cmt->area = 'format_blog';
     $cmt->itemid = $this->postid;
     $cmt->showcount = 1;
     $cmt->component = 'blog';
     $manager = new comment($cmt);
     $newcomment = $manager->add("New comment");
     // Triggering and capturing the event.
     $sink = $this->redirectEvents();
     $manager->delete($newcomment->id);
     $events = $sink->get_events();
     $this->assertCount(1, $events);
     $event = reset($events);
     // Checking that the event contains the expected values.
     $this->assertInstanceOf('\\core\\event\\blog_comment_deleted', $event);
     $this->assertEquals($context, $event->get_context());
     $this->assertEquals($this->postid, $event->other['itemid']);
     $url = new moodle_url('/blog/index.php', array('entryid' => $this->postid));
     $this->assertEquals($url, $event->get_url());
     $this->assertEventContextNotUsed($event);
 }
Exemplo n.º 13
0
    require 'components/query_string_standard.php';
    require 'subclasses/comment.php';
    $dbh_comment = new comment();
    $object_name = 'dbh_comment';
    require 'components/create_form_data.php';
    extract($arr_form_data);
    if ($_POST['btn_cancel']) {
        log_action('Pressed cancel button');
        redirect("listview_comment.php?{$query_string}");
    }
    if ($_POST['btn_submit']) {
        log_action('Pressed submit button');
        $message .= $dbh_comment->sanitize($arr_form_data)->lst_error;
        extract($arr_form_data);
        if ($dbh_comment->check_uniqueness($arr_form_data)->is_unique) {
            //Good, no duplicate in database
        } else {
            $message = "Record already exists with the same primary identifiers!";
        }
        if ($message == "") {
            $dbh_comment->add($arr_form_data);
            redirect("listview_comment.php?{$query_string}");
        }
    }
}
require 'subclasses/comment_html.php';
$html = new comment_html();
$html->draw_header('Add Comment', $message, $message_type);
$html->draw_listview_referrer_info($filter_field_used, $filter_used, $page_from, $filter_sort_asc, $filter_sort_desc);
$html->draw_controls('add');
$html->draw_footer();
Exemplo n.º 14
0
 /**
  * Test plan comment deleted event.
  */
 public function test_user_competency_comment_deleted()
 {
     $this->resetAfterTest(true);
     $this->setAdminUser();
     $dg = $this->getDataGenerator();
     $lpg = $this->getDataGenerator()->get_plugin_generator('core_competency');
     $user = $dg->create_user();
     $fr = $lpg->create_framework();
     $c = $lpg->create_competency(array('competencyframeworkid' => $fr->get_id()));
     $uc = $lpg->create_user_competency(array('userid' => $user->id, 'competencyid' => $c->get_id()));
     $context = context_user::instance($user->id);
     $cmt = new stdClass();
     $cmt->context = $context;
     $cmt->area = 'user_competency';
     $cmt->itemid = $uc->get_id();
     $cmt->component = 'competency';
     $manager = new comment($cmt);
     $newcomment = $manager->add("Comment to be deleted");
     // Triggering and capturing the event.
     $sink = $this->redirectEvents();
     $manager->delete($newcomment->id);
     $events = $sink->get_events();
     $this->assertCount(1, $events);
     $event = reset($events);
     // Checking that the event contains the expected values.
     $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);
     $this->assertDebuggingNotCalled();
 }
Exemplo n.º 15
0
         header("Location:index.php?page=post&s=view&id={$id}");
         exit;
     }
     if (!$anon_comment && $user_nolog == "Anonymous") {
         header('Location: index.php?page=account&s=home');
         exit;
     }
     if (isset($_POST['post_anonymous']) || $_POST['post_anonymous'] == true) {
         $user = "******";
         $query = "SELECT id FROM {$user_table} WHERE user='******' LIMIT 1";
         $result = $db->query($query);
         $row = $result->fetch_assoc();
         $user_id = $row['id'];
         $anon_id = $row['id'];
     }
     $comment->add($_POST['comment'], $user, $id, $ip, $user_id);
     $cache = new cache();
     $cache->destroy_page_cache("cache/" . $id);
     $cache->create_page_cache("cache/" . $id);
     header("Location:index.php?page=post&s=view&id={$id}");
 } else {
     if (isset($_GET['s']) && isset($_GET['cid']) && is_numeric($_GET['cid']) && isset($_GET['vote'])) {
         $vote = $_GET['vote'];
         $id = $_GET['post_id'];
         $cid = $_GET['cid'];
         if ($user == "Anonymous" && !$anon_vote) {
             header('Location: index.php?page=account&s=home');
             exit;
         }
         $cache = new cache();
         @$cache->destroy_page_cache("cache/" . $id);