\n";
$str .= "
" . htmlspecialchars_decode($this->name, ENT_QUOTES) . "
\n";
$str .= " image."\"/>\n";
$str .= " Member since: " . $this->startyear . "
\n";
foreach($this->tags as $name => $val) {
$str .= " \n";
$str .= "
".$name."
\n";
$str .= "
".$val."
\n";
$str .= "
\n";
}
$str .= "\n";
return $str;
}
public function write($fp)
{
fwrite($fp, " id . "\"\n");
fwrite($fp, " name=\"" . $this->name . "\"\n");
fwrite($fp, " image=\"" . $this->image . "\"\n");
fwrite($fp, " startyear=\"" . $this->startyear . "\"\n");
fwrite($fp, " stopyear=\"" . $this->stopyear . "\">\n");
foreach($this->tags as $name => $val) {
fwrite($fp, " \n");
}
fwrite($fp, " \n");
}
public function Member($id, $name, $image, $startyear, $stopyear, $tags)
{
$this->id = $id;
$this->name = $name;
$this->image = $image;
$this->startyear = $startyear;
$this->stopyear = $stopyear;
$this->tags = $tags;
}
}
class Members {
private $file;
private $members = array();
// Admin config
public $admin_title = "Members";
public $admin_submodules = array("Add Member" => "add",
"Edit Member" => "edit");
public function admin_add($action, $vars)
{
global $MEMBERS_DIR;
switch($action) {
case "add":
$tags = array();
$member = new Member($this->getNextID(), $vars["name"], $vars["image"],
$vars["startyear"], $vars["stopyear"], $tags);
echo "\"" .$member->name . "\" has now been added.";
$this->add($member);
$this->write();
break;
case "preview":
$tags = array();
$member = new Member($this->getNextID(), $vars["name"], $vars["image"],
$vars["startyear"], $vars["stopyear"], $tags);
echo "\n";
echo "
\n";
echo $member->show();
echo "
\n";
echo "
\n";
echo "Looking ok?
";
$form = new Form("add");
$form->addWidget(new Hidden($vars));
$form->addWidget(new Button("yes"));
$form->render();
$form = new Form("retry");
$form->addWidget(new Hidden($vars));
$form->addWidget(new Button("no"));
$form->render();
break;
case "retry":
$name = $vars["name"];
$image = $vars["image"];
$startyear = $vars["startyear"];
$stopyear = $vars["stopyear"];
$tags = array();
default:
$form = new Form("preview");
$form->addWidget(new LineEdit("Name", "name", $name));
$form->addWidget(new LineEdit("Start Year", "startyear", $startyear));
$form->addWidget(new LineEdit("Stop Year (if no longer a member)", "stopyear", $stopyear));
$form->addWidget(new ImageComboBox("Image", "image", $image, new Icons($MEMBERS_DIR."/")));
$form->addWidget(new Button("Add member"));
$form->render();
break;
}
}
public function admin($sub, $action, $vars)
{
switch($sub) {
case "add":
$this->admin_add($action, $vars);
break;
case "edit":
// $this->admin_edit($action, $vars);
break;
}
}
public function run($params)
{
$str = "";
foreach($this->members as $member) {
$str .= $member->show();
}
return $str;
}
public function add($member) {
$key = $member->id;
$this->members[$key] = $member;
}
public function getNextID()
{
$maxid = -1;
foreach($this->members as $member) {
if($member->id > $maxid) $maxid = $member->id;
}
return $maxid + 1;
}
public function write()
{
$fp = fopen($this->file, "w");
fwrite($fp, "\n");
fwrite($fp, "\n");
foreach($this->members as $member) {
$member->write($fp);
}
fwrite($fp, "\n");
fclose($fp);
}
private function read()
{
$dom = new DomDocument;
$dom->preserveWhiteSpace = FALSE;
$dom->load($this->file);
$params = $dom->getElementsByTagName('member');
foreach ($params as $param) {
$tags = array();
$ps = $param->getElementsByTagName('tag');
foreach ($ps as $p) {
$tags[$p->getAttribute('name')] = $p->getAttribute('value');
}
$member = new Member($param->getAttribute('id'),
$param->getAttribute('name'),
$param->getAttribute('image'),
$param->getAttribute('startyear'),
$param->getAttribute('stopyear'),
$tags);
$this->add($member);
}
}
public function Members($file)
{
$this->file = $file;
if(file_exists($file)) $this->read();
}
}
function members_init()
{
global $DATA_DIR;
return new Members($DATA_DIR . "/members.xml");
}
?>