Changeset 2447


Ignore:
Timestamp:
01/28/09 21:02:01 (4 years ago)
Author:
mlutfy
Message:

limit account/member listing to those created by a specific reseller

Location:
alternc/trunk/bureau
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • alternc/trunk/bureau/admin/adm_list.php

    r2446 r2447  
    3838} 
    3939 
    40 $r=$admin->get_list($_REQUEST['show'] == 'all' ? 1 : 0); 
     40$creator_id = intval($_REQUEST['creator']); 
     41 
     42$r=$admin->get_list($_REQUEST['show'] == 'all' ? 1 : 0, $creator_id); 
    4143 
    4244include("head.php"); 
     
    5456<?php if($_REQUEST['show'] != 'all') { 
    5557  echo '<br /><a href="adm_list.php?show=all">' . _('List all the accounts') . '</a>'; 
     58 
     59  if ($cuid == 2000) { 
     60    $list_creators = $admin->get_creator_list(); 
     61    $infos_creators = array(); 
     62 
     63    foreach ($list_creators as $key => $val) { 
     64      $infos_creators[] = '<a href="adm_list.php?show_all&creator=' . $val['uid'] . '">' . $val['login'] . '</a>'; 
     65    } 
     66 
     67    if (count($infos_creators)) { 
     68      echo ' (' . implode(', ', $infos_creators) . ')'; 
     69    } 
     70  } 
    5671} else { 
    5772  echo '<br /><a href="adm_list.php">' . _('List only my accounts') . '</a>'; 
  • alternc/trunk/bureau/class/m_admin.php

    r2446 r2447  
    115115  } 
    116116 
     117  /** 
     118   * Returns the known information about a specific hosted account 
     119   * Similar to get_list() but for creators/resellers. 
     120   */ 
     121  function get_creator($uid) { 
     122    global $err,$db; 
     123    //    $err->log("admin","get",$uid); 
     124    if (!$this->enabled) { 
     125      $err->raise("admin",1); 
     126      return false; 
     127    } 
     128 
     129    $db->query("SELECT m.*, parent.login as parentlogin FROM membres as m LEFT JOIN membres as parent ON (parent.uid = m.creator) WHERE m.uid='$uid';"); 
     130 
     131    if ($db->num_rows()) { 
     132      $db->next_record(); 
     133      $c=$db->Record; 
     134    } else { 
     135      $err->raise("admin",2); 
     136      return false; 
     137    } 
     138 
     139    $db->query("SELECT * FROM local WHERE uid='$uid';"); 
     140    if ($db->num_rows()) { 
     141      $db->next_record(); 
     142      reset($db->Record); 
     143      while (list($key,$val)=each($db->Record)) { 
     144        $c[$key]=$val; 
     145      } 
     146    } 
     147 
     148    $db->query("SELECT count(*) as nbcreated FROM membres WHERE creator='$uid';"); 
     149    if ($db->num_rows()) { 
     150      $db->next_record(); 
     151      reset($db->Record); 
     152      while (list($key,$val)=each($db->Record)) { 
     153        $c[$key]=$val; 
     154      } 
     155    } 
     156 
     157    return $c; 
     158  } 
     159 
    117160  /* ----------------------------------------------------------------- */ 
    118161  /**  
     
    147190   *  
    148191   */ 
    149   function get_list($all=0) { 
     192  function get_list($all=0,$creator=0) { 
    150193    // PATCHBEN pour ne voir que les comptes que l'on a créé (sauf admin) 
    151194    global $err,$mem,$cuid; 
     
    156199    } 
    157200    $db=new DB_System(); 
    158     if ($mem->user[uid]==2000 || $all) { 
     201    if ($mem->user['uid']==2000 && $creator) { 
     202      // Limit listing to a specific reseller 
     203      $db->query("SELECT uid FROM membres WHERE creator='".$creator."' ORDER BY login;"); 
     204    } elseif ($mem->user['uid']==2000 || $all) { 
    159205      $db->query("SELECT uid FROM membres ORDER BY login;"); 
    160206    } else { 
     
    164210      while ($db->next_record()) { 
    165211        $c[]=$this->get($db->f("uid")); 
     212      } 
     213      return $c; 
     214    } else { 
     215      return false; 
     216    } 
     217  } 
     218 
     219  /** 
     220   * Returns the known information about resellers (uid, login, number of accounts) 
     221   * May only be called by the admin account (2000) 
     222   */ 
     223  function get_creator_list() { 
     224    global $err,$mem,$cuid; 
     225 
     226    $err->log("admin","get_reseller_list"); 
     227    if (!$this->enabled) { 
     228      $err->raise("admin",1); 
     229      return false; 
     230    } 
     231 
     232    if ($cuid != 2000) { 
     233      $err->raise("admin",1); 
     234      return false; 
     235    } 
     236 
     237    $db=new DB_System(); 
     238 
     239    $db->query("SELECT distinct creator FROM membres WHERE creator <> 0 ORDER BY creator asc;"); 
     240 
     241    if ($db->num_rows()) { 
     242      while ($db->next_record()) { 
     243        $c[]=$this->get_creator($db->f("creator")); 
    166244      } 
    167245      return $c; 
Note: See TracChangeset for help on using the changeset viewer.