From b7e798b69cc03587b1154bade5e2b007815e564b Mon Sep 17 00:00:00 2001 From: deva Date: Wed, 29 Apr 2009 17:41:35 +0000 Subject: Initial work on members module. --- utils/modules/members.php | 208 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 208 insertions(+) create mode 100644 utils/modules/members.php (limited to 'utils') diff --git a/utils/modules/members.php b/utils/modules/members.php new file mode 100644 index 0000000..db0966d --- /dev/null +++ b/utils/modules/members.php @@ -0,0 +1,208 @@ + "Æbletærte"); + + public function show() + { + global $MEMBERS_DIR; + $str = "
\n"; + $str .= "
" . htmlspecialchars_decode($this->name, ENT_QUOTES) . "
\n"; + $str .= " \"member\"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->stoptyear . "\">\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; + $this->tags = array("Favoritkage" => "Føtex snegl"); + } +} + +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"); +} +?> -- cgit v1.2.3