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;
}
Exemplo n.º 2
0
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.
Exemplo n.º 3
0
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);
}
Exemplo n.º 4
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 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);
}