This is a forwarded message
From: Tom Rogers <[EMAIL PROTECTED]>
To: Richard Kurth <[EMAIL PROTECTED]>
Date: Saturday, March 1, 2003, 5:59:11 PM
Subject: [PHP] Help!! with array's Please
===8<==============Original message text===============
Hi,
Saturday, March 1, 2003, 4:28:27 PM, you wrote:
RK> Hello Tom,
RK> I would love to see a basic class to do all of this. I took what you
RK> showed me and turned it into a function that works perfect.
RK> The one thing that I have had a lot of trouble with is manipulating
RK> text based data. And out of all the books I have, none of them get
RK> into doing this type of programing.
Here it is
class groupClass {
var $groups = array();
var $gid = 499; //if there are no groups, new ones start at this
number +1
function groupClass($file){
$r = false;
if(file_exists($file)){
$in = file($file);
//build an array using names as keys so we can identify
entries easier
while(list($key,$val) = each($in)){
$val = trim($val); //get rid of newlines
list($name,$pass,$gid,$userlist) = split (":", $val);
if($gid > $this->gid){
$this->gid = $gid; //keep track
of the highest gid number
}
$this->groups[$name]['gid'] = $gid;
$this->groups[$name]['pass'] = $pass;
$users = explode(',',$userlist); //get an array
of users
while(list($key2,$user) = each($users)){
// build an array using name as key
$this->groups[$name]['users'][$user] = 1;
}
}
$r = true;
//debug
//echo '<pre>';
//print_r($this->groups);
//echo '</pre>';
}
Return $r;
}
function addGroup($group,$gid = 0,$pass = 'x'){
$r = false;
if(!isset($this->groups[$group])){
$gid = ($gid > 0)? $gid : $this->gid +1; // if no gid
then generate the next highest
$this->groups[$group]['gid'] = $gid;
$this->groups[$group]['pass'] = $pass;
$r = true;
}
Return $r;
}
function delGroup($group){
$r = false;
if(isset($this->groups[$group])){
unset($this->groups[$group]);
$r = true;
}
Return $r;
}
function addUser($group,$user){
$r = false;
if(isset($this->groups[$group])){
$this->groups[$group]['users'][$user] = 1;
$r = true;
}
Return $r;
}
function delUser($group,$user){
$r = false;
if(isset($this->groups[$group]['users'][$user])){
unset($this->groups[$group]['users'][$user]);
$r = true;
}
Return $r;
}
function dump($file){
$r = false;
if($handle = fopen($file,'w')){
$groups = $this->groups; //get a copy of the groups
array (saves typing :)
//debug
//echo '<pre>';
//print_r($this->groups);
//echo '</pre>';
while(list($key,$val) = each($groups)){ //go through the groups
$users = $groups[$key]['users'];
//get a copy of the users array
$x = 0;
$userlist = '';
while(list($key2,$val2) = each($users)){ // add
the users
$userlist .= ($x > 0)? ','.$key2 : $key2; //
don't need a comma for the first run
$x++;
}
$gid = $groups[$key]['gid'];
$pass = $groups[$key]['pass'];
$list = $key.':'.$pass.':'.$gid.':'.$userlist."\n"; //
make the entry
fputs($handle,$list); //save it
}
$r = true;
fclose($handle);
}
Return $r;
}
}
//usage
$g = new groupClass('group');
$g ->addGroup('site8');
$g ->addUser('site8','fred');
$g->delUser('site7','tester7');
$g->dump('group2');
--
regards,
Tom
===8<===========End of original message text===========
--
regards,
Tom mailto:[EMAIL PROTECTED]
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php