diff options
| author | deva <deva> | 2009-03-23 18:41:22 +0000 | 
|---|---|---|
| committer | deva <deva> | 2009-03-23 18:41:22 +0000 | 
| commit | eec8fdf3fd36f6f8511bdb4bea0899f82bf3f6ab (patch) | |
| tree | eefac33e9ef9980c81fd6200a437f39c12e63ba8 /utils/modules | |
| parent | 93a934051be4af5f61e28d98650808fcc701ae91 (diff) | |
First attempt on a modularized plugin system, complete with admin, and parameters.
Diffstat (limited to 'utils/modules')
| -rw-r--r-- | utils/modules/events.php | 296 | ||||
| -rw-r--r-- | utils/modules/news.php | 255 | 
2 files changed, 321 insertions, 230 deletions
diff --git a/utils/modules/events.php b/utils/modules/events.php index 339102e..efba697 100644 --- a/utils/modules/events.php +++ b/utils/modules/events.php @@ -1,153 +1,177 @@  <?php -  include_once($UTIL_DIR . "/convert.php");  class Event { -	public $title; -	public $time; -	public $description; -	public $flyer; - -	public function show() -	{ -		$str = "<div class=\"event\">\n"; -		$str .= "  <div class=\"event_title\">" .  -			htmlspecialchars_decode($this->title, ENT_QUOTES) . "</div>\n"; -		$str .= "  <div class=\"event_time\">" . date("D M jS Y", $this->time) . "</div>\n"; -		$str .= "  <div class=\"event_description\">" .  -			htmlspecialchars_decode($this->description, ENT_QUOTES) . "</div>\n"; -		if($this->flyer) { -			$str .= "  <img class=\"event_flyer\" alt=\"flyer\" src=\"gfx/flyers/" . $this->flyer . "\"/>\n"; -		} -		$str .= "</div>\n"; -		return $str; -	} - -	public function Event($title, $time, $description, $flyer = "") -	{ -		$this->title = $title; -		$this->time = $time; -		$this->description = $description; -		$this->flyer = $flyer; -	} +  public $title; +  public $time; +  public $description; +  public $flyer; + +  public function show() +  { +    $str = "<div class=\"event\">\n"; +    $str .= "  <div class=\"event_title\">" .  +      htmlspecialchars_decode($this->title, ENT_QUOTES) . "</div>\n"; +    $str .= "  <div class=\"event_time\">" . date("D M jS Y", $this->time) . "</div>\n"; +    $str .= "  <div class=\"event_description\">" .  +      htmlspecialchars_decode($this->description, ENT_QUOTES) . "</div>\n"; +    if($this->flyer) { +      $str .= "  <img class=\"event_flyer\" alt=\"flyer\" src=\"gfx/flyers/" . $this->flyer . "\"/>\n"; +    } +    $str .= "</div>\n"; +    return $str; +  } + +  public function Event($title, $time, $description, $flyer = "") +  { +    $this->title = $title; +    $this->time = $time; +    $this->description = $description; +    $this->flyer = $flyer; +  }  }  class Events { -	private $file; -	private $events = array(); - -	public function run($params) -	{ -		foreach($params as $param) { -			switch($param) { -			case "coming": -				return $this->showcoming(-1); -				break; - -			case "old": -			default: -				return $this->showold(-1); -				break; -			} -		} -	} - -	public function showcoming($number) -	{ -		$str = ""; - -		$foundany = false; - -		// Key sort -		ksort($this->events); - -		// If number is -1 show all shows. -		if($number == -1) $number = 100000; +  private $file; +  private $events = array(); + +  // Admin config +  public $admin_title = "Events"; +  public $admin_submodules = array("New Event" => "new", +				   "Edit Event" => "edit", +				   "Delete Event" => "delete"); + +  public function admin($sub, $action, $vars) +  { +    switch($sub) { +    case "new": +      echo "New"; +      break; +    case "edit": +      echo "Edit"; +      break; +    case "delete": +      echo "Delete"; +      break; +    } +  } + +  public function run($params) +  { +    foreach($params as $param) { +      switch($param) { +      case "coming": +	return $this->showcoming(-1); +	break; + +      case "old": +      default: +	return $this->showold(-1); +	break; +      } +    } +  } + +  public function showcoming($number) +  { +    $str = ""; + +    $foundany = false; + +    // Key sort +    ksort($this->events); + +    // If number is -1 show all shows. +    if($number == -1) $number = 100000; -		foreach($this->events as $event) { -			if($event->time >= time()) { -				$foundany = true; -				$str .= $event->show(); -				$number--; -			} -			if(!$number) return $str; -		} - -		if($foundany == false) return "No shows available at the moment."; -		return $str; -	} - -	public function showold($number) -	{ -		$str = ""; - -		// Key sort -		krsort($this->events); - -		// If number is -1 show all shows. -		if($number == -1) $number = 100000; - -		foreach($this->events as $event) { -			if($event->time <= time()) { -				$str .= $event->show(); -				$number--; -			} -			if(!$number) return $str; -		} -		return $str; -	} +    foreach($this->events as $event) { +      if($event->time >= time()) { +	$foundany = true; +	$str .= $event->show(); +	$number--; +      } +      if(!$number) return $str; +    } + +    if($foundany == false) return "No shows available at the moment."; +    return $str; +  } + +  public function showold($number) +  { +    $str = ""; + +    // Key sort +    krsort($this->events); + +    // If number is -1 show all shows. +    if($number == -1) $number = 100000; + +    foreach($this->events as $event) { +      if($event->time <= time()) { +	$str .= $event->show(); +	$number--; +      } +      if(!$number) return $str; +    } +    return $str; +  } -	public function add($event) { -		$key = $event->time; -		//		array_push($this->events, $event); -		$this->events[$key] = $event; -	} +  public function add($event) { +    $key = $event->time; +    //		array_push($this->events, $event); +    $this->events[$key] = $event; +  } -	public function write() -	{ -		$fp = fopen($this->file, "w"); -		fwrite($fp, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); - -		fwrite($fp, "<events>\n"); -		foreach($this->events as $event) { -			fwrite($fp, "  <event title=\"" . -						 htmlspecialchars($event->title, ENT_QUOTES, "UTF-8") . "\"\n"); -			fwrite($fp, "         time=\"" . $event->time . "\"\n"); -			fwrite($fp, "         description=\"" . -						 htmlspecialchars($event->description, ENT_QUOTES, "UTF-8") . "\"\n"); -			fwrite($fp, "         flyer=\"" . $event->flyer . "\">\n"); -			fwrite($fp, "  </event>\n"); -		} -		fwrite($fp, "</events>\n"); - -		fclose($fp); -	} +  public function write() +  { +    $fp = fopen($this->file, "w"); +    fwrite($fp, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); + +    fwrite($fp, "<events>\n"); +    foreach($this->events as $event) { +      fwrite($fp, "  <event title=\"" . +	     htmlspecialchars($event->title, ENT_QUOTES, "UTF-8") . "\"\n"); +      fwrite($fp, "         time=\"" . $event->time . "\"\n"); +      fwrite($fp, "         description=\"" . +	     htmlspecialchars($event->description, ENT_QUOTES, "UTF-8") . "\"\n"); +      fwrite($fp, "         flyer=\"" . $event->flyer . "\">\n"); +      fwrite($fp, "  </event>\n"); +    } +    fwrite($fp, "</events>\n"); + +    fclose($fp); +  } -	private function read() -	{ - -		$dom = new DomDocument; -		$dom->preserveWhiteSpace = FALSE; -		$dom->load($this->file); -		$params = $dom->getElementsByTagName('event'); - -		foreach ($params as $param) { -			$event = new Event($param->getAttribute('title'), -												 $param->getAttribute('time'), -												 $param->getAttribute('description'), -												 $param->getAttribute('flyer')); -			$this->add($event); -		} -		 -	} +  private function read() +  { +    $dom = new DomDocument; +    $dom->preserveWhiteSpace = FALSE; +    $dom->load($this->file); +    $params = $dom->getElementsByTagName('event'); + +    foreach ($params as $param) { +      $event = new Event($param->getAttribute('title'), +			 $param->getAttribute('time'), +			 $param->getAttribute('description'), +			 $param->getAttribute('flyer')); +      $this->add($event); +    } +  } + +  public function Events($file) +  { +    $this->file =  $file; +    if(file_exists($file)) $this->read(); +  } -	public function Events($file) -	{ -		$this->file =  $file; -		if(file_exists($file)) $this->read(); -	} +} +function events_init() +{ +  global $DATA_DIR; +  return new Events($DATA_DIR . "/events.xml");  }  ?> diff --git a/utils/modules/news.php b/utils/modules/news.php index 22de6a0..2505ffb 100644 --- a/utils/modules/news.php +++ b/utils/modules/news.php @@ -1,119 +1,186 @@  <?php  include_once($UTIL_DIR . "/convert.php"); +include_once($UTIL_DIR . "/forms.php");  class NewsEntry { -	public $title; -	public $time; -	public $description; -	public $category; - -	public function show() -	{ -		$str = "<div class=\"news_entry\">\n"; -		$str .= "  <div class=\"news_title\">" . -			htmlspecialchars_decode($this->title, ENT_QUOTES) . "</div>\n"; -		$str .= "  <div class=\"news_time\">" . date("D M jS Y G:i", $this->time) . "</div>\n"; -		$str .= "  <div class=\"news_description\">" . -			htmlspecialchars_decode($this->description, ENT_QUOTES) . "</div>\n"; -		$str .= "</div>\n"; -		return $str; -	} - -	public function NewsEntry($title, $time, $category, $description) -	{ -		$this->title = $title; -		$this->time = $time; -		$this->category = $category; -		$this->description = $description; -	} +  public $title; +  public $time; +  public $description; +  public $category; + +  public function show() +  { +    $str = "<div class=\"news_entry\">\n"; +    $str .= "  <div class=\"news_title\">" . +      htmlspecialchars_decode($this->title, ENT_QUOTES) . "</div>\n"; +    $str .= "  <div class=\"news_time\">" . date("D M jS Y G:i", $this->time) . "</div>\n"; +    $str .= "  <div class=\"news_description\">" . +      htmlspecialchars_decode($this->description, ENT_QUOTES) . "</div>\n"; +    $str .= "</div>\n"; +    return $str; +  } + +  public function NewsEntry($title, $time, $category, $description) +  { +    $this->title = $title; +    $this->time = $time; +    $this->category = $category; +    $this->description = $description; +  }  }  class News { -	private $file; -	private $news = array(); - -	public function run($module) -	{ -		global $show; - -		switch($module) { -		case "news": -		default: -			if($show == "all") return $this->show(-1, "all"); -			else return $this->show(-1, "main"); -			break; -		} -	} - -	public function show($number, $category) -	{ -		$str = ""; - -		// If number is -1 show all shows. -		if($number == -1) $number = 100000; - -		foreach($this->news as $newsentry) { -			if($newsentry->category == $category || $category == "all") { +  private $file; +  private $news = array(); + +  // Admin config +  public $admin_title = "News"; +  public $admin_submodules = array("New Newsentry" => "new", +																	 "Edit Newsentry" => "edit", +																	 "Delete Newsentry" => "delete"); + +  public function admin($sub, $action, $vars) +  { +    switch($sub) { +    case "new": +      switch($action) { +      case "add": +				$n = new NewsEntry($vars["title"], totimestamp($vars, "time"), $vars["category"], $vars["description"]); +				$this->add($n); +				$this->write(); +				break; + +      case "preview": +				$n = new NewsEntry($vars["title"], totimestamp($vars, "time"), $vars["category"], $vars["description"]); +				echo "<div class=\"preview\">\n"; +				echo "<div class=\"content\">\n"; +				echo $n->show(); +				echo "</div>\n"; +				echo "</div>\n"; +				echo "<p>Looking ok?</p>"; +				beginform("add"); +				hidden($vars); +				button("yes"); +				endform(); +				beginform("retry"); +				hidden($vars); +				button("no"); +				endform(); +				break; +	 +      case "retry": +				$title = $vars["title"]; +				$time = totimestamp($vars, "time"); +				$category = $vars["category"]; +				$description = $vars["description"]; +      default: +				beginform("preview"); +				lineedit("Title", "title", $title); +				datetimeedit("Time", "time", $time); +				combobox("Category", "category", $category, array("Main" => "main", "Site" => "site")); +				textedit("Description", "description", $description); +				button("Post news"); +				endform(); +				break; +      } +      break; + +    case "edit": +      echo "Edit"; +      break; +    case "delete": +      echo "Delete"; +      break; +    } +  } + +  public function run($module) +  { +    global $show; + +    switch($module) { +    case "news": +    default: +      if($show == "all") return $this->show(-1, "all"); +      else return $this->show(-1, "main"); +      break; +    } +  } + +  public function show($number, $category) +  { +    $str = ""; + +    // If number is -1 show all shows. +    if($number == -1) $number = 100000; + +    foreach($this->news as $newsentry) { +      if($newsentry->category == $category || $category == "all") {  				$str .= $newsentry->show();  				$number--; -			} -			if(!$number) return $str; -		} -		return $str; -	} - -	public function add($newsentry) { -		$key = $newsentry->time; -		$this->news[$key] = $newsentry; -	} +      } +      if(!$number) return $str; +    } +    return $str; +  } + +  public function add($newsentry) { +    $key = $newsentry->time; +    $this->news[$key] = $newsentry; +  } -	public function write() -	{ -		$fp = fopen($this->file, "w"); -		fwrite($fp, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); - -		fwrite($fp, "<news>\n"); -		foreach($this->news as $newsentry) { -			fwrite($fp, "  <newsentry title=\"" . +  public function write() +  { +    $fp = fopen($this->file, "w"); +    fwrite($fp, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); + +    fwrite($fp, "<news>\n"); +    foreach($this->news as $newsentry) { +      fwrite($fp, "  <newsentry title=\"" .  						 htmlspecialchars($newsentry->title, ENT_QUOTES, "UTF-8") . "\"\n"); -			fwrite($fp, "             time=\"" . $newsentry->time . "\"\n"); -			fwrite($fp, "             category=\"" . $newsentry->category . "\"\n"); -			fwrite($fp, "             description=\"" . +      fwrite($fp, "             time=\"" . $newsentry->time . "\"\n"); +      fwrite($fp, "             category=\"" . $newsentry->category . "\"\n"); +      fwrite($fp, "             description=\"" .  						 htmlspecialchars($newsentry->description, ENT_QUOTES, "UTF-8") . "\">\n"); -			fwrite($fp, "  </newsentry>\n"); -		} -		fwrite($fp, "</news>\n"); +      fwrite($fp, "  </newsentry>\n"); +    } +    fwrite($fp, "</news>\n"); -		fclose($fp); -	} +    fclose($fp); +  } -	private function read() -	{ -		$dom = new DomDocument; -		$dom->preserveWhiteSpace = FALSE; -		$dom->load($this->file); -		$params = $dom->getElementsByTagName('newsentry'); - -		foreach ($params as $param) { -			$newsentry = new NewsEntry($param->getAttribute('title'), +  private function read() +  { +    $dom = new DomDocument; +    $dom->preserveWhiteSpace = FALSE; +    $dom->load($this->file); +    $params = $dom->getElementsByTagName('newsentry'); + +    foreach ($params as $param) { +      $newsentry = new NewsEntry($param->getAttribute('title'),  																 $param->getAttribute('time'),  																 $param->getAttribute('category'),  																 $param->getAttribute('description')); -			$this->add($newsentry); -		} +      $this->add($newsentry); +    } -		// Key sort -		krsort($this->news); -	} +    // Key sort +    krsort($this->news); +  } -	public function News($file) -	{ -		$this->file =  $file; -		if(file_exists($file)) $this->read(); -	} +  public function News($file) +  { +    $this->file =  $file; +    if(file_exists($file)) $this->read(); +  }  } +function news_init() +{ +  global $DATA_DIR; +  return new News($DATA_DIR . "/news.xml"); +}  ?>  | 
