function moodle_binary_store_file(&$filename, &$id, &$meta, $ext = ".bin") { # READ-Only global $_FILES, $CFG, $course, $wiki, $groupid, $userid, $ewiki_title, $cm; if (!$wiki->ewikiacceptbinary) { print_error('cannotacceptbin', 'wiki'); return 0; } $entry = wiki_get_entry($wiki, $course, $userid, $groupid); if (!$entry->id) { print_error('cannotgetentry', 'wiki'); } require_once $CFG->dirroot . '/lib/uploadlib.php'; $um = new upload_manager('upload', false, false, $course, false, 0, true, true); if ($um->process_file_uploads("{$course->id}/{$CFG->moddata}/wiki/{$wiki->id}/{$entry->id}/{$ewiki_title}")) { $filename = ''; // this to make sure we don't keep processing in the parent function if (!$id) { $newfilename = $um->get_new_filename(); $id = EWIKI_IDF_INTERNAL . $newfilename; } return true; } print_error('uploaderror', 'wiki', '', $um->print_upload_log(true)); return false; }
if ($wiki->ewikiacceptbinary) { define("EWIKI_UPLOAD_MAXSIZE", get_max_upload_file_size()); define("EWIKI_SCRIPT_BINARY", $ewbase . "&binary="); } /// Add the course module 'groupmode' to the wiki object, for easy access. $wiki->groupmode = $cm->groupmode; /// Is an Action given ? if (!$action) { error(get_string("noadministrationaction", "wiki")); } /// Correct Action ? if (!in_array($action, array("setpageflags", "removepages", "strippages", "checklinks", "revertpages"))) { error("Unknown action '{$action}'", "wiki"); } /// May the User administrate it ? if (($wiki_entry = wiki_get_entry($wiki, $course, $userid, $groupid)) === false || wiki_can_edit_entry($wiki_entry, $wiki, $USER, $course) === false) { error(get_string("notadministratewiki", "wiki")); } $canedit = wiki_can_edit_entry($wiki_entry, $wiki, $USER, $course); # Check for dangerous events (hacking) ! if (in_array($action, array("removepages", "strippages", "revertpages"))) { if (!($wiki->wtype == "student" || ($wiki->wtype == "group" and $canedit) || wiki_is_teacher($wiki))) { add_to_log($course->id, "wiki", "hack", "", $wiki->name . ": Tried to trick admin.php with action={$action}."); error("Hack attack detected !"); } } # Database and Binary Handler include_once $CFG->dirroot . "/mod/wiki/ewikimoodlelib.php"; include_once $CFG->dirroot . "/mod/wiki/ewiki/plugins/moodle/moodle_binary_store.php"; /// The wiki_entry->pagename is set to the specified value of the wiki, /// or the default value in the 'lang' file if the specified value was empty.
function wiki_add_entry(&$wiki, &$course, $userid = 0, $groupid = 0) { /// Adds a new wiki entry of the specified type, unless already entered. /// No checking is done here. It is assumed that the caller has the correct /// privileges to add this entry. global $USER; /// If this wiki already has a wiki_type entry, return false. if (wiki_get_entry($wiki, $course, $userid, $groupid) !== false) { return false; } $wiki_entry = new Object(); switch ($wiki->wtype) { case 'student': $wiki_entry->wikiid = $wiki->id; $wiki_entry->userid = $userid ? $userid : $USER->id; $wiki_entry->pagename = wiki_page_name($wiki); $wiki_entry->timemodified = time(); break; case 'group': /// Get the groupmode. It's been added to the wiki object. $groupmode = groups_get_activity_groupmode($wiki); ///give the first groupid by default and try $mygroups = mygroupid($course->id); /// If there is a groupmode, get the group id. if ($groupmode) { $groupid = $groupid ? $groupid : $mygroups[0]; } else { $groupid = 0; } $wiki_entry->wikiid = $wiki->id; $wiki_entry->groupid = $groupid; $wiki_entry->pagename = wiki_page_name($wiki); $wiki_entry->timemodified = time(); break; case 'teacher': /// Get the groupmode. It's been added to the wiki object. $groupmode = groups_get_activity_groupmode($wiki); /// If there is a groupmode, get the user's group id. if ($groupmode and $groupid == 0) { $mygroupid = mygroupid($course->id); $groupid = $mygroupid[0]; } $wiki_entry->wikiid = $wiki->id; $wiki_entry->course = $wiki->course; $wiki_entry->groupid = $groupid; $wiki_entry->pagename = wiki_page_name($wiki); $wiki_entry->timemodified = time(); break; } $wiki_entry->pagename = addslashes($wiki_entry->pagename); return insert_record("wiki_entries", $wiki_entry, true); }
/** * Adds a new wiki entry of the specified type, unless already entered. * * No checking is done here. It is assumed that the caller has the correct * privileges to add this entry. * * @global object * @global object * @param object $wiki * @param object $course * @param int $userid * @param int $groupid * @return bool */ function wiki_add_entry(&$wiki, &$course, $userid = 0, $groupid = 0) { global $USER, $DB; /// If this wiki already has a wiki_type entry, return false. if (wiki_get_entry($wiki, $course, $userid, $groupid) !== false) { return false; } $wiki_entry = new Object(); switch ($wiki->wtype) { case 'student': $wiki_entry->wikiid = $wiki->id; $wiki_entry->userid = $userid ? $userid : $USER->id; $wiki_entry->pagename = wiki_page_name($wiki); $wiki_entry->timemodified = time(); break; case 'group': /// Get the groupmode. It's been added to the wiki object. $groupmode = groups_get_activity_groupmode($wiki); ///give the first groupid by default and try $mygroups = mygroupid($course->id); /// If there is a groupmode, get the group id. if ($groupmode) { $groupid = $groupid ? $groupid : $mygroups[0]; } else { $groupid = 0; } $wiki_entry->wikiid = $wiki->id; $wiki_entry->groupid = $groupid; $wiki_entry->pagename = wiki_page_name($wiki); $wiki_entry->timemodified = time(); break; case 'teacher': /// Get the groupmode. It's been added to the wiki object. $groupmode = groups_get_activity_groupmode($wiki); /// If there is a groupmode, get the user's group id. if ($groupmode and $groupid == 0) { $mygroupid = mygroupid($course->id); $groupid = $mygroupid[0]; } $wiki_entry->wikiid = $wiki->id; $wiki_entry->course = $wiki->course; $wiki_entry->groupid = $groupid; $wiki_entry->pagename = wiki_page_name($wiki); $wiki_entry->timemodified = time(); break; } $wiki_entry->pagename = $wiki_entry->pagename; return $DB->insert_record("wiki_entries", $wiki_entry, true); }