Skip to content

Commit

Permalink
Merge branch 'wip-MDL-31763-master' of git://github.com/abgreeve/moodle
Browse files Browse the repository at this point in the history
  • Loading branch information
Sam Hemelryk committed May 10, 2012
2 parents 3c611a3 + 541685e commit 5ba2e31
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 6 deletions.
20 changes: 20 additions & 0 deletions mod/data/lib.php
Original file line number Diff line number Diff line change
Expand Up @@ -3540,3 +3540,23 @@ function data_get_advanced_search_sql($sort, $data, $recordids, $selectdata, $so
$sqlselect['params'] = $inparam;
return $sqlselect;
}

/**
* Checks to see if the user has permission to delete the preset.
* @param stdClass $context Context object.
* @param stdClass $preset The preset object that we are checking for deletion.
* @return bool Returns true if the user can delete, otherwise false.
*/
function data_user_can_delete_preset($context, $preset) {
global $USER;

if (has_capability('mod/data:manageuserpresets', $context)) {
return true;
} else {
$candelete = false;
if ($preset->userid == $USER->id) {
$candelete = true;
}
return $candelete;
}
}
32 changes: 26 additions & 6 deletions mod/data/preset.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@
$course = $DB->get_record('course', array('id'=>$data->course), '*', MUST_EXIST);
$cm = get_coursemodule_from_instance('data', $data->id, $course->id, null, MUST_EXIST);
}
$context = get_context_instance(CONTEXT_MODULE, $cm->id, MUST_EXIST);

$context = context_module::instance($cm->id, MUST_EXIST);
require_login($course, false, $cm);
require_capability('mod/data:managetemplates', $context);
$PAGE->set_url(new moodle_url('/mod/data/preset.php', array('d'=>$data->id)));
Expand All @@ -57,7 +58,6 @@
$data->instance = $cm->instance;

$presets = data_get_available_presets($context);
$canmanage = has_capability('mod/data:manageuserpresets', $context);
$strdelete = get_string('deleted', 'data');
foreach ($presets as &$preset) {
if (!empty($preset->userid)) {
Expand All @@ -66,8 +66,13 @@
} else {
$preset->userid = 0;
$preset->description = $preset->name;
if (data_user_can_delete_preset($context, $preset) && $preset->name != 'Image gallery') {
$delurl = new moodle_url('/mod/data/preset.php', array('d'=> $data->id, 'action'=>'confirmdelete', 'fullname'=>$preset->userid.'/'.$preset->shortname, 'sesskey'=>sesskey()));
$delicon = html_writer::empty_tag('img', array('src'=>$OUTPUT->pix_url('t/delete'), 'class'=>'iconsmall', 'alt'=>$strdelete.' '.$preset->description));
$preset->description .= html_writer::link($delurl, $delicon);
}
}
if ($preset->userid > 0 and ($preset->userid == $USER->id || $canmanage)) {
if ($preset->userid > 0 && data_user_can_delete_preset($context, $preset)) {
$delurl = new moodle_url('/mod/data/preset.php', array('d'=> $data->id, 'action'=>'confirmdelete', 'fullname'=>$preset->userid.'/'.$preset->shortname, 'sesskey'=>sesskey()));
$delicon = html_writer::empty_tag('img', array('src'=>$OUTPUT->pix_url('t/delete'), 'class'=>'iconsmall', 'alt'=>$strdelete.' '.$preset->description));
$preset->description .= html_writer::link($delurl, $delicon);
Expand Down Expand Up @@ -135,9 +140,18 @@
exit(0);

} else if ($formdata = $form_save->get_data()) {

if (!empty($formdata->overwrite)) {
data_delete_site_preset($formdata->name);
$selectedpreset = new stdClass();
foreach ($presets as $preset) {
if ($preset->name == $formdata->name) {
$selectedpreset = $preset;
}
}
if (data_user_can_delete_preset($context, $selectedpreset)) {
data_delete_site_preset($formdata->name);
} else {
print_error('cannotdeletepreset', 'data');
}
}

// If the preset exists now then we need to throw an error.
Expand Down Expand Up @@ -179,7 +193,13 @@
echo $OUTPUT->footer();
exit(0);
} else if ($action == 'delete') {
if (!$userid || ($userid != $USER->id && !$canmanage)) {
$selectedpreset = new stdClass();
foreach ($presets as $preset) {
if ($preset->shortname == $shortname) {
$selectedpreset = $preset;
}
}
if (!data_user_can_delete_preset($context, $selectedpreset)) {
print_error('invalidrequest');
}

Expand Down

0 comments on commit 5ba2e31

Please sign in to comment.