News: Changed show()-code.
[AOOS.git] / modules / News / News.php
blobfa5e8cc126d88a5f833cde227db9463af82114cd
1 <?php
3 /**
4 * News-module
5 * @author Sebastian Skejø
6 */
8 class News extends AOOSModule
10 private $_view = null;
12 public function __construct($core) {
13 parent::__construct($core);
14 $view = new NewsView($this);
15 $view->connect("addNews", $this, "addNews", 1);
16 $this->_view = $view;
19 static public function dependencies() {
20 return array("Paginator", "Form", "Reciever");
23 public function dataModelDefinition() {
24 $m = new AOOSModel($this->core());
25 $m->setSource("mysql");
26 $m->setTable("News");
27 $m->setColumnIndex(array("author", "title", "date", "content", "id"));
28 $m->setProperties("id", AOOSMODEL_TYPE_INTEGER, 0, AOOSMODEL_FLAG_FROM_DATABASE|AOOSMODEL_FLAG_PRIMARY_KEY|AOOSMODEL_FLAG_GUI_PRIVATE);
29 $m->setProperties("author", AOOSMODEL_TYPE_STRING,
30 AOOSMODEL_PROP_ESCAPE|
31 AOOSMODEL_PROP_NOHTML|
32 AOOSMODEL_PROP_STRIP,
33 AOOSMODEL_FLAG_FROM_DATABASE);
34 $m->setProperties("title", AOOSMODEL_TYPE_STRING,
35 AOOSMODEL_PROP_ESCAPE|
36 AOOSMODEL_PROP_NOHTML|
37 AOOSMODEL_PROP_STRIP,
38 AOOSMODEL_FLAG_FROM_DATABASE);
39 $m->setProperties("date", AOOSMODEL_TYPE_INTEGER, AOOSMODEL_PROP_TIME,
40 AOOSMODEL_FLAG_FROM_DATABASE|AOOSMODEL_FLAG_GUI_PRIVATE);
41 $m->setProperties("content", AOOSMODEL_TYPE_TEXT,
42 AOOSMODEL_PROP_ESCAPE|
43 AOOSMODEL_PROP_NOHTML,
44 AOOSMODEL_FLAG_FROM_DATABASE);
45 return $m;
48 public function show() {
49 $this->dataModel()->resetData();
50 $this->dataModel()->populate(null, array("id", "DESC")); // Get all fields ordered descending by id
51 $p = $this->core()->getModule("Paginator");
52 switch($p->getOption(0)) {
53 case("add"):
54 return $this->_view->add();
55 break;
56 case("show"):
57 return $this->_view->show();
58 break;
59 default:
60 return $this->_view->noargs();
61 break;
65 public function addNews($news) {
66 $this->dataModel()->appendRow($news);
67 $this->dataModel()->save();
68 $this->emit("newsAdded", $news->title);
69 print "'".$news->title."' added!";
70 return true;
73 /**
74 * @param $newsid The news id
76 public function deleteNews($newsid) {
77 $this->dataModel()->remove($newsid);
78 $this->dataModel()->save();
79 $this->emit("newsDeleted", $newsid);
80 return true;
84 class NewsView extends AOOSModule {
85 static public function dependencies() {
86 return array("Form", "Reciever", "Paginator");
89 public function add() {
90 $f = $this->core()->getModule("Form")->getWidget("Form");
91 $r = $this->core()->getModule("Reciever");
92 $p = $this->core()->getModule("Paginator");
94 if ($row = $r->getRow("POST")) {
95 $this->emit("addNews", array($row));
98 $ignorecols = array("id");
99 $f->setAction($p->currentURL());
100 $f->setMethod("POST");
101 return $f->str($this->parent()->dataModel());
104 public function show() {
105 $p = $this->core()->getModule("Paginator");
106 $f = $this->core()->getModule("Form");
107 $l = $f->getWidget("List");
108 $modpath = $this->core()->getSetting("module_dir");
109 $l->setStyle(file_get_contents($modpath.'News/news_show.tmpl'));
110 return $l->strRow($this->parent()->dataModel()->find(array("id" => $p->getOption(1))));
113 public function noargs() {
114 $p = $this->core()->getModule("Paginator");
115 $f = $this->core()->getModule("Form");
116 $l = $f->getWidget("List");
117 $modpath = $this->core()->getSetting("module_dir");
118 $l->setStyle(file_get_contents($modpath.'News/news_default.tmpl'));
119 return $l->str($this->parent()->dataModel());
122 // vim: number