refactor some code in lists + associated tests
authorPierre Habouzit (MadCoder <pierre.habouzit@m4x.org>
Mon, 13 Dec 2004 16:30:38 +0000 (16:30 +0000)
committerFlorent Bruneau <florent.bruneau@polytechnique.org>
Thu, 26 Jun 2008 21:26:39 +0000 (23:26 +0200)
git-archimport-id: opensource@polytechnique.org--2005/platal--mainline--0.9--patch-86

htdocs/TESTS/index.php
htdocs/TESTS/xorg_user.php
htdocs/listes/admin.php
htdocs/listes/members.php
include/lists.inc.php

index 45e774e..41eef5d 100644 (file)
@@ -25,7 +25,6 @@ class MyReporter extends SimpleReporter {
     }
 }
 
-$reporter = new MyReporter;
 echo <<<EOF
 <html>
   <head>
@@ -44,6 +43,7 @@ echo <<<EOF
 EOF;
 
 foreach (glob(PATH.'/*_*.php') as $tfile) {
+    $reporter = new MyReporter;
     require_once($tfile);
 }
 
index 6540b12..c489341 100644 (file)
@@ -7,7 +7,7 @@ Mock::generate('XorgPage');
 
 class TestOfXOrgUsers extends UnitTestCase {
     function TestOfXOrgUsers() {
-        $this->UnitTestCase('XOrg Users Test');
+        $this->UnitTestCase('Users functions');
     }
 
     function test_get_user_login() {
index 65c3547..70a98dd 100644 (file)
@@ -67,33 +67,9 @@ if(list($det,$mem,$own) = $client->get_members($liste)) {
     if (!$det['own'] && !has_perms()) {
         $page->kill("La liste n'existe pas ou tu n'as pas le droit de l'administrer");
     }
-    $membres = Array();
-    foreach($mem as $member) {
-       if(preg_match('/^([^.]*\.([^.]*)\.\d\d\d\d)@'.$globals->mail->domain.'$/', $member[1], $matches)) {
-           $key = strtoupper($matches[2]{0});
-           $membres[$key][$matches[2].$matches[1]] = Array('n' => $member[0], 'l' => $matches[1], 'a' => $member[1]);
-       } else {
-           $membres[0][] = Array('l' => $member[1], 'a' => $member[1]);
-       }
-    }
-    foreach($membres as $key=>$val) ksort($membres[$key]);
-    ksort($membres);
-
-    $moderos = Array();
-    foreach($own as $owner) {
-       list($m) = split('@',$owner);
-       $res = $globals->db->query("SELECT  CONCAT(prenom, ' ', nom), promo
-                                     FROM  auth_user_md5 AS u
-                               INNER JOIN  aliases AS a ON u.user_id = a.id
-                                    WHERE  a.alias = '$m'");
-       if(list($nom, $promo) = mysql_fetch_row($res)) {
-           $moderos[$promo][] = Array('n' => $nom, 'l' => $m, 'a'=>$owner);
-       } else {
-           $moderos[0][] = Array('l' => $owner, 'a' => $owner);
-       }
-       mysql_free_result($res);
-    }
-    ksort($moderos);
+    
+    $membres = list_sort_members($mem, $tri_promo);
+    $moderos = list_sort_owners($own, $tri_promo);
 
     $page->assign_by_ref('details', $det);
     $page->assign_by_ref('members', $membres);
index 1b82a12..5e61e60 100644 (file)
@@ -41,39 +41,8 @@ $members = $client->get_members($liste);
 $tri_promo = empty($_REQUEST['alpha']);
 
 if(list($det,$mem,$own) = $members) {
-    $membres = Array();
-    foreach($mem as $member) {
-        list($m) = split('@',$member[1]);
-        $res = $globals->db->query("SELECT  prenom,IF(epouse='', nom, epouse), promo
-                                      FROM  auth_user_md5 AS u
-                                INNER JOIN  aliases AS a ON u.user_id = a.id
-                                     WHERE  a.alias = '$m'");
-        if(list($prenom, $nom, $promo) = mysql_fetch_row($res)) {
-           $key = $tri_promo ? $promo : strtoupper($nom{0});
-            $membres[$key][$nom.$m] = Array('n' => "$prenom $nom", 'l' => $m);
-        } else {
-            $membres[0][] = Array('l' => $member[1]);
-        }
-        mysql_free_result($res);
-    }
-    ksort($membres);
-    foreach($membres as $key=>$val) ksort($membres[$key]);
-
-    $moderos = Array();
-    foreach($own as $owner) {
-       list($m) = split('@',$owner);
-       $res = $globals->db->query("SELECT  IF(epouse='', CONCAT(prenom, ' ', nom), CONCAT(prenom, ' ', epouse)), promo
-                                     FROM  auth_user_md5 AS u
-                               INNER JOIN  aliases AS a ON u.user_id = a.id
-                                    WHERE  a.alias = '$m'");
-       if(list($nom, $promo) = mysql_fetch_row($res)) {
-           $moderos[$promo][] = Array('n' => $nom, 'l' => $m);
-       } else {
-           $moderos[0][] = Array('l' => $owner);
-       }
-       mysql_free_result($res);
-    }
-    ksort($moderos);
+    $membres = list_sort_members($mem, $tri_promo);
+    $moderos = list_sort_owners($own, $tri_promo);
 
     $page->assign_by_ref('details', $det);
     $page->assign_by_ref('members', $membres);
index 5111089..75d3b4a 100644 (file)
@@ -37,6 +37,45 @@ function &lists_xmlrpc($uid, $pass, $fqdn=null)
 }
 
 // }}}
+// {{{ function list_sort_owners
 
+function list_sort_owners(&$members, $tri_promo = true) {
+    global $globals;
+
+    $membres = Array();
+    
+    foreach($members as $mem) {
+        list($m, $dom) = split('@',$mem);
+        if ($dom == $globals->mail->domain || $dom == $globals->mail->domain2) {
+            $res = $globals->db->query("SELECT  prenom,IF(epouse='', nom, epouse), promo
+                                          FROM  auth_user_md5 AS u
+                                    INNER JOIN  aliases AS a ON u.user_id = a.id
+                                         WHERE  a.alias = '$m'");
+            if(list($prenom, $nom, $promo) = mysql_fetch_row($res)) {
+                $key = $tri_promo ? $promo : strtoupper($nom{0});
+                $membres[$key][$nom.$m] = Array('n' => "$prenom $nom", 'l' => $m);
+            } else {
+                $membres[0][] = Array('l' => $mem);
+            }
+            mysql_free_result($res);
+        } else {
+            $membres[0][] = Array('l' => $mem);
+        }
+    }
+    
+    ksort($membres);
+    foreach($membres as $key=>$val) ksort($membres[$key]);
+    return $membres;
+}
+
+// }}}
+// {{{ function list_sort_members
+
+function list_sort_members(&$members, $tri_promo = true) {
+    $pi1 = create_function('$arr', 'return $arr[1];');
+    return list_sort_owners(array_map($pi1, $members), $tri_promo);
+}
+
+// }}}
 // vim:set et sw=4 sts=4 sws=4 foldmethod=marker:
 ?>