private function get_shoutbox_message(HTTPRequestCustom $request) { $id = $request->get_int('id', 0); if (!empty($id)) { try { $this->shoutbox_message = ShoutboxService::get_message('WHERE id=:id', array('id' => $id)); } catch (RowNotFoundException $e) { } } }
private function get_message(HTTPRequestCustom $request) { $id = $request->get_getint('id', 0); if (!empty($id)) { try { return ShoutboxService::get_message('WHERE id=:id', array('id' => $id)); } catch (RowNotFoundException $e) { $error_controller = PHPBoostErrors::unexisting_page(); DispatchManager::redirect($error_controller); } } }
private function build_view() { $user_accounts_config = UserAccountsConfig::load(); $messages_number = ShoutboxService::count(); $page = AppContext::get_request()->get_getint('page', 1); $pagination = $this->get_pagination($messages_number, $page); $is_guest = !AppContext::get_current_user()->check_level(User::MEMBER_LEVEL); $result = PersistenceContext::get_querier()->select('SELECT member.*, shoutbox.*, ext_field.user_avatar FROM ' . ShoutboxSetup::$shoutbox_table . ' shoutbox LEFT JOIN ' . DB_TABLE_MEMBER . ' member ON member.user_id = shoutbox.user_id LEFT JOIN ' . DB_TABLE_MEMBER_EXTENDED_FIELDS . ' ext_field ON ext_field.user_id = member.user_id ORDER BY shoutbox.timestamp DESC LIMIT :number_items_per_page OFFSET :display_from', array('number_items_per_page' => $pagination->get_number_items_per_page(), 'display_from' => $pagination->get_display_from())); while ($row = $result->fetch()) { $message = new ShoutboxMessage(); $message->set_properties($row); //Avatar $user_avatar = !empty($row['user_avatar']) ? Url::to_rel($row['user_avatar']) : ($user_accounts_config->is_default_avatar_enabled() ? Url::to_rel('/templates/' . AppContext::get_current_user()->get_theme() . '/images/' . $user_accounts_config->get_default_avatar_name()) : ''); $this->view->assign_block_vars('messages', array_merge($message->get_array_tpl_vars($page), array('C_AVATAR' => $row['user_avatar'] || $user_accounts_config->is_default_avatar_enabled(), 'C_USER_GROUPS' => !empty($row['groups']), 'U_AVATAR' => $user_avatar))); //user's groups if ($message->get_author_user()->get_groups()) { $groups_cache = GroupsCache::load(); $user_groups = $message->get_author_user()->get_groups(); foreach ($user_groups as $user_group_id) { if ($groups_cache->group_exists($user_group_id)) { $group = $groups_cache->get_group($user_group_id); $this->view->assign_block_vars('messages.user_groups', array('C_GROUP_PICTURE' => !empty($group['img']), 'GROUP_PICTURE' => $group['img'], 'GROUP_NAME' => $group['name'])); } } } } $result->dispose(); $this->view->put_all(array('C_NO_MESSAGE' => $result->get_rows_count() == 0, 'C_PAGINATION' => $messages_number > ShoutboxConfig::load()->get_items_number_per_page(), 'PAGINATION' => $pagination->display())); if (ShoutboxAuthorizationsService::check_authorizations()->write() && !AppContext::get_current_user()->is_readonly()) { $this->view->put('FORM', ShoutboxFormController::get_view()); } else { $this->view->put('MSG', MessageHelper::display($this->lang['error.post.unauthorized'], MessageHelper::WARNING)); } return $this->view; }
public function execute(HTTPRequestCustom $request) { if ($this->check_authorizations()) { $pseudo = TextHelper::strprotect(utf8_decode($request->get_string('pseudo', ''))); $contents = TextHelper::htmlentities($request->get_string('contents', ''), ENT_COMPAT, 'UTF-8'); $contents = TextHelper::htmlspecialchars_decode(TextHelper::html_entity_decode($contents, ENT_COMPAT, 'windows-1252')); if ($pseudo && $contents) { //Mod anti-flood, autorisé aux membres qui bénificie de l'autorisation de flooder. $check_time = AppContext::get_current_user()->get_id() !== -1 && ContentManagementConfig::load()->is_anti_flood_enabled() ? PersistenceContext::get_querier()->get_column_value(PREFIX . "shoutbox", 'MAX(timestamp)', 'WHERE user_id = :id', array('id' => AppContext::get_current_user()->get_id())) : ''; if (!empty($check_time) && !AppContext::get_current_user()->check_max_value(AUTH_FLOOD)) { if ($check_time >= time() - ContentManagementConfig::load()->get_anti_flood_duration()) { $code = -1; } } //Vérifie que le message ne contient pas du flood de lien. $config_shoutbox = ShoutboxConfig::load(); $contents = FormatingHelper::strparse($contents, $config_shoutbox->get_forbidden_formatting_tags()); if (!TextHelper::check_nbr_links($contents, $config_shoutbox->get_max_links_number_per_message(), true)) { //Nombre de liens max dans le message. $code = -2; } $shoutbox_message = new ShoutboxMessage(); $shoutbox_message->init_default_properties(); $shoutbox_message->set_login($pseudo); $shoutbox_message->set_user_id(AppContext::get_current_user()->get_id()); $shoutbox_message->set_contents($contents); $shoutbox_message->set_creation_date(new Date()); $code = ShoutboxService::add($shoutbox_message); } else { $code = -3; } } else { $code = -4; } return new JSONResponse(array('code' => $code)); }
public static function __static() { self::$db_querier = PersistenceContext::get_querier(); }
private function save() { $message = $this->get_message(); if ($this->form->has_field('pseudo')) { $message->set_login($this->form->get_value('pseudo')); } $message->set_contents($this->form->get_value('contents')); if ($message->get_id() === null) { $message->set_creation_date(new Date()); $id_message = ShoutboxService::add($message); } else { $id_message = $message->get_id(); ShoutboxService::update($message); } return $id_message; }