public function prepare_message_for_edit($cm, $post)
 {
     $this->append_edited_by($post);
     $context = \context_module::instance($cm->id);
     $post = trusttext_pre_edit($post, 'message', $context);
     $itemid = file_get_submitted_draft_itemid('message');
     $message = file_prepare_draft_area($itemid, $context->id, 'mod_hsuforum', 'post', $post->id, \mod_hsuforum_post_form::editor_options($context, $post->id), $post->message);
     return array($message, $itemid);
 }
예제 #2
0
파일: post.php 프로젝트: njorth/marginalia
     }
     $PAGE->set_cm($cm, $course, $forum);
     if (!($forum->type == 'news' && !$post->parent && $discussion->timestart > time())) {
         if (time() - $post->created > $CFG->maxeditingtime and !has_capability('mod/forum:editanypost', $modcontext)) {
             print_error('maxtimehaspassed', 'forum', '', format_time($CFG->maxeditingtime));
         }
     }
     if ($post->userid != $USER->id and !has_capability('mod/forum:editanypost', $modcontext)) {
         print_error('cannoteditposts', 'forum');
     }
     // Load up the $post variable.
     $post->edit = $edit;
     $post->course = $course->id;
     $post->forum = $forum->id;
     $post->groupid = $discussion->groupid == -1 ? 0 : $discussion->groupid;
     $post = trusttext_pre_edit($post, 'message', $modcontext);
     unset($SESSION->fromdiscussion);
 } else {
     if (!empty($delete)) {
         // User is deleting a post
         if (!($post = forum_get_post_full($delete))) {
             print_error('invalidpostid', 'forum');
         }
         if (!($discussion = $DB->get_record("forum_discussions", array("id" => $post->discussion)))) {
             print_error('notpartofdiscussion', 'forum');
         }
         if (!($forum = $DB->get_record("forum", array("id" => $discussion->forum)))) {
             print_error('invalidforumid', 'forum');
         }
         if (!($cm = get_coursemodule_from_instance("forum", $forum->id, $forum->course))) {
             print_error('invalidcoursemodule');
예제 #3
0
/**
 * Prepares 'editor' formslib element from data in database
 *
 * The passed $data record must contain field foobar, foobarformat and optionally foobartrust. This
 * function then copies the embedded files into draft area (assigning itemids automatically),
 * creates the form element foobar_editor and rewrites the URLs so the embedded images can be
 * displayed.
 * In your mform definition, you must have an 'editor' element called foobar_editor. Then you call
 * your mform's set_data() supplying the object returned by this function.
 *
 * @category files
 * @param stdClass $data database field that holds the html text with embedded media
 * @param string $field the name of the database field that holds the html text with embedded media
 * @param array $options editor options (like maxifiles, maxbytes etc.)
 * @param stdClass $context context of the editor
 * @param string $component
 * @param string $filearea file area name
 * @param int $itemid item id, required if item exists
 * @return stdClass modified data object
 */
function file_prepare_standard_editor($data, $field, array $options, $context = null, $component = null, $filearea = null, $itemid = null)
{
    $options = (array) $options;
    if (!isset($options['trusttext'])) {
        $options['trusttext'] = false;
    }
    if (!isset($options['forcehttps'])) {
        $options['forcehttps'] = false;
    }
    if (!isset($options['subdirs'])) {
        $options['subdirs'] = false;
    }
    if (!isset($options['maxfiles'])) {
        $options['maxfiles'] = 0;
        // no files by default
    }
    if (!isset($options['noclean'])) {
        $options['noclean'] = false;
    }
    //sanity check for passed context. This function doesn't expect $option['context'] to be set
    //But this function is called before creating editor hence, this is one of the best places to check
    //if context is used properly. This check notify developer that they missed passing context to editor.
    if (isset($context) && !isset($options['context'])) {
        //if $context is not null then make sure $option['context'] is also set.
        debugging('Context for editor is not set in editoroptions. Hence editor will not respect editor filters', DEBUG_DEVELOPER);
    } else {
        if (isset($options['context']) && isset($context)) {
            //If both are passed then they should be equal.
            if ($options['context']->id != $context->id) {
                $exceptionmsg = 'Editor context [' . $options['context']->id . '] is not equal to passed context [' . $context->id . ']';
                throw new coding_exception($exceptionmsg);
            }
        }
    }
    if (is_null($itemid) or is_null($context)) {
        $contextid = null;
        $itemid = null;
        if (!isset($data)) {
            $data = new stdClass();
        }
        if (!isset($data->{$field})) {
            $data->{$field} = '';
        }
        if (!isset($data->{$field . 'format'})) {
            $data->{$field . 'format'} = editors_get_preferred_format();
        }
        if (!$options['noclean']) {
            $data->{$field} = clean_text($data->{$field}, $data->{$field . 'format'});
        }
    } else {
        if ($options['trusttext']) {
            // noclean ignored if trusttext enabled
            if (!isset($data->{$field . 'trust'})) {
                $data->{$field . 'trust'} = 0;
            }
            $data = trusttext_pre_edit($data, $field, $context);
        } else {
            if (!$options['noclean']) {
                $data->{$field} = clean_text($data->{$field}, $data->{$field . 'format'});
            }
        }
        $contextid = $context->id;
    }
    if ($options['maxfiles'] != 0) {
        $draftid_editor = file_get_submitted_draft_itemid($field);
        $currenttext = file_prepare_draft_area($draftid_editor, $contextid, $component, $filearea, $itemid, $options, $data->{$field});
        $data->{$field . '_editor'} = array('text' => $currenttext, 'format' => $data->{$field . 'format'}, 'itemid' => $draftid_editor);
    } else {
        $data->{$field . '_editor'} = array('text' => $data->{$field}, 'format' => $data->{$field . 'format'}, 'itemid' => 0);
    }
    return $data;
}
예제 #4
0
/**
 * Prepares 'editor' formslib element from data in database
 *
 * The passed $data record must contain field foobar, foobarformat and optionally foobartrust. This
 * function then copies the embedded files into draft area (assigning itemids automatically),
 * creates the form element foobar_editor and rewrites the URLs so the embedded images can be
 * displayed.
 * In your mform definition, you must have an 'editor' element called foobar_editor. Then you call
 * your mform's set_data() supplying the object returned by this function.
 *
 * @param object $data database field that holds the html text with embedded media
 * @param string $field the name of the database field that holds the html text with embedded media
 * @param array $options editor options (like maxifiles, maxbytes etc.)
 * @param object $context context of the editor
 * @param string $component
 * @param string $filearea file area name
 * @param int $itemid item id, required if item exists
 * @return object modified data object
 */
function file_prepare_standard_editor($data, $field, array $options, $context = null, $component = null, $filearea = null, $itemid = null)
{
    $options = (array) $options;
    if (!isset($options['trusttext'])) {
        $options['trusttext'] = false;
    }
    if (!isset($options['forcehttps'])) {
        $options['forcehttps'] = false;
    }
    if (!isset($options['subdirs'])) {
        $options['subdirs'] = false;
    }
    if (!isset($options['maxfiles'])) {
        $options['maxfiles'] = 0;
        // no files by default
    }
    if (!isset($options['noclean'])) {
        $options['noclean'] = false;
    }
    if (is_null($itemid) or is_null($context)) {
        $contextid = null;
        $itemid = null;
        if (!isset($data->{$field})) {
            $data->{$field} = '';
        }
        if (!isset($data->{$field . 'format'})) {
            $data->{$field . 'format'} = editors_get_preferred_format();
        }
        if (!$options['noclean']) {
            $data->{$field} = clean_text($data->{$field}, $data->{$field . 'format'});
        }
    } else {
        if ($options['trusttext']) {
            // noclean ignored if trusttext enabled
            if (!isset($data->{$field . 'trust'})) {
                $data->{$field . 'trust'} = 0;
            }
            $data = trusttext_pre_edit($data, $field, $context);
        } else {
            if (!$options['noclean']) {
                $data->{$field} = clean_text($data->{$field}, $data->{$field . 'format'});
            }
        }
        $contextid = $context->id;
    }
    if ($options['maxfiles'] != 0) {
        $draftid_editor = file_get_submitted_draft_itemid($field);
        $currenttext = file_prepare_draft_area($draftid_editor, $contextid, $component, $filearea, $itemid, $options, $data->{$field});
        $data->{$field . '_editor'} = array('text' => $currenttext, 'format' => $data->{$field . 'format'}, 'itemid' => $draftid_editor);
    } else {
        $data->{$field . '_editor'} = array('text' => $data->{$field}, 'format' => $data->{$field . 'format'}, 'itemid' => 0);
    }
    return $data;
}
예제 #5
0
/**
 * Prepares standardised text field fro editing with Editor formslib element
 * @param object $data $database entry field
 * @param string $field name of data field
 * @param array $options various options
 * @param object $context context, required for existing data
 * @param string $filearea file area name
 * @param int $itemid item id, required if item exists
 * @return object modified data object
 */
function file_prepare_standard_editor($data, $field, array $options, $context = null, $filearea = null, $itemid = null)
{
    $options = (array) $options;
    if (!isset($options['trusttext'])) {
        $options['trusttext'] = false;
    }
    if (!isset($options['forcehttps'])) {
        $options['forcehttps'] = false;
    }
    if (!isset($options['subdirs'])) {
        $options['subdirs'] = false;
    }
    if (!isset($options['maxfiles'])) {
        $options['maxfiles'] = 0;
        // no files by default
    }
    if (!isset($options['noclean'])) {
        $options['noclean'] = false;
    }
    if (empty($data->id) or empty($context)) {
        $contextid = null;
        $data->id = null;
        if (!isset($data->{$field})) {
            $data->{$field} = '';
        }
        if (!isset($data->{$field . 'format'})) {
            $data->{$field . 'format'} = FORMAT_HTML;
            // TODO: use better default based on user preferences and browser capabilities
        }
        if (!$options['noclean']) {
            $data->{$field} = clean_text($data->{$field}, $data->{$field . 'format'});
        }
    } else {
        if ($options['trusttext']) {
            // noclean ignored if trusttext enabled
            if (!isset($data->{$field . 'trust'})) {
                $data->{$field . 'trust'} = 0;
            }
            $data = trusttext_pre_edit($data, $field, $context);
        } else {
            if (!$options['noclean']) {
                $data->{$field} = clean_text($data->{$field}, $data->{$field . 'format'});
            }
        }
        $contextid = $context->id;
    }
    if ($options['maxfiles'] != 0) {
        $draftid_editor = file_get_submitted_draft_itemid($field);
        $currenttext = file_prepare_draft_area($draftid_editor, $contextid, $filearea, $data->id, $options['subdirs'], $data->{$field}, $options['forcehttps']);
        $data->{$field . '_editor'} = array('text' => $currenttext, 'format' => $data->{$field . 'format'}, 'itemid' => $draftid_editor);
    } else {
        $data->{$field . '_editor'} = array('text' => $data->{$field}, 'format' => $data->{$field . 'format'}, 0);
    }
    return $data;
}