aboutsummaryrefslogtreecommitdiff
path: root/h-source/Application/Controllers/IssuesController.php
diff options
context:
space:
mode:
authorAntonio Gallo <tonicucoz@gmail.com>2010-10-17 13:29:57 +0000
committerAntonio Gallo <tonicucoz@gmail.com>2010-10-17 13:29:57 +0000
commit232aa1924c8c0f10d87b210b46c9f061af5c844c (patch)
tree2351f2aaff7ad244f60358954e4711692fb8aadc /h-source/Application/Controllers/IssuesController.php
parenta17e3e0495bee3705d3c1e5ead2db1a8359e64e9 (diff)
added files
Diffstat (limited to 'h-source/Application/Controllers/IssuesController.php')
-rw-r--r--h-source/Application/Controllers/IssuesController.php171
1 files changed, 171 insertions, 0 deletions
diff --git a/h-source/Application/Controllers/IssuesController.php b/h-source/Application/Controllers/IssuesController.php
new file mode 100644
index 0000000..02f6499
--- /dev/null
+++ b/h-source/Application/Controllers/IssuesController.php
@@ -0,0 +1,171 @@
+<?php
+
+// h-source, a web software to build a community of people that want to share their hardware information.
+// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+if (!defined('EG')) die('Direct access not allowed!');
+
+class IssuesController extends BaseController
+{
+
+ public function __construct($model, $controller, $queryString)
+ {
+
+ $this->_topMenuClasses['issues'] = " class='currentitem'";
+
+ parent::__construct($model, $controller, $queryString);
+
+ $this->model('IssuesModel');
+ $this->model('MessagesModel');
+
+ $argKeys = array(
+ 'page:forceNat' => 1,
+ 'token:sanitizeAlphanum' => 'token'
+ );
+
+ $this->setArgKeys($argKeys);
+
+ $this->m['IssuesModel']->setFields('title,topic,priority,message','sanitizeAll');
+
+ $data['title'] = 'issues - '.Website::$generalName;
+ $this->append($data);
+ }
+
+ public function viewall($lang = 'en')
+ {
+ $this->shift(1);
+
+ $data['preview_message'] = null;
+
+ if (isset($_POST['insertAction']))
+ {
+ if ($this->s['registered']->status['status'] === 'logged')
+ {
+ if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect('home/index'.$this->lang,2,'wrong token..');
+
+ //set the page to 1 in the viewStatus
+ $this->viewArgs['page'] = 1;
+ $this->buildStatus();
+
+ $this->m['IssuesModel']->values['created_by'] = (int)$this->s['registered']->status['id_user'];
+ $this->m['IssuesModel']->values['status'] = 'opened';
+
+ $this->m['IssuesModel']->updateTable('insert');
+ }
+ }
+
+ //if preview
+ if (isset($_POST['previewAction']))
+ {
+ if ($this->s['registered']->status['status'] === 'logged')
+ {
+ if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect('home/index'.$this->lang,2,'wrong token..');
+
+ $data['preview_message'] = $this->request->post('message','','sanitizeHtml');
+ $this->m['IssuesModel']->result = false;
+ }
+ }
+
+ $data['notice'] = $this->m['IssuesModel']->notice;
+
+ $this->m['IssuesModel']->setForm('issues/viewall/'.$this->lang.$this->viewStatus."#form",array('previewAction'=>'preview','insertAction'=>'submit'));
+
+ $values = $this->m['IssuesModel']->getFormValues('insert','sanitizeHtml');
+
+ $data['form'] = $this->m['IssuesModel']->form->render($values);
+
+ //load the Pages helper
+ $this->helper('Pages',$this->controller.'/viewall/'.$this->lang,'page');
+ //get the number of records
+ $this->m['IssuesModel']->from('issues left join messages')->using('id_issue')->aWhere(array('deleted'=>'no'))->groupBy('issues.id_issue');
+
+ $recordNumber = $this->m['IssuesModel']->rowNumber();
+ $page = $this->viewArgs['page'];
+ //set the limit clause
+ $this->m['IssuesModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,20);
+// $data['table'] = $this->m['IssuesModel']->getFields('id_issue,created_by,title,status,creation_date,topic,priority');
+ $data['table'] = $this->m['IssuesModel']->getFields('issues.*,messages.message,count(*) as numb_mess');
+
+ $data['pageList'] = $this->h['Pages']->render($page-3,7);
+
+ $this->append($data);
+ $this->load('viewall');
+ $this->right();
+ }
+
+ public function view($lang = 'en', $id_issue = 0)
+ {
+ $this->m['MessagesModel']->setFields('message','sanitizeAll');
+
+ $this->shift(2);
+
+ $clean['id_issue'] = (int)$id_issue;
+ $data['id_issue'] = $clean['id_issue'];
+ $data['preview_message'] = null;
+
+ //if submit
+ if (isset($_POST['insertAction']))
+ {
+ if ($this->s['registered']->status['status'] === 'logged')
+ {
+ if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect('home/index'.$this->lang,2,'wrong token..');
+
+ $this->m['MessagesModel']->values['created_by'] = (int)$this->s['registered']->status['id_user'];
+ $this->m['MessagesModel']->values['id_issue'] = $clean['id_issue'];
+ $this->m['MessagesModel']->updateTable('insert');
+ }
+ }
+
+ //if preview
+ if (isset($_POST['previewAction']))
+ {
+ if ($this->s['registered']->status['status'] === 'logged')
+ {
+ if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect('home/index'.$this->lang,2,'wrong token..');
+
+ $data['preview_message'] = $this->request->post('message','','sanitizeHtml');
+ $this->m['MessagesModel']->result = false;
+ }
+ }
+
+ $data['notice'] = $this->m['MessagesModel']->notice;
+
+ //create the form
+ $this->m['MessagesModel']->setForm('issues/view/'.$this->lang."/".$clean['id_issue'].$this->viewStatus."#form",array('previewAction'=>'preview','insertAction'=>'submit'));
+
+ $values = $this->m['MessagesModel']->getFormValues('insert','sanitizeHtml');
+
+ $data['form'] = $this->m['MessagesModel']->form->render($values);
+
+ //retrieve the values from the table
+ $data['table'] = $this->m['IssuesModel']->select('id_issue,created_by,title,status,creation_date,topic,priority,message,notice')->where(array('id_issue'=>$clean['id_issue'],'deleted'=>'no'))->send();
+
+// javascript for moderator
+ $data['md_javascript'] = "moderator_dialog(\"hide\",\"message\");moderator_dialog(\"show\",\"message\");";
+ $data['go_to'] = $this->currPage."/".$this->lang."/".$clean['id_issue'];
+
+ if (count($data['table']) > 0)
+ {
+ $data['messages'] = $this->m['MessagesModel']->select()->where(array('id_issue'=>$clean['id_issue']))->send();
+
+ $this->append($data);
+ $this->load('view');
+ $this->load('moderator_dialog');
+ $this->right();
+ }
+ }
+
+} \ No newline at end of file