app = JFactory::getApplication(); $this->params = JComponentHelper::getParams(SCOMPONENT); $this->post = $this->app->input->post; if (!class_exists('SmartShoutboxModelMain')) { require_once(JPATH_SITE.'/components/'.SCOMPONENT.'/models/main.php'); } $this->model = new SmartShoutboxModelMain(); parent::__construct($config); } public function display($cachable = false, $urlparams = false) { if (!$this->app->input->get('view', '', 'cmd')) { $this->app->input->set('view', 'chat'); } if ($this->params->get('license_result', '')) { $this->app->enqueueMessage($this->params->get('license_result'), 'error'); } parent::display($cachable, $urlparams); } public function cron() { $this->model->helper->cron($this->app->input->get('secret', 0, 'cmd')); jexit(); } public function getShouts($data = array()) { $data['shout_mode'] = $this->post->get('shout_mode', '', 'cmd'); $data['shout_task'] = $this->post->get('shout_task', '', 'cmd'); $data['lastshout'] = $this->post->get('lastshout', 0, 'int'); $data['category_id'] = $this->post->get('category_id', '', 'int'); $columns = $this->post->get('shoutcolumns', array(), 'array'); if ($data['shout_task'] == 'refresh') { $data['lastshout'] = 0; $this->model->syshelper->deleteCookie('lastshout'); } $result = $this->model->getShouts($data); if ($data['shout_mode'] != 'ajax') { return $result; } else { if (isset($result['shouts']) && !isset($result['error'])) { $result['shouts'] = array_reverse($this->displayShouts($result['shouts'], $columns)); } echo json_encode($result); } jexit(); } public function getShout() { $shout_id = $this->post->get('shout_id', 0, 'int'); $mode = $this->post->get('shout_mode', '', 'cmd'); echo json_encode($this->model->getShout($shout_id, $mode)); jexit(); } public function addShout() { if ($this->params->get('debug', 0)) { $fp = fopen(JPATH_SITE.'/components/'.SCOMPONENT.'/shouts.log', 'a+'); fwrite($fp, $this->post->get('author', '', 'string').": ".$this->post->get('message', '', 'raw')."\n"); fclose($fp); } $columns = $this->post->get('shoutcolumns', array(), 'array'); $data = array( 'lastshout' => $this->post->get('lastshout', 0, 'int'), 'category_id' => $this->post->get('category_id', 0, 'int'), 'author' => trim(strip_tags(htmlspecialchars($this->post->get('author', '', 'string')))), 'message' => $this->post->get('message', '', 'raw'), 'attachments' => $this->post->get('attachments', '', 'string')); $result = $this->model->addShout($data); if (isset($result['shouts']) && !isset($result['error'])) { $result['shouts'] = array_reverse($this->displayShouts($result['shouts'], $columns)); } echo json_encode($result); jexit(); } public function editShout() { $data = array( 'shout_id' => $this->post->get('shout_id', 0, 'int'), 'message' => $this->post->get('message', '', 'raw'), 'attachments' => $this->post->get('attachments', '', 'string')); echo json_encode($this->model->editShout($data)); jexit(); } public function displayShouts($shouts, $columns) { $result = array(); foreach ($shouts as $key => $shout) { ob_start(); echo $this->model->displayShout($shout, $columns, $key + 1); $result[] = array( 'id' => $shout['id'], 'category_id' => $shout['category_id'], 'shout' => str_replace(array("\r", "\n", "\t", "\v"), '', ob_get_contents())); ob_end_clean(); } return $result; } public function editAnnounce() { $data = array( 'target' => $this->post->get('target', 0, 'int'), 'announce' => $this->post->get('announce', '', 'raw')); echo json_encode($this->model->editAnnounce($data)); jexit(); } public function deleteShout() { $data = array( 'shout_id' => $this->post->get('shout_id', 0, 'int'), 'lastshout' => $this->post->get('lastshout', 0, 'int'), 'category_id' => $this->post->get('category_id', '', 'int')); echo json_encode($this->model->deleteShout($data)); jexit(); } public function likeShout() { echo json_encode($this->model->likeShout($this->post->get('shout_id', 0, 'int'))); jexit(); } public function toggleBan() { $shout_id = $this->post->get('shout_id', 0, 'int'); echo json_encode($this->model->toggleBan($shout_id)); jexit(); } public function upload() { if (!empty($_FILES['files']['name'][0])) { $json = $this->model->syshelper->processAttachments($_FILES['files'], $this->params->get('filetypes')); echo json_encode($json); } jexit(); } public function filterShouts() { $author = $this->app->getUserStateFromRequest('filter.author', 'filter_author', '', 'string'); $this->app->setUserState('filter.author', $author); $message = $this->app->getUserStateFromRequest('filter.message', 'filter_message', '', 'string'); $this->app->setUserState('filter.message', $message); $date = $this->app->getUserStateFromRequest('filter.date', 'filter_date'); if ($date && (DateTime::createFromFormat(JText::_(SSTR.'FILTER_DATE'), $date) === FALSE)) { if (strtotime($date) !== false) { $date = date(JText::_(SSTR.'FILTER_DATE'), strtotime($date)); } else { $date = ""; $this->app->enqueueMessage(JText::_(SSTR.'ERROR_DATE_INVALID'), 'error'); } } $this->app->setUserState('filter.date', $date); $limit = $this->app->getUserStateFromRequest('filter.limit', 'filter_limit', '50', 'uint'); $this->app->setUserState('filter.limit', $limit); $ordering = $this->app->getUserStateFromRequest('filter.ordering', 'filter_ordering', 'desc', 'cmd'); $this->app->setUserState('filter.ordering', $ordering); $uri = JUri::getInstance(); $uri->setVar('option', SCOMPONENT); $uri->setVar('view', 'chat'); $this->app->redirect(JRoute::_('index.php'.$uri->toString(array('query', 'fragment')), false)); } } ?>