MDL-70823 mod: safely parse module display options array.
This commit is contained in:
+1
-1
@@ -229,7 +229,7 @@ function page_get_coursemodule_info($coursemodule) {
|
||||
}
|
||||
|
||||
$fullurl = "$CFG->wwwroot/mod/page/view.php?id=$coursemodule->id&inpopup=1";
|
||||
$options = empty($page->displayoptions) ? array() : unserialize($page->displayoptions);
|
||||
$options = empty($page->displayoptions) ? [] : (array) unserialize_array($page->displayoptions);
|
||||
$width = empty($options['popupwidth']) ? 620 : $options['popupwidth'];
|
||||
$height = empty($options['popupheight']) ? 450 : $options['popupheight'];
|
||||
$wh = "width=$width,height=$height,toolbar=no,location=no,menubar=no,copyhistory=no,status=no,directories=no,scrollbars=yes,resizable=yes";
|
||||
|
||||
@@ -130,7 +130,7 @@ class mod_page_mod_form extends moodleform_mod {
|
||||
$defaultvalues['page']['itemid'] = $draftitemid;
|
||||
}
|
||||
if (!empty($defaultvalues['displayoptions'])) {
|
||||
$displayoptions = unserialize($defaultvalues['displayoptions']);
|
||||
$displayoptions = (array) unserialize_array($defaultvalues['displayoptions']);
|
||||
if (isset($displayoptions['printintro'])) {
|
||||
$defaultvalues['printintro'] = $displayoptions['printintro'];
|
||||
}
|
||||
|
||||
+1
-1
@@ -56,7 +56,7 @@ page_view($page, $course, $cm, $context);
|
||||
|
||||
$PAGE->set_url('/mod/page/view.php', array('id' => $cm->id));
|
||||
|
||||
$options = empty($page->displayoptions) ? array() : unserialize($page->displayoptions);
|
||||
$options = empty($page->displayoptions) ? [] : (array) unserialize_array($page->displayoptions);
|
||||
|
||||
if ($inpopup and $page->display == RESOURCELIB_DISPLAY_POPUP) {
|
||||
$PAGE->set_pagelayout('popup');
|
||||
|
||||
@@ -234,7 +234,7 @@ function resource_get_coursemodule_info($coursemodule) {
|
||||
|
||||
if ($display == RESOURCELIB_DISPLAY_POPUP) {
|
||||
$fullurl = "$CFG->wwwroot/mod/resource/view.php?id=$coursemodule->id&redirect=1";
|
||||
$options = empty($resource->displayoptions) ? array() : unserialize($resource->displayoptions);
|
||||
$options = empty($resource->displayoptions) ? [] : (array) unserialize_array($resource->displayoptions);
|
||||
$width = empty($options['popupwidth']) ? 620 : $options['popupwidth'];
|
||||
$height = empty($options['popupheight']) ? 450 : $options['popupheight'];
|
||||
$wh = "width=$width,height=$height,toolbar=no,location=no,menubar=no,copyhistory=no,status=no,directories=no,scrollbars=yes,resizable=yes";
|
||||
@@ -250,7 +250,7 @@ function resource_get_coursemodule_info($coursemodule) {
|
||||
// add some file details as well to be used later by resource_get_optional_details() without retriving.
|
||||
// Do not store filedetails if this is a reference - they will still need to be retrieved every time.
|
||||
if (($filedetails = resource_get_file_details($resource, $coursemodule)) && empty($filedetails['isref'])) {
|
||||
$displayoptions = @unserialize($resource->displayoptions);
|
||||
$displayoptions = (array) unserialize_array($resource->displayoptions);
|
||||
$displayoptions['filedetails'] = $filedetails;
|
||||
$info->customdata['displayoptions'] = serialize($displayoptions);
|
||||
} else {
|
||||
|
||||
@@ -226,7 +226,7 @@ function resource_print_workaround($resource, $cm, $course, $file) {
|
||||
case RESOURCELIB_DISPLAY_POPUP:
|
||||
$path = '/'.$file->get_contextid().'/mod_resource/content/'.$resource->revision.$file->get_filepath().$file->get_filename();
|
||||
$fullurl = file_encode_url($CFG->wwwroot.'/pluginfile.php', $path, false);
|
||||
$options = empty($resource->displayoptions) ? array() : unserialize($resource->displayoptions);
|
||||
$options = empty($resource->displayoptions) ? [] : (array) unserialize_array($resource->displayoptions);
|
||||
$width = empty($options['popupwidth']) ? 620 : $options['popupwidth'];
|
||||
$height = empty($options['popupheight']) ? 450 : $options['popupheight'];
|
||||
$wh = "width=$width,height=$height,toolbar=no,location=no,menubar=no,copyhistory=no,status=no,directories=no,scrollbars=yes,resizable=yes";
|
||||
@@ -292,7 +292,7 @@ function resource_print_heading($resource, $cm, $course, $notused = false) {
|
||||
* @return string Size and type or empty string if show options are not enabled
|
||||
*/
|
||||
function resource_get_file_details($resource, $cm) {
|
||||
$options = empty($resource->displayoptions) ? array() : @unserialize($resource->displayoptions);
|
||||
$options = empty($resource->displayoptions) ? [] : (array) unserialize_array($resource->displayoptions);
|
||||
$filedetails = array();
|
||||
if (!empty($options['showsize']) || !empty($options['showtype']) || !empty($options['showdate'])) {
|
||||
$context = context_module::instance($cm->id);
|
||||
@@ -361,7 +361,7 @@ function resource_get_optional_details($resource, $cm) {
|
||||
|
||||
$details = '';
|
||||
|
||||
$options = empty($resource->displayoptions) ? array() : @unserialize($resource->displayoptions);
|
||||
$options = empty($resource->displayoptions) ? [] : (array) unserialize_array($resource->displayoptions);
|
||||
if (!empty($options['showsize']) || !empty($options['showtype']) || !empty($options['showdate'])) {
|
||||
if (!array_key_exists('filedetails', $options)) {
|
||||
$filedetails = resource_get_file_details($resource, $cm);
|
||||
@@ -422,7 +422,7 @@ function resource_get_optional_details($resource, $cm) {
|
||||
function resource_print_intro($resource, $cm, $course, $ignoresettings=false) {
|
||||
global $OUTPUT;
|
||||
|
||||
$options = empty($resource->displayoptions) ? array() : unserialize($resource->displayoptions);
|
||||
$options = empty($resource->displayoptions) ? [] : (array) unserialize_array($resource->displayoptions);
|
||||
|
||||
$extraintro = resource_get_optional_details($resource, $cm);
|
||||
if ($extraintro) {
|
||||
|
||||
@@ -158,7 +158,7 @@ class mod_resource_mod_form extends moodleform_mod {
|
||||
$default_values['files'] = $draftitemid;
|
||||
}
|
||||
if (!empty($default_values['displayoptions'])) {
|
||||
$displayoptions = unserialize($default_values['displayoptions']);
|
||||
$displayoptions = (array) unserialize_array($default_values['displayoptions']);
|
||||
if (isset($displayoptions['printintro'])) {
|
||||
$default_values['printintro'] = $displayoptions['printintro'];
|
||||
}
|
||||
|
||||
+1
-1
@@ -226,7 +226,7 @@ function url_get_coursemodule_info($coursemodule) {
|
||||
|
||||
if ($display == RESOURCELIB_DISPLAY_POPUP) {
|
||||
$fullurl = "$CFG->wwwroot/mod/url/view.php?id=$coursemodule->id&redirect=1";
|
||||
$options = empty($url->displayoptions) ? array() : unserialize($url->displayoptions);
|
||||
$options = empty($url->displayoptions) ? [] : (array) unserialize_array($url->displayoptions);
|
||||
$width = empty($options['popupwidth']) ? 620 : $options['popupwidth'];
|
||||
$height = empty($options['popupheight']) ? 450 : $options['popupheight'];
|
||||
$wh = "width=$width,height=$height,toolbar=no,location=no,menubar=no,copyhistory=no,status=no,directories=no,scrollbars=yes,resizable=yes";
|
||||
|
||||
@@ -83,7 +83,7 @@ function url_fix_submitted_url($url) {
|
||||
*/
|
||||
function url_get_full_url($url, $cm, $course, $config=null) {
|
||||
|
||||
$parameters = empty($url->parameters) ? array() : unserialize($url->parameters);
|
||||
$parameters = empty($url->parameters) ? [] : (array) unserialize_array($url->parameters);
|
||||
|
||||
// make sure there are no encoded entities, it is ok to do this twice
|
||||
$fullurl = html_entity_decode($url->externalurl, ENT_QUOTES, 'UTF-8');
|
||||
@@ -195,7 +195,7 @@ function url_print_heading($url, $cm, $course, $notused = false) {
|
||||
function url_print_intro($url, $cm, $course, $ignoresettings=false) {
|
||||
global $OUTPUT;
|
||||
|
||||
$options = empty($url->displayoptions) ? array() : unserialize($url->displayoptions);
|
||||
$options = empty($url->displayoptions) ? [] : (array) unserialize_array($url->displayoptions);
|
||||
if ($ignoresettings or !empty($options['printintro'])) {
|
||||
if (trim(strip_tags($url->intro))) {
|
||||
echo $OUTPUT->box_start('mod_introbox', 'urlintro');
|
||||
@@ -284,7 +284,7 @@ function url_print_workaround($url, $cm, $course) {
|
||||
$display = url_get_final_display_type($url);
|
||||
if ($display == RESOURCELIB_DISPLAY_POPUP) {
|
||||
$jsfullurl = addslashes_js($fullurl);
|
||||
$options = empty($url->displayoptions) ? array() : unserialize($url->displayoptions);
|
||||
$options = empty($url->displayoptions) ? [] : (array) unserialize_array($url->displayoptions);
|
||||
$width = empty($options['popupwidth']) ? 620 : $options['popupwidth'];
|
||||
$height = empty($options['popupheight']) ? 450 : $options['popupheight'];
|
||||
$wh = "width=$width,height=$height,toolbar=no,location=no,menubar=no,copyhistory=no,status=no,directories=no,scrollbars=yes,resizable=yes";
|
||||
|
||||
@@ -105,7 +105,7 @@ class mod_url_mod_form extends moodleform_mod {
|
||||
if (empty($this->current->parameters)) {
|
||||
$parcount = 5;
|
||||
} else {
|
||||
$parcount = 5 + count(unserialize($this->current->parameters));
|
||||
$parcount = 5 + count((array) unserialize_array($this->current->parameters));
|
||||
$parcount = ($parcount > 100) ? 100 : $parcount;
|
||||
}
|
||||
$options = url_get_variable_options($config);
|
||||
@@ -131,7 +131,7 @@ class mod_url_mod_form extends moodleform_mod {
|
||||
|
||||
function data_preprocessing(&$default_values) {
|
||||
if (!empty($default_values['displayoptions'])) {
|
||||
$displayoptions = unserialize($default_values['displayoptions']);
|
||||
$displayoptions = (array) unserialize_array($default_values['displayoptions']);
|
||||
if (isset($displayoptions['printintro'])) {
|
||||
$default_values['printintro'] = $displayoptions['printintro'];
|
||||
}
|
||||
@@ -143,7 +143,7 @@ class mod_url_mod_form extends moodleform_mod {
|
||||
}
|
||||
}
|
||||
if (!empty($default_values['parameters'])) {
|
||||
$parameters = unserialize($default_values['parameters']);
|
||||
$parameters = (array) unserialize_array($default_values['parameters']);
|
||||
$i = 0;
|
||||
foreach ($parameters as $parameter=>$variable) {
|
||||
$default_values['parameter_'.$i] = $parameter;
|
||||
|
||||
Reference in New Issue
Block a user