]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-11511, two new caps are introduced, see tracker, merged from MOODLE_19_STABLE
authordongsheng <dongsheng>
Thu, 17 Apr 2008 05:42:13 +0000 (05:42 +0000)
committerdongsheng <dongsheng>
Thu, 17 Apr 2008 05:42:13 +0000 (05:42 +0000)
lang/en_utf8/data.php
mod/data/db/access.php
mod/data/edit.php
mod/data/lib.php
mod/data/version.php
mod/data/view.php

index 82db93600841219c0c4a310e66e236ad690cf819..39eb0bc140eb49b8cf7ab3f077713bfd1f5f2e3b 100644 (file)
@@ -44,6 +44,8 @@ $string['csvfile'] = 'CSV file';
 $string['csvimport'] = 'CSV file import';
 $string['data:approve'] = 'Approve unapproved entries';
 $string['data:comment'] = 'Write comments';
+$string['data:deleteownentries'] = 'Delete own entries';
+$string['data:editownentries'] = 'Edit own entries';
 $string['data:managecomments'] = 'Manage comments';
 $string['data:manageentries'] = 'Manage entries';
 $string['data:managetemplates'] = 'Manage templates';
index 71444b3e61b479d2503ce8989d4cfe787d91e044..855ac13a61a6f3911f8793e808e610ce5705714c 100644 (file)
@@ -165,8 +165,31 @@ $mod_data_capabilities = array(
         'legacy' => array(
             'admin' => CAP_ALLOW
         )
-    )
+    ),
+
+    'mod/data:editownentries' => array(
+        'riskbitmask' => RISK_SPAM,
+
+        'captype' => 'write',
+        'contextlevel' => CONTEXT_MODULE,
+        'legacy' => array(
+            'student' => CAP_ALLOW,
+            'teacher' => CAP_ALLOW,
+            'editingteacher' => CAP_ALLOW,
+            'admin' => CAP_ALLOW
+        )
+    ),
 
+    'mod/data:deleteownentries' => array(
+        'captype' => 'read',
+        'contextlevel' => CONTEXT_MODULE,
+        'legacy' => array(
+            'student' => CAP_ALLOW,
+            'teacher' => CAP_ALLOW,
+            'editingteacher' => CAP_ALLOW,
+            'admin' => CAP_ALLOW
+        )
+    ),
 );
 
 ?>
index 40eb0e7a0c53ab870defaf65110e280985fa1688..9dc6117b5fd65b12b41df58b74813b6a302c7b7e 100755 (executable)
     }
 
     if ($rid) {    // So do you have access?
-        if (!(has_capability('mod/data:manageentries', $context) or data_isowner($rid)) or !confirm_sesskey() ) {
-            print_error('noaccess','data');
+        if (!confirm_sesskey()) {
+            print_error('confirmsesskeybad', 'error');
+        }
+
+        if (data_isowner($rid)){
+            require_capability('mod/data:editownentries', $context);
+        }else{
+            require_capability('mod/data:manageentries', $context);
         }
     }
 
index 804c05bef4f665a67c36ef5b3cbbdc9919a2ff2a..4692ecb08dae0d518d56565339f755dd6b327b01 100755 (executable)
@@ -954,15 +954,23 @@ function data_print_template($template, $records, $data, $search='',$page=0, $re
     /// Replacing special tags (##Edit##, ##Delete##, ##More##)
         $patterns[]='##edit##';
         $patterns[]='##delete##';
-        if (has_capability('mod/data:manageentries', $context) or data_isowner($record->id)) {
+        $isteacher = has_capability('mod/data:manageentries', $context);
+        $isowner = data_isowner($record->id);
+
+        if ($isteacher or ($isowner && has_capability('mod/data:editownentries', $context)) ) {
             $replacement[] = '<a href="'.$CFG->wwwroot.'/mod/data/edit.php?d='
                              .$data->id.'&amp;rid='.$record->id.'&amp;sesskey='.sesskey().'"><img src="'.$CFG->pixpath.'/t/edit.gif" class="iconsmall" alt="'.get_string('edit').'" title="'.get_string('edit').'" /></a>';
+        }else{
+            $replacement[] = '';
+        }
+
+        if($isteacher or ($isowner && has_capability('mod/data:deleteownentries', $context)) ) {
             $replacement[] = '<a href="'.$CFG->wwwroot.'/mod/data/view.php?d='
                              .$data->id.'&amp;delete='.$record->id.'&amp;sesskey='.sesskey().'"><img src="'.$CFG->pixpath.'/t/delete.gif" class="iconsmall" alt="'.get_string('delete').'" title="'.get_string('delete').'" /></a>';
-        } else {
-            $replacement[] = '';
+        }else{
             $replacement[] = '';
         }
+
         $patterns[]='##more##';
         $replacement[] = '<a href="'.$CFG->wwwroot.'/mod/data/view.php?d='.$data->id.'&amp;rid='.$record->id.'"><img src="'.$CFG->pixpath.'/i/search.gif" class="iconsmall" alt="'.get_string('more', 'data').'" title="'.get_string('more', 'data').'" /></a>';
 
index 5b5ec1d424036b732e8b4daf94541961144ae594..c4507d5ccf1fe332f0340c3a0fd9d6abf88ee8b5 100644 (file)
@@ -5,7 +5,7 @@
 //  This fragment is called by /admin/index.php
 ////////////////////////////////////////////////////////////////////////////////
 
-$module->version  = 2007101509;
+$module->version  = 2007101510;
 $module->requires = 2007101509;  // Requires this Moodle version
 $module->cron     = 60;
 
index 772a52058b032350ba41f5c0ae9d493666024dad..bd5670b488316f383fe9da5ed860ea6c53c4311b 100755 (executable)
 
 /// Delete any requested records
 
-    if ($delete && confirm_sesskey() && (has_capability('mod/data:manageentries', $context) or data_isowner($delete))) {
+    if ($delete){
+
+        if (!confirm_sesskey()) {
+            print_error('confirmsesskeybad', 'error');
+        }
+
+        if(data_isowner($delete)){
+            require_capability('mod/data:deleteownentries', $context);
+        }else{
+            require_capability('mod/data:manageentries', $context);
+        }
+
         if ($confirm = optional_param('confirm',0,PARAM_INT)) {
             if ($deleterecord = get_record('data_records', 'id', $delete)) {   // Need to check this is valid
                 if ($deleterecord->dataid == $data->id) {                       // Must be from this database