diff options
Diffstat (limited to 'utils')
-rw-r--r-- | utils/modules/shop.php | 220 |
1 files changed, 220 insertions, 0 deletions
diff --git a/utils/modules/shop.php b/utils/modules/shop.php new file mode 100644 index 0000000..1a73b5a --- /dev/null +++ b/utils/modules/shop.php @@ -0,0 +1,220 @@ +<?php +/* -*- Mode: php; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ + +global $UTIL_DIR; + +include_once($UTIL_DIR . "/convert.php"); +include_once($UTIL_DIR . "/markdown.php"); + +class Payment { + public $title; + public $type; + public $paypalkey; + + public function write($fp) + { + /* + fwrite($fp, " <payment title=\"" . + htmlspecialchars($this->title, ENT_QUOTES, "UTF-8") . "\"\n"); + fwrite($fp, " type=\"" . $this->type . "\"\n"); + fwrite($fp, " paypalkey=\"" . $this->paypalkey . "\">\n"); + fwrite($fp, " </payment>\n"); + */ + } + + public function show() + { + $str = ""; + + $str .= " <div class=\"payment\">\n"; + $str .= " <div class=\"payment_title\">".$this->title."</div>\n"; + $str .= " <form class=\"payment_button\" action=\"https://www.paypal.com/cgi-bin/webscr\" method=\"post\">\n"; + $str .= " <div>\n"; + $str .= " <input type=\"hidden\" name=\"cmd\" value=\"_s-xclick\"/>\n"; + $str .= " <input type=\"hidden\" name=\"encrypted\" value=\"".$this->paypalkey."\"/>\n"; + $str .= " <input class=\"payment_button_image\" type=\"button\" name=\"submit\""; + $str .= " alt=\"Make payments with PayPal - it's fast, free and secure!\"/>\n"; + $str .= " </div>\n"; + $str .= " </form>\n"; + $str .= " </div>\n"; + + return $str; + } + + public function Payment($title, $type, $paypalkey) + { + $this->title = $title; + $this->type = $type; + $this->paypalkey = $paypalkey; + } +} + +class ShopItem { + public $id; + public $title; + public $description; + public $image; + public $url; + public $payments = array(); + + public function write($fp) + { + /* + fwrite($fp, " <shopitem title=\"" . + htmlspecialchars($this->title, ENT_QUOTES, "UTF-8") . "\"\n"); + fwrite($fp, " description=\"" . + htmlspecialchars($this->description, ENT_QUOTES, "UTF-8") . "\"\n"); + fwrite($fp, " image=\"" . $this->image . "\">\n"); + + fwrite($fp, " type=\"" . $this->type . "\"\n"); + fwrite($fp, " paypalkey=\"" . $this->paypalkey . "\">\n"); + fwrite($fp, " </shopitem>\n"); + */ + } + + public function show() + { + $str = ""; + + $str .= " <div class=\"shopitem\">\n"; + $str .= " <div class=\"shopitem_title\">".$this->title."</div>\n"; + if($this->url != "") $str .= "<a href=\"".$this->url."\">\n"; + $str .= " <img class=\"shopitem_image\" alt=\"".$this->title."\" src=\"".$this->image."\"/>\n"; + if($this->url != "") $str .= "</a>\n"; + $str .= " <div class=\"shopitem_description\">".$this->description."</div>\n"; + + $str .= " <div class=\"payments\">\n"; + foreach($this->payments as $p) { + $str .= $p->show(); + } + $str .= " </div>\n"; + $str .= " </div>\n"; + + return $str; + } + + public function addPayment($payment) + { + $key = $payment->title; + $this->payments[$key] = $payment; + } + + public function ShopItem($id, $title, $description, $image, $url) + { + $this->id = $id; + $this->title = $title; + $this->description = $description; + $this->image = $image; + $this->url = $url; + } +} + +class Shop { + + private $file; + private $shopitems = array(); + + // Admin config + public $admin_title = "Shop"; + public $admin_submodules = array("Add Item" => "add", + "Edit Item" => "edit", + "Delete Item" => "delete"); + + public function admin($sub, $action, $vars) + { + switch($sub) { + case "add": + break; + case "edit": + break; + case "delete": + break; + } + } + + public function run($params) + { + global $GLOBALS; + + $str = "<div class=\"shop\">\n"; + + //foreach($params as $param => $value) {} + + if($this->shopitems) { + foreach($this->shopitems as $shopitem) { + $str .= $shopitem->show(); + } + } + + $str .= "</div>\n"; + + return $str; + } + + public function add($shopitem) { + $key = $shopitem->id; + $this->shopitems[$key] = $shopitem; + } + + public function write() + { + /* + $fp = fopen($this->file, "w"); + fwrite($fp, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); + + fwrite($fp, "<discography>\n"); + foreach($this->discs as $disc) { + $disc->write($fp); + } + fwrite($fp, "</discography>\n"); + + fclose($fp); + */ + } + + private function read() + { + $dom = new DomDocument; + $dom->preserveWhiteSpace = FALSE; + $dom->load($this->file); + $shopitems = $dom->getElementsByTagName('shopitem'); + + if($shopitems) { + foreach($shopitems as $i) { + $shopitem = new ShopItem($i->getAttribute('id'), + $i->getAttribute('title'), + $i->getAttribute('description'), + $i->getAttribute('image'), + $i->getAttribute('url')); + + $payments = $i->getElementsByTagName('payment'); + if($payments) { + foreach($payments as $p) { + $payment = new Payment($p->getAttribute('title'), + $p->getAttribute('type'), + $p->getAttribute('paypalkey')); + $shopitem->addPayment($payment); + } + } + + $this->add($shopitem); + } + } + ksort($this->shopitems); + } + + public function Shop($file) + { + $this->file = $file; + if(file_exists($file)) $this->read(); + } + +} + +function shop_init() +{ + global $DATA_DIR; + return new Shop($DATA_DIR . "/shop.xml"); +} + +?> |