diff --git a/backup/moodle2/backup_data_stepslib.php b/backup/moodle2/backup_data_stepslib.php index 385e66b..a190eb5 100644 --- a/backup/moodle2/backup_data_stepslib.php +++ b/backup/moodle2/backup_data_stepslib.php @@ -43,7 +43,7 @@ class backup_data_activity_structure_step extends backup_activity_structure_step 'requiredentries', 'requiredentriestoview', 'maxentries', 'rssarticles', 'singletemplate', 'listtemplate', 'listtemplateheader', 'listtemplatefooter', 'addtemplate', 'rsstemplate', 'rsstitletemplate', 'csstemplate', - 'jstemplate', 'asearchtemplate', 'approval', 'scale', + 'jstemplate', 'asearchtemplate', 'approval', 'manageapproved', 'scale', 'assessed', 'assesstimestart', 'assesstimefinish', 'defaultsort', 'defaultsortdir', 'editany', 'notification')); diff --git a/db/install.xml b/db/install.xml index c4a5c2c..3eea246 100644 --- a/db/install.xml +++ b/db/install.xml @@ -31,6 +31,7 @@ + diff --git a/db/upgrade.php b/db/upgrade.php index c5251ea..e4ac969 100644 --- a/db/upgrade.php +++ b/db/upgrade.php @@ -150,5 +150,20 @@ function xmldb_data_upgrade($oldversion) { upgrade_mod_savepoint(true, 2015030900, 'data'); } + if ($oldversion < 2015061904) { + + // Define field manageapproved to be added to data. + $table = new xmldb_table('data'); + $field = new xmldb_field('manageapproved', XMLDB_TYPE_INTEGER, '4', null, XMLDB_NOTNULL, null, '1', 'approval'); + + // Conditionally launch add field manageapproved. + if (!$dbman->field_exists($table, $field)) { + $dbman->add_field($table, $field); + } + + // Data savepoint reached. + upgrade_mod_savepoint(true, 2015061904, 'data'); + } + return true; } diff --git a/lang/en/data.php b/lang/en/data.php index f9ec9dc..4e776e4 100644 --- a/lang/en/data.php +++ b/lang/en/data.php @@ -214,6 +214,8 @@ $string['latlongotherfields'] = 'Other fields'; $string['list'] = 'View list'; $string['listtemplate'] = 'List template'; $string['longitude'] = 'Longitude'; +$string['manageapproved'] = 'Manage approved entries'; +$string['manageapproved_help'] = 'If disabled, approved entries are not editable and deletable by its owner. This setting only takes effect if approval required is set to yes. Default is yes.'; $string['mapexistingfield'] = 'Map to {$a}'; $string['mapnewfield'] = 'Create a new field'; $string['mappingwarning'] = 'All old fields not mapped to a new field will be lost and all data in that field will be removed.'; diff --git a/lib.php b/lib.php index 9bd39ce..3d7ee74 100644 --- a/lib.php +++ b/lib.php @@ -1229,9 +1229,6 @@ function data_print_template($template, $records, $data, $search='', $page=0, $r } $jumpurl = new moodle_url($jumpurl, array('page' => $page, 'sesskey' => sesskey())); - // Check whether this activity is read-only at present - $readonly = data_in_readonly_period($data); - foreach ($records as $record) { // Might be just one for the single template // Replacing tags @@ -1249,7 +1246,7 @@ function data_print_template($template, $records, $data, $search='', $page=0, $r // Replacing special tags (##Edit##, ##Delete##, ##More##) $patterns[]='##edit##'; $patterns[]='##delete##'; - if ($canmanageentries || (!$readonly && data_isowner($record->id))) { + if (data_user_can_manage_entry($record->id, $data, $context)) { $replacement[] = ''.get_string('edit').''; $replacement[] = '