From bb5740f4c8d7904c709ccd3a092424813821042e Mon Sep 17 00:00:00 2001
From: skodak <skodak>
Date: Sat, 19 Apr 2008 20:48:48 +0000
Subject: [PATCH] MDL-14424 - approval icon is bigger again, it is possible to
 sort by Approved status now; merged from MOODLE_19_STABLE

---
 lang/en_utf8/data.php |  1 +
 mod/data/lib.php      |  6 +++++-
 mod/data/view.php     | 31 +++++++++++++++++++------------
 3 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/lang/en_utf8/data.php b/lang/en_utf8/data.php
index 22bd37f88e..88449126bc 100644
--- a/lang/en_utf8/data.php
+++ b/lang/en_utf8/data.php
@@ -13,6 +13,7 @@ $string['allowcomments'] = 'Allow comments?';
 $string['allowratings'] = 'Allow posts to be rated?';
 $string['alttext'] = 'Alternative text';
 $string['approve'] = 'Approve';
+$string['approved'] = 'Approved';
 $string['ascending'] = 'Ascending';
 $string['asearchtemplate'] = 'Advanced search template';
 $string['atmaxentry'] = 'You have entered the maximum number of entries allowed!';
diff --git a/mod/data/lib.php b/mod/data/lib.php
index c187a7485e..48ed9a56b2 100755
--- a/mod/data/lib.php
+++ b/mod/data/lib.php
@@ -28,6 +28,7 @@ define ('DATA_PERPAGE_SINGLE', 1);
 
 define ('DATA_FIRSTNAME', -1);
 define ('DATA_LASTNAME', -2);
+define ('DATA_APPROVED', -3);
 
 class data_field_base {     /// Base class for Database Field Types (see field/*/field.class.php)
 
@@ -981,7 +982,7 @@ function data_print_template($template, $records, $data, $search='',$page=0, $re
 
         $patterns[]='##approve##';
         if (has_capability('mod/data:approve', $context) && ($data->approval) && (!$record->approved)){
-            $replacement[] = '<a href="'.$CFG->wwwroot.'/mod/data/view.php?d='.$data->id.'&amp;approve='.$record->id.'&amp;sesskey='.sesskey().'"><img src="'.$CFG->pixpath.'/i/approve.gif" class="iconsmall" alt="'.get_string('approve').'" /></a>';
+            $replacement[] = '<a href="'.$CFG->wwwroot.'/mod/data/view.php?d='.$data->id.'&amp;approve='.$record->id.'&amp;sesskey='.sesskey().'"><img src="'.$CFG->pixpath.'/i/approve.gif" class="icon" alt="'.get_string('approve').'" /></a>';
         } else {
             $replacement[] = '';
         }
@@ -1070,6 +1071,9 @@ function data_print_preference_form($data, $perpage, $search, $sort='', $order='
     }
     $options[DATA_FIRSTNAME] = get_string('authorfirstname', 'data');
     $options[DATA_LASTNAME] = get_string('authorlastname', 'data');
+    if ($data->approval and has_capability('mod/data:approve', $context)) {
+        $options[DATA_APPROVED] = get_string('approved', 'data');
+    }
     echo '<select name="sort" id="pref_sortby"><option value="0">'.get_string('dateentered','data').'</option>';
     foreach ($options as $key => $name) {
         if ($key == $sort) {
diff --git a/mod/data/view.php b/mod/data/view.php
index d17159619f..e67ede258d 100755
--- a/mod/data/view.php
+++ b/mod/data/view.php
@@ -369,7 +369,9 @@
     } else {
     /// Approve any requested records
 
-        if ($approve && confirm_sesskey() && has_capability('mod/data:approve', $context)) {
+        $approvecap = has_capability('mod/data:approve', $context); 
+
+        if ($approve && confirm_sesskey() && $approvecap) {
             if ($approverecord = get_record('data_records', 'id', $approve)) {   // Need to check this is valid
                 if ($approverecord->dataid == $data->id) {                       // Must be from this database
                     $newrecord->id = $approverecord->id;
@@ -391,9 +393,8 @@
             $requiredentries_allowed = false;
         }
 
-    /// We need to examine the whole dataset to produce the correct paging
-
-        if ((!has_capability('mod/data:managetemplates', $context)) && ($data->approval)) {
+    /// setup group and approve restrictions
+        if (!$approvecap && $data->approval) {
             if (isloggedin()) {
                 $approveselect = ' AND (r.approved=1 OR r.userid='.$USER->id.') ';
             } else {
@@ -412,14 +413,20 @@
         $ilike = sql_ilike(); //Be case-insensitive
 
     /// Find the field we are sorting on
-        if ($sort == DATA_FIRSTNAME or $sort == DATA_LASTNAME or empty($sort)) {
-
-            if ($sort == DATA_LASTNAME) {
-                $ordering = "u.lastname $order, u.firstname $order";
-            } else if ($sort == DATA_FIRSTNAME) {
-                $ordering = "u.firstname $order, u.lastname $order";
-            } else {
-                $ordering = "r.timecreated $order";
+        if ($sort <= 0) {
+
+            switch ($sort) {
+                case DATA_LASTNAME:
+                    $ordering = "u.lastname $order, u.firstname $order";
+                    break;
+                case DATA_FIRSTNAME:
+                    $ordering = "u.firstname $order, u.lastname $order";
+                    break;
+                case DATA_APPROVED:
+                    $ordering = "r.approved $order, r.timecreated $order";
+                    break;
+                default:
+                    $ordering = "r.timecreated $order";
             }
 
             $what = ' DISTINCT r.id, r.approved, r.timecreated, r.timemodified, r.userid, u.firstname, u.lastname';
-- 
2.39.5