/**
  * Test the search function with a list of CMs. This was broken at one point.
  */
 public function test_search_with_cm_list()
 {
     global $DB;
     $this->resetAfterTest();
     // Turn on the system.
     set_config(year_tables::CONFIG_ENABLED, year_tables::ENABLED_ON, 'local_ousearch');
     // Create a test courses.
     $course1 = $this->getDataGenerator()->create_course(array('startdate' => strtotime('2013-01-04 10:00')));
     // Create imaginary CMs.
     $cm1 = (object) array('id' => 19, 'course' => $course1->id);
     $cm2 = (object) array('id' => 77, 'course' => $course1->id);
     $cm3 = (object) array('id' => 138, 'course' => $course1->id);
     // Add four documents, two to one CM and one to two others..
     self::add_test_document(1, $course1, 'Doc One', $cm1->id);
     self::add_test_document(2, $course1, 'Doc Two', $cm2->id);
     self::add_test_document(3, $course1, 'Doc Three', $cm2->id);
     self::add_test_document(4, $course1, 'Doc Four', $cm3->id);
     // Check search on whole course.
     $this->check_search($course1, 'Doc', array(1, 2, 3, 4));
     // Check search on cm1 and cm2.
     $search = new local_ousearch_search('Doc');
     $search->set_plugin('test_yeartablestest');
     $search->set_coursemodule_array(array($cm1, $cm2));
     $this->check_search_inner($search, array(1, 2, 3));
     // Check on cm1 and cm3.
     $search = new local_ousearch_search('Doc');
     $search->set_plugin('test_yeartablestest');
     $search->set_coursemodule_array(array($cm1, $cm3));
     $this->check_search_inner($search, array(1, 4));
 }
// Display header
$out = mod_forumng_utils::get_renderer();
print $out->header();
$searchtitle = forumng_get_search_results_title($query, $data ? $data->author : '', $data ? $data->datefrom : 0, $data ? $data->dateto : 0);
if (!$allforums) {
    // Display group selector if required
    groups_print_activity_menu($cm, $url);
    $groupid = mod_forumng::get_activity_group($cm, true);
    $forum->require_view($groupid, 0, true);
    print '<br/><br/>';
}
$editform->display();
if ($data) {
    // Searching for free text with or without filtering author and date range.
    if ($query) {
        $result = new local_ousearch_search($query);
        if ($allforums) {
            // Search all forums.
            // NOTE: I think this code branch is no longer used as we removed
            // the 'all forums' facility to the resources_search block, but
            // perhaps it may be used in standard Moodle installs somehow.
            $result->set_plugin('mod/forumng');
            $result->set_course_id($courseid);
            $result->set_visible_modules_in_course($COURSE);
            // Restrict them to the groups they belong to.
            if (!isset($USER->groupmember[$courseid])) {
                $result->set_group_ids(array());
            } else {
                $result->set_group_ids($USER->groupmember[$courseid]);
            }
            // Add exceptions where they can see other groups.
 /**
  * Do a coursewide search as the current user on the given course, through
  * all forums.
  *
  * @param stdClass $course Moodle course object
  * @param string $search Search query
  * @return array Array of titles of results (empty array if none)
  */
 protected function coursewide_search($course, $search)
 {
     global $USER;
     // Based on the code in blocks/resources_search/search.class.php.
     $query = new local_ousearch_search($search);
     $query->set_course_id($course->id);
     $query->set_plugin('mod_forumng');
     $query->set_visible_modules_in_course($course, 'forumng');
     $groups = groups_get_all_groups($course->id, $USER->id);
     $groupids = array();
     foreach ($groups as $group) {
         $groupids[] = $group->id;
     }
     $query->set_group_ids($groupids);
     $query->set_group_exceptions($query->get_group_exceptions($course->id));
     $query->set_user_id($USER->id);
     $results = $query->query(0, 10);
     $out = array();
     if ($results->success) {
         foreach ($results->results as $result) {
             $out[] = strip_tags($result->title);
         }
     }
     sort($out);
     return $out;
 }
$buttontext = $forum->display_search_form($querytext);
// Display header
$PAGE->set_url(new moodle_url('/mod/forumng/search.php', $pageparams));
$PAGE->set_context($forum->get_context());
$PAGE->set_heading($course->fullname);
$PAGE->set_title($course->shortname . ': ' . format_string($forum->get_name()));
$PAGE->set_button($buttontext);
$PAGE->set_cm($cm, $course);
$PAGE->set_pagelayout('base');
$PAGE->navbar->add(get_string('searchfor', 'local_ousearch', $querytext));
$out = mod_forumng_utils::get_renderer();
print $out->header();
// Display group selector if required
groups_print_activity_menu($cm, $CFG->wwwroot . '/mod/forumng/search.php?' . $forum->get_link_params(mod_forumng::PARAM_HTML) . '&amp;query=' . rawurlencode($querytext));
$searchurl = 'search.php?' . $forum->get_link_params(mod_forumng::PARAM_PLAIN);
$query = new local_ousearch_search($querytext);
$query->set_coursemodule($forum->get_course_module(true));
if ($groupid && $groupid != mod_forumng::NO_GROUPS) {
    $query->set_group_id($groupid);
}
print $query->display_results($searchurl);
//Print advanced search link
$options = $forum->get_link_params(mod_forumng::PARAM_HTML);
$options .= '&amp;action=0';
$options .= $querytext ? '&amp;query=' . rawurlencode($querytext) : '';
$url = $CFG->wwwroot . '/mod/forumng/advancedsearch.php?' . $options;
$strlink = get_string('advancedsearch', 'forumng');
print "<div class='advanced-search-link'><a href=\"{$url}\">{$strlink}</a>";
//Add link to search the rest of this website if service available
if (!empty($CFG->block_resources_search_baseurl)) {
    $params = array('course' => $course->id, 'query' => $querytext);
        $PAGE->navbar->add(format_string($oublog->name), new moodle_url('/mod/oublog/allposts.php'));
    }
} else {
    $name = $oublog->name;
    $buttontext = oublog_get_search_form('id', $cm->id, $strblogsearch, $querytexthtml);
}
$PAGE->navbar->add(get_string('searchfor', 'local_ousearch', $querytext));
$PAGE->set_button($buttontext);
echo $OUTPUT->header();
// Print Groups
groups_print_activity_menu($cm, $returnurl);
global $modulecontext, $personalblog;
$modulecontext = $context;
$personalblog = $oublog->global ? true : false;
// FINALLY do the actual query
$query = new local_ousearch_search($querytext);
$query->set_coursemodule($cm);
if ($oublog->global && isset($oubloguser)) {
    $query->set_user_id($oubloguser->id);
} else {
    if ($oublog->individual == OUBLOG_SEPARATE_INDIVIDUAL_BLOGS && !has_capability('mod/oublog:viewindividual', $context)) {
        $query->set_user_id($USER->id);
    }
}
if ($groupmode && $currentgroup) {
    $query->set_group_id($currentgroup);
}
$query->set_filter('visibility_filter');
$searchurl = 'search.php?' . (empty($id) ? 'user='******'id=' . $cm->id);
$foundsomething = $query->display_results($searchurl);
echo $foundsomething;
 /**
  * Reused code to run a query on the zombie documents.
  *
  * @param string $query Query text
  * @param int $dbstart DB start
  * @param int $desired Desired number
  * @return stdClass Search result object
  */
 private function do_zombie_query($query, $dbstart = 0, $desired = 10)
 {
     $search = new local_ousearch_search($query);
     $search->set_plugin('test_zombie');
     return $search->query($dbstart, $desired);
 }
 /**
  * Tests deleting discussion and permanent delete
  * Checks completion
  */
 public function test_delete()
 {
     global $DB, $USER, $SITE, $CFG;
     require_once $CFG->dirroot . '/mod/forumng/mod_forumng_cron.php';
     $CFG->enablecompletion = true;
     $this->resetAfterTest(true);
     $this->setAdminUser();
     $course = $this->get_new_course();
     $course->enablecompletion = 1;
     update_course($course);
     $forum = $this->get_new_forumng($course->id, array('removeafter' => 1, 'removeto' => 0, 'completion' => 2, 'completiondiscussions' => 1));
     $completion = new completion_info($forum->get_course());
     $discussion = $this->get_new_discussion($forum, array('userid' => $USER->id));
     $root1 = $discussion->get_root_post();
     // Get completion status.
     $complete = $completion->get_data($forum->get_course_module());
     $this->assertEquals(COMPLETION_COMPLETE, $complete->completionstate);
     $discussion2 = $this->get_new_discussion($forum, array('userid' => $USER->id));
     // Make post old.
     $root2 = $discussion2->get_root_post();
     $dataobject = new stdClass();
     $dataobject->id = $root2->get_id();
     $dataobject->modified = $root2->get_modified() - 100;
     $DB->update_record('forumng_posts', $dataobject);
     // Check perm delete by manual call.
     $discussion->permanently_delete(false);
     $this->assertFalse($DB->get_record('forumng_discussions', array('id' => $discussion->get_id())));
     $this->assertFalse($DB->get_record('forumng_posts', array('id' => $root1->get_id())));
     // Check cron cleanup (Does permanently_delete() on discussion2).
     mod_forumng_cron::archive_old_discussions();
     $this->assertFalse($DB->get_record('forumng_discussions', array('id' => $discussion2->get_id())));
     $this->assertFalse($DB->get_record('forumng_posts', array('id' => $root2->get_id())));
     $complete = $completion->get_data($forum->get_course_module());
     $this->assertEquals(COMPLETION_INCOMPLETE, $complete->completionstate);
     if (mod_forumng::search_installed()) {
         $searchdoc = $root2->search_get_document();
         $this->assertFalse($searchdoc->find());
         $query = new local_ousearch_search('Message for discussion');
         $query->set_coursemodule($forum->get_course_module(true));
         $results = $query->query();
         $this->assertEmpty($results->results);
     }
 }
 /**
  * Tests discussion copying to another group and another course forum
  * (Does not check attachments or ratings copying)
  */
 public function test_copy()
 {
     global $USER;
     $this->resetAfterTest();
     $this->setAdminUser();
     $course1 = $this->get_new_course();
     $course2 = $this->get_new_course();
     $group1 = $this->get_new_group($course1->id);
     $group2 = $this->get_new_group($course1->id);
     $orig = $this->get_new_forumng($course1->id, array('groupmode' => VISIBLEGROUPS));
     $other = $this->get_new_forumng($course2->id);
     $dis = $this->get_new_discussion($orig, array('groupid' => $group1->id, 'userid' => $USER->id));
     $lastpost = mod_forumng_post::get_from_id($dis->get_last_post_id(), 0);
     $dis->create_reply($lastpost, 'reply', 'reply', FORMAT_HTML);
     $dis->copy($orig, $group2->id);
     $dis->copy($other, mod_forumng::CLONE_DIRECT);
     $forums1 = mod_forumng::get_course_forums($course1);
     $forums2 = mod_forumng::get_course_forums($course2);
     $this->assertEquals(2, $forums1[$orig->get_id()]->get_num_discussions());
     $this->assertEquals(1, $forums2[$other->get_id()]->get_num_discussions());
     $list = $forums1[$orig->get_id()]->get_discussion_list($group2->id);
     $this->assertFalse($list->is_empty());
     $discussion = $list->get_normal_discussions();
     $this->assertEquals(2, reset($discussion)->get_num_posts());
     if (mod_forumng::search_installed()) {
         $searchdoc = reset($discussion)->get_root_post()->search_get_document();
         $this->assertTrue($searchdoc->find());
         $query = new local_ousearch_search('reply');
         $query->set_coursemodule($other->get_course_module(true));
         $results = $query->query();
         $this->assertNotEmpty($results->results);
     }
 }
Example #9
0
 *
 * @copyright &copy; 2007 The Open University
 * @author s.marshall@open.ac.uk
 * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
 * @package ouwiki
 */
require_once dirname(__FILE__) . '/../../config.php';
require_once $CFG->dirroot . '/local/ousearch/searchlib.php';
require $CFG->dirroot . '/mod/ouwiki/basicpage.php';
$querytext = required_param('query', PARAM_RAW);
$url = new moodle_url('/mod/ouwiki/search.php', array('id' => $id, 'user' => $userid, 'query' => $querytext));
$PAGE->set_url($url);
$ouwikioutput = $PAGE->get_renderer('mod_ouwiki');
echo $ouwikioutput->ouwiki_print_start($ouwiki, $cm, $course, $subwiki, get_string('searchresults'), $context, null, null, null, '', '', $querytext);
echo html_writer::start_div();
$query = new local_ousearch_search($querytext);
$query->set_coursemodule($cm);
if ($subwiki->groupid) {
    $query->set_group_id($subwiki->groupid);
}
if ($subwiki->userid) {
    $query->set_user_id($subwiki->userid);
}
$foundsomething = $query->display_results('search.php?' . ouwiki_display_wiki_parameters('', $subwiki, $cm));
echo $foundsomething;
// Add link to search the rest of this website if service available.
if (!empty($CFG->block_resources_search_baseurl)) {
    $params = array('course' => $course->id, 'query' => $querytext);
    $restofwebsiteurl = new moodle_url('/blocks/resources_search/search.php', $params);
    $strrestofwebsite = get_string('restofwebsite', 'local_ousearch');
    $altlink = html_writer::start_tag('div', array('class' => 'advanced-search-link'));