Пример #1
0
    }
    // Checking course instance
    $course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
    if (!($ouwiki = $DB->get_record('ouwiki', array('id' => $cm->instance)))) {
        print_error('invalidcoursemodule');
    }
    $PAGE->set_cm($cm);
}
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
$PAGE->set_pagelayout('incourse');
require_course_login($course, true, $cm);
$ouwikioutput = $PAGE->get_renderer('mod_ouwiki');
$candelete = has_capability('mod/ouwiki:deletepage', $context);
// Get the current page [and current version, which we ignore]
$pageversion1 = ouwiki_get_page_version($subwiki, $pagename, $v1);
$pageversion2 = ouwiki_get_page_version($subwiki, $pagename, $v2);
if (!$pageversion1 || !$pageversion2 || (!empty($pageversion1->deletedat) || !empty($pageversion2->deletedat)) && !$candelete) {
    print_error('Specified version does not exist');
}
if ($pageversion1 >= $pageversion2) {
    print_error('Versions out of order');
}
// Print header
$tabhistparams = ouwiki_shared_url_params($pagename, $subwiki, $cm);
echo $ouwikioutput->ouwiki_print_start($ouwiki, $cm, $course, $subwiki, $pagename, $context, array(array('name' => get_string('tab_history', 'ouwiki'), 'link' => new moodle_url('/mod/ouwiki/history.php', $tabhistparams)), array('name' => get_string('changesnav', 'ouwiki'), 'link' => null)), true, true);
// Obtain difference between two versions
list($diff1, $diff2, $numchanges) = ouwiki_diff_html($pageversion1->xhtml, $pageversion2->xhtml);
$fs = get_file_storage();
$files1 = ($files1 = $fs->get_area_files($context->id, 'mod_ouwiki', 'attachment', $pageversion1->versionid, "timemodified", false)) ? $files1 : null;
$files2 = ($files2 = $fs->get_area_files($context->id, 'mod_ouwiki', 'attachment', $pageversion2->versionid, "timemodified", false)) ? $files2 : null;
list($attachdiff1, $attachdiff2, $attachnumchanges) = ouwiki_diff_attachments($files1, $files2, $context->id, $pageversion1->versionid, $pageversion2->versionid);
Пример #2
0
    if (!($cm = get_coursemodule_from_id('ouwiki', $id))) {
        print_error('invalidcoursemodule');
    }
    // Checking course instance
    $course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
    if (!($ouwiki = $DB->get_record('ouwiki', array('id' => $cm->instance)))) {
        print_error('invalidcoursemodule');
    }
    $PAGE->set_cm($cm);
}
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
$PAGE->set_pagelayout('incourse');
require_course_login($course, true, $cm);
require_capability('mod/ouwiki:deletepage', $context);
// Get the page version to be [un]deleted
$pageversion = ouwiki_get_page_version($subwiki, $pagename, $versionid);
if (!$pageversion) {
    print_error('deleteversionerrorversion', 'ouwiki');
}
// Note: No need to confirm deleting/undeleting page version
// Lock page
list($lockok, $lock) = ouwiki_obtain_lock($ouwiki, $pageversion->pageid);
// Set default action
$action = 'delete';
try {
    // [Un]Delete page version
    if (empty($pageversion->deletedat)) {
        // Flag page version as deleted
        $DB->set_field('ouwiki_versions', 'deletedat', time(), array('id' => $versionid));
        // Check if current version has been deleted
        if ($pageversion->versionid == $pageversion->currentversionid) {
Пример #3
0
 function test_ouwiki_pages_and_versions()
 {
     $user = $this->get_new_user();
     $course = $this->get_new_course();
     // setup a wiki to use
     $ouwiki = $this->get_new_ouwiki($course->id, OUWIKI_SUBWIKIS_SINGLE);
     $cm = $this->get_new_course_module($course->id, $ouwiki->id, NOGROUPS);
     $context = get_context_instance(CONTEXT_MODULE, $cm->instance);
     $groupid = 0;
     $subwiki = ouwiki_get_subwiki($course, $ouwiki, $cm, $context, $groupid, $user->id, true);
     // create the start page
     $startpagename = 'startpage';
     $formdata = null;
     $startpageversion = ouwiki_get_current_page($subwiki, $startpagename, OUWIKI_GETPAGE_CREATE);
     ouwiki_save_new_version($course, $cm, $ouwiki, $subwiki, $startpagename, $startpagename, -1, -1, -1, null, $formdata);
     $this->assertIsA($subwiki, "stdClass");
     // create a page
     $pagename1 = 'testpage1';
     $content1 = 'testcontent';
     // we don't get anything returned for this
     ouwiki_create_new_page($course, $cm, $ouwiki, $subwiki, $startpagename, $pagename1, $content1, $formdata);
     // try get that page
     $pageversion = ouwiki_get_current_page($subwiki, $pagename1);
     $this->assertIsA($subwiki, "stdClass");
     $this->assertEqual($pageversion->title, $pagename1);
     // make some more version
     $content2 = "testcontent2";
     $content3 = "testcontent3";
     ouwiki_save_new_version($course, $cm, $ouwiki, $subwiki, $pagename1, $content2, -1, -1, -1, null, $formdata);
     ouwiki_save_new_version($course, $cm, $ouwiki, $subwiki, $pagename1, $content3, -1, -1, -1, null, $formdata);
     // get the history
     $history = ouwiki_get_page_history($pageversion->pageid, true);
     $this->assertIsA($history, "array");
     // last version should match $content3
     $lastversion = array_shift($history);
     $pageversion = ouwiki_get_page_version($subwiki, $pagename1, $lastversion->versionid);
     $this->assertEqual($pageversion->xhtml, $content3);
     // add another page
     $pagename2 = 'testpage2';
     $content4 = 'testcontent4';
     // we don't get anything returned for this
     ouwiki_create_new_page($course, $cm, $ouwiki, $subwiki, $startpagename, $pagename2, $content4, $formdata);
     // test recent pages
     $changes = ouwiki_get_subwiki_recentpages($subwiki->id);
     $this->assertIsA($changes, "array");
     // first page should be startpage
     $this->assertEqual($changes[1]->title, $startpagename);
     // 3rd page should be pagename2
     $this->assertEqual($changes[3]->title, $pagename2);
     // test recent wiki changes
     $changes = ouwiki_get_subwiki_recentchanges($subwiki->id);
     $this->assertEqual($changes[1]->title, $startpagename);
     // sixth change should be to testpage2  - when we created testpage2
     $this->assertEqual($changes[6]->title, $pagename2);
     // seventh change shouldbe start page again - when we linked to testpage2 to startpage
     $this->assertEqual($changes[7]->title, $startpagename);
     // test deleting a version
 }