bug 1138: Common argument ordering for user_agreement getters
authorMichael Tänzer <neo@nhng.de>
Tue, 1 Apr 2014 16:41:21 +0000 (18:41 +0200)
committerMichael Tänzer <neo@nhng.de>
Tue, 1 Apr 2014 16:41:21 +0000 (18:41 +0200)
Signed-off-by: Michael Tänzer <neo@nhng.de>
includes/notary.inc.php
pages/account/43.php
pages/account/57.php
pages/account/59.php

index ceb1530..d9724cc 100644 (file)
        }
 
        /**
-        * get_first_user_agreement()
-        *  returns the first user_agreement entry of the requested type depending on thes status of active of a given user
-        * @param mixed $memid
-        * @param integer $active, 0 - passive, 1 -active
-        * @param string $type
-        * @return
+        * Get the first user_agreement entry of the requested type
+        * @param int $memid
+        * @param string $type - the type of user agreement, by default all
+        *     agreements are listed
+        * @param int $active - whether to get active or passive agreements:
+        *     0 := passive
+        *     1 := active
+        *     null := both
+        * @return array(string=>mixed) - an associative array containing
+        *     'document', 'date', 'method', 'comment', 'active'
         */
-       function get_first_user_agreement($memid, $active=1, $type="CCA"){
-       //returns an array (`document`,`date`,`method`, `comment`,`active`)
+       function get_first_user_agreement($memid, $type=null, $active=null){
+               $filter = '';
+               if (!is_null($type)) {
+                       $filter .= " AND u.`document` = '".mysql_real_escape_string($type)."'";
+               }
+
+               if (!is_null($active)) {
+                       $filter .= " AND u.`active` = ".intval($active);
+               }
+
                $query="SELECT u.`document`, u.`date`, u.`method`, u.`comment`, u.`active` FROM `user_agreements` AS u
-                       WHERE u.`document` = '" . mysql_real_escape_string($type) . "' AND u.`memid`=" . intval($memid) . " AND u.`active`=" . intval($active) .
-                       " ORDER BY u.`date` Limit 1;";
+                       WHERE u.`memid`=".intval($memid)."
+                               $filter
+                       ORDER BY u.`date` LIMIT 1";
                $res = mysql_query($query);
                if(mysql_num_rows($res) >0){
                        $rec = mysql_fetch_assoc($res);
        }
 
        /**
-        * get_last_user_agreement()
-        *  returns the last user_agreement entry of a given type and of a given user
-        * @param mixed $memid
-        * @param string $type
-        * @return
+        * Get the last user_agreement entry of the requested type
+        * @param int $memid
+        * @param string $type - the type of user agreement, by default all
+        *     agreements are listed
+        * @param int $active - whether to get active or passive agreements:
+        *     0 := passive,
+        *     1 := active,
+        *     null := both
+        * @return array(string=>mixed) - an associative array containing
+        *     'document', 'date', 'method', 'comment', 'active'
         */
-       function get_last_user_agreement($memid, $type="CCA"){
-       //returns an array (`document`,`date`,`method`, `comment`,`active`)
-               $query="SELECT u.`document`, u.`date`, u.`method`, u.`comment`, u.`active` FROM user_agreements u WHERE u.`document` = '" . mysql_real_escape_string($type) . "' AND (u.`memid`=" . intval($memid) . " ) order by `date` desc limit 1 " ;
+       function get_last_user_agreement($memid, $type=null, $active=null){
+               $filter = '';
+               if (!is_null($type)) {
+                       $filter .= " AND u.`document` = '".mysql_real_escape_string($type)."'";
+               }
+
+               if (!is_null($active)) {
+                       $filter .= " AND u.`active` = ".intval($active);
+               }
+
+               $query="SELECT u.`document`, u.`date`, u.`method`, u.`comment`, u.`active` FROM `user_agreements` AS u
+                       WHERE u.`memid`=".intval($memid)."
+                               $filter
+                       ORDER BY u.`date` DESC LIMIT 1";
                $res = mysql_query($query);
                if(mysql_num_rows($res) >0){
                        $rec = mysql_fetch_assoc($res);
                return $rec;
        }
 
-function get_user_agreement($memid){
-       $query="(SELECT u.`document`, u.`date`, u.`method`, u.`comment`, 1 as `active` FROM user_agreements u WHERE u.`document` = 'CCA' AND (u.`memid`=".$memid." ) order by u.`date` )
-                       union
-                       (SELECT u.`document`, u.`date`, u.`method`, u.`comment`, 0 as `active` FROM user_agreements u WHERE u.`document` = 'CCA' AND ( u.`secmemid`=".$memid.") order by u.`date`)
-                       union
-                       (SELECT u.`document`, u.`date`, u.`method`, u.`comment`, 0 as `active` FROM user_agreements u WHERE u.`document` != 'CCA' AND ( u.`memid`=".$memid.") order by u.u.`document`, u.`date`) " ;
-       $res = mysql_query($query);
+/**
+ * Get the all user_agreement entries of the requested type
+ * @param int $memid
+ * @param string $type - the type of user agreement, by default all
+ *     agreements are listed
+ * @param int $active - whether to get an active or passive agreements:
+ *     0 := passive,
+ *     1 := active,
+ *     null := both
+ * @return resource - a mysql result set containing all agreements
+ */
+function get_user_agreements($memid, $type=null, $active=null){
+       $filter = '';
+       if (!is_null($type)) {
+               $filter .= " AND u.`document` = '".mysql_real_escape_string($type)."'";
+       }
+
+       if (!is_null($active)) {
+               $filter .= " AND u.`active` = ".intval($active);
+       }
 
+       $query="SELECT u.`document`, u.`date`, u.`method`, u.`comment`, u.`active` FROM `user_agreements` AS u
+               WHERE u.`memid`=".intval($memid)."
+                       $filter
+               ORDER BY u.`date`";
        return mysql_query($query);
 }
 
index c0ca26e..b055add 100644 (file)
@@ -238,7 +238,7 @@ if(intval($_REQUEST['userid']) > 0) {
     <? // list of flags ?>
         <tr>
             <td class="DataTD"><?=_("CCA accepted")?>:</td>
-            <td class="DataTD"><a href="account.php?id=57&amp;userid=<?=intval($row['id'])?>"><?=intval(get_user_agreement_status($row['id'])) ? _("Yes") : _("No") ?></a></td>
+            <td class="DataTD"><a href="account.php?id=57&amp;userid=<?=intval($row['id'])?>"><?=intval(get_user_agreement_status($row['id'], 'CCA')) ? _("Yes") : _("No") ?></a></td>
         </tr>
         <tr>
             <td class="DataTD"><?=_("Trainings")?>:</td>
index 0356eeb..56afd53 100644 (file)
     <td class="DataTD"><b><?=_('Type')?></b></td>
   </tr>
 <?
-  $data=get_first_user_agreement($user_id,1);
+  $data=get_first_user_agreement($user_id, 'CCA', 1);
   if (!isset($data['active'])){
       $type='';
-    }else{
+  }else{
       $type=_('active');
-    }
+  }
 ?>
   <tr>
     <td class="DataTD"><?=_('First active CCA')?></td>
@@ -62,7 +62,7 @@
     <td class="DataTD"><?=$type?></td>
   </tr>
 <?
-  $data=get_first_user_agreement($user_id,0);
+  $data=get_first_user_agreement($user_id, 'CCA', 0);
   if (!isset($data['active'])){
       $type="";
     }else{
     <td class="DataTD"><?=$type?></td>
   </tr>
 <?
-  $data=get_last_user_agreement($user_id);
+  $data=get_last_user_agreement($user_id, 'CCA');
   if (!isset($data['active'])){
-      $type="";
-    }elseif($data['active']==1){
-      $type=_('active');
-    }else{
-      $type=_('passive');
-    }
+    $type="";
+  }elseif($data['active']==1){
+    $type=_('active');
+  }else{
+    $type=_('passive');
+  }
 ?>
   <tr>
     <td class="DataTD"><?=_('Last CCA')?></td>
index 8d76789..ae9ec09 100644 (file)
@@ -181,7 +181,7 @@ $dres = get_training_result($userid);
 <br/>
 
 <?
-$dres = get_user_agreement($userid,'',1);
+$dres = get_user_agreements($userid);
 ?>
 <table align="center" valign="middle" border="0" cellspacing="0" cellpadding="0" class="wrapper">
     <tr>