private function build_table() { $table_model = new HTMLTableModel('table', array(new HTMLTableColumn($this->lang['smiley']), new HTMLTableColumn(LangLoader::get_message('code', 'main')), new HTMLTableColumn('')), new HTMLTableSortingRule(''), HTMLTableModel::NO_PAGINATION); $table = new HTMLTable($table_model); $table_model->set_caption($this->lang['smiley_management']); $results = array(); foreach (SmileysCache::load()->get_smileys() as $code => $row) { $edit_link = new LinkHTMLElement(AdminSmileysUrlBuilder::edit($row['idsmiley']), '', array('title' => LangLoader::get_message('edit', 'common')), 'fa fa-edit'); $delete_link = new LinkHTMLElement(AdminSmileysUrlBuilder::delete($row['idsmiley']), '', array('title' => LangLoader::get_message('delete', 'common'), 'data-confirmation' => 'delete-element'), 'fa fa-delete'); $results[] = new HTMLTableRow(array(new HTMLTableRowCell(new ImgHTMLElement(Url::to_rel('/images/smileys/') . $row['url_smiley'], array('id' => 'smiley-' . $row['idsmiley'] . '-img', 'alt' => ''))), new HTMLTableRowCell($code), new HTMLTableRowCell($edit_link->display() . $delete_link->display()))); } $table->set_rows(count($results), $results); $this->view->put('table', $table->display()); }
/** * @desc Unparse the smiley's code of the content of the parser. * Replace the HTML code by the smiley code (for instance :) or :|) */ protected function unparse_smilies() { //Smilies $smileys_cache = SmileysCache::load()->get_smileys(); if (!empty($smileys_cache)) { //Création du tableau de remplacement foreach ($smileys_cache as $code => $infos) { $smiley_img_url[] = '`<img src="([^"]+)?/images/smileys/' . preg_quote($infos['url_smiley']) . '(.*) />`sU'; $smiley_code[] = $code; } $this->content = preg_replace($smiley_img_url, $smiley_code, $this->content); foreach ($smileys_cache as $code => $infos) { $smiley_img_url[] = '`<img class="smiley" title="' . preg_quote($code) . '"(.*) />`sU'; $smiley_code[] = $code; } $this->content = preg_replace($smiley_img_url, $smiley_code, $this->content); } }
public function get_menu_content() { //Create file template $tpl = new FileTemplate('shoutbox/ShoutboxModuleMiniMenu.tpl'); //Assign the lang file to the tpl $tpl->add_lang(LangLoader::get('common', 'shoutbox')); $config = ShoutboxConfig::load(); $forbidden_tags = array_flip($config->get_forbidden_formatting_tags()); if ($config->is_shout_bbcode_enabled()) { $smileys_cache = SmileysCache::load(); $smileys_per_line = 5; //Smileys par ligne. $smileys_displayed_number = 0; foreach ($smileys_cache->get_smileys() as $code_smile => $infos) { $smileys_displayed_number++; $tpl->assign_block_vars('smileys', array('C_END_LINE' => $smileys_displayed_number % $smileys_per_line == 0, 'URL' => TPL_PATH_TO_ROOT . '/images/smileys/' . $infos['url_smiley'], 'CODE' => addslashes($code_smile))); } } $tpl->put_all(array('C_MEMBER' => AppContext::get_current_user()->check_level(User::MEMBER_LEVEL), 'C_DISPLAY_FORM' => ShoutboxAuthorizationsService::check_authorizations()->write() && !AppContext::get_current_user()->is_readonly(), 'C_VALIDATE_ONKEYPRESS_ENTER' => $config->is_validation_onkeypress_enter_enabled(), 'C_DISPLAY_SHOUT_BBCODE' => ModulesManager::is_module_installed('BBCode') && $config->is_shout_bbcode_enabled(), 'C_BOLD_DISABLED' => isset($forbidden_tags['b']), 'C_ITALIC_DISABLED' => isset($forbidden_tags['i']), 'C_UNDERLINE_DISABLED' => isset($forbidden_tags['u']), 'C_STRIKE_DISABLED' => isset($forbidden_tags['s']), 'C_AUTOMATIC_REFRESH_ENABLED' => $config->is_automatic_refresh_enabled(), 'SHOUTBOX_PSEUDO' => AppContext::get_current_user()->get_display_name(), 'SHOUT_REFRESH_DELAY' => $config->get_refresh_delay(), 'L_ALERT_LINK_FLOOD' => sprintf(LangLoader::get_message('e_l_flood', 'errors'), $config->get_max_links_number_per_message()), 'SHOUTBOX_MESSAGES' => ShoutboxAjaxRefreshMessagesController::get_view())); return $tpl->render(); }
/** * @desc Display the editor * @return string Formated editor. */ public function display() { global $LANG; $template = $this->get_template(); $smileys_cache = SmileysCache::load(); $bbcode_lang = LangLoader::get('common', 'BBCode'); $template->put_all(array('PAGE_PATH' => $_SERVER['PHP_SELF'], 'C_EDITOR_NOT_ALREADY_INCLUDED' => !self::$editor_already_included, 'FIELD' => $this->identifier, 'FORBIDDEN_TAGS' => !empty($this->forbidden_tags) ? implode(',', $this->forbidden_tags) : '', 'C_UPLOAD_MANAGEMENT' => AppContext::get_current_user()->check_auth(FileUploadConfig::load()->get_authorization_enable_interface_files(), FileUploadConfig::AUTH_FILES_BIT), 'L_REQUIRE_TEXT' => $LANG['require_text'], 'L_BB_UPLOAD' => $bbcode_lang['bb_upload'], 'L_BB_SMILEYS' => $bbcode_lang['bb_smileys'], 'L_BB_BOLD' => $bbcode_lang['bb_bold'], 'L_BB_ITALIC' => $bbcode_lang['bb_italic'], 'L_BB_UNDERLINE' => $bbcode_lang['bb_underline'], 'L_BB_STRIKE' => $bbcode_lang['bb_strike'], 'L_BB_TITLE' => $bbcode_lang['bb_title'], 'L_BB_CONTAINER' => $bbcode_lang['bb_container'], 'L_BB_HTML' => $bbcode_lang['bb_html'], 'L_BB_STYLE' => $bbcode_lang['bb_style'], 'L_BB_URL' => $bbcode_lang['bb_link'], 'L_BB_IMAGE' => $bbcode_lang['bb_picture'], 'L_BB_LIGHTBOX' => $bbcode_lang['bb_lightbox'], 'L_BB_QUOTE' => $bbcode_lang['bb_quote'], 'L_BB_HIDE' => $bbcode_lang['bb_hide'], 'L_BB_COLOR' => $bbcode_lang['bb_color'], 'L_BB_SIZE' => $bbcode_lang['bb_size'], 'L_BB_FONT' => $bbcode_lang['bb_font'], 'L_BB_SMALL' => $bbcode_lang['bb_small'], 'L_BB_LARGE' => $bbcode_lang['bb_large'], 'L_BB_LEFT' => $bbcode_lang['bb_left'], 'L_BB_CENTER' => $bbcode_lang['bb_center'], 'L_BB_RIGHT' => $bbcode_lang['bb_right'], 'L_BB_JUSTIFY' => $bbcode_lang['bb_justify'], 'L_BB_FLOAT_LEFT' => $bbcode_lang['bb_float_left'], 'L_BB_FLOAT_RIGHT' => $bbcode_lang['bb_float_right'], 'L_BB_SUP' => $bbcode_lang['bb_sup'], 'L_BB_SUB' => $bbcode_lang['bb_sub'], 'L_BB_INDENT' => $bbcode_lang['bb_indent'], 'L_BB_LIST' => $bbcode_lang['bb_list'], 'L_BB_TABLE' => $bbcode_lang['bb_table'], 'L_BB_SWF' => $bbcode_lang['bb_swf'], 'L_BB_YOUTUBE' => $bbcode_lang['bb_youtube'], 'L_BB_FLASH' => $bbcode_lang['bb_swf'], 'L_BB_MOVIE' => $bbcode_lang['bb_movie'], 'L_BB_SOUND' => $bbcode_lang['bb_sound'], 'L_BB_CODE' => $bbcode_lang['bb_code'], 'L_BB_MATH' => $bbcode_lang['bb_math'], 'L_BB_ANCHOR' => $bbcode_lang['bb_anchor'], 'L_BB_HELP' => $bbcode_lang['bb_help'], 'L_BB_MORE' => $bbcode_lang['bb_more'], 'L_URL_PROMPT' => $bbcode_lang['bb_url_prompt'], 'L_ANCHOR_PROMPT' => $bbcode_lang['bb_anchor_prompt'], 'L_TITLE' => LangLoader::get_message('format_title', 'editor-common'), 'L_CONTAINER' => $bbcode_lang['bb_container'], 'L_BLOCK' => $bbcode_lang['bb_block'], 'L_FIELDSET' => $bbcode_lang['bb_fieldset'], 'L_STYLE' => $LANG['style'], 'L_QUESTION' => $LANG['question'], 'L_NOTICE' => $LANG['notice'], 'L_WARNING' => $LANG['warning'], 'L_ERROR' => LangLoader::get_message('error', 'status-messages-common'), 'L_SUCCESS' => $LANG['success'], 'L_SIZE' => LangLoader::get_message('format_size', 'editor-common'), 'L_FONT' => LangLoader::get_message('format_font', 'editor-common'), 'L_CODE' => $bbcode_lang['bb_code'], 'L_TEXT' => $bbcode_lang['bb_text'], 'L_SCRIPT' => $bbcode_lang['bb_script'], 'L_WEB' => $bbcode_lang['bb_web'], 'L_PROG' => $bbcode_lang['bb_prog'], 'L_TABLE_HEAD' => $bbcode_lang['head_table'], 'L_ADD_HEAD' => $bbcode_lang['head_add'], 'L_LINES' => $bbcode_lang['lines'], 'L_COLS' => $bbcode_lang['cols'], 'L_ORDERED_LIST' => $bbcode_lang['ordered_list'], 'L_INSERT_LIST' => $bbcode_lang['insert_list'], 'L_INSERT_TABLE' => $bbcode_lang['insert_table'], 'L_PHPBOOST_LANGUAGES' => $bbcode_lang['phpboost_languages'])); foreach ($this->forbidden_tags as $forbidden_tag) { if ($forbidden_tag == 'fieldset') { $forbidden_tag = 'block'; } $template->put_all(array('AUTH_' . strtoupper($forbidden_tag) => 'style="opacity:0.3;filter:alpha(opacity=30);cursor:default;"', 'DISABLED_' . strtoupper($forbidden_tag) => 'return false;')); } foreach ($smileys_cache->get_smileys() as $code_smile => $infos) { $template->assign_block_vars('smileys', array('URL' => TPL_PATH_TO_ROOT . '/images/smileys/' . $infos['url_smiley'], 'CODE' => addslashes($code_smile))); } $template->put_all(array('L_SMILEY' => $LANG['smiley'])); if (!self::$editor_already_included) { self::$editor_already_included = true; } return $template->render(); }
/** * @desc Replaces the smiley's code by the corresponding HTML image tag */ protected function parse_smilies() { $smileys_cache = SmileysCache::load()->get_smileys(); if (!empty($smileys_cache)) { //Création du tableau de remplacement. foreach ($smileys_cache as $code => $infos) { $smiley_code[] = '`(?:(?![a-z0-9]))(?<!&[a-z]{4}|&[a-z]{5}|&[a-z]{6}|")(' . preg_quote($code) . ')(?:(?![a-z0-9]))`'; $smiley_img_url[] = '<img src="/images/smileys/' . $infos['url_smiley'] . '" alt="' . addslashes($code) . '" class="smiley" />'; } $this->content = preg_replace($smiley_code, $smiley_img_url, $this->content); } }
/** * @desc Parses the smilies: it replaces their codes by the associated image. * For instance :) will become <img src="urlImage" alt=".." ... /> */ private function parse_smilies() { $this->content = preg_replace('`<img(?: class="smiley")? title="([^"]+)" src="(.+)/images/smileys/([^"]+)" alt="" />`i', '<img src="/images/smileys/$3" title="$1" alt="$1" class="smiley" />', $this->content); $this->content = preg_replace('`<img(?: class="smiley")? title="([^"]+)" src="(.+)/images/smileys/([^"]+)"(?: alt="([^"]+)")? />`i', '<img src="/images/smileys/$3" title="$1" alt="$1" class="smiley" />', $this->content); $this->content = preg_replace('`<img class="smiley" src="(.+)/images/smileys/([^"]+)" alt="([^"]+)" />`i', '<img src="/images/smileys/$2" title="$3" alt="$3" class="smiley" />', $this->content); //Smilies $smileys_cache = SmileysCache::load()->get_smileys(); if (!empty($smileys_cache)) { //Création du tableau de remplacement. foreach ($smileys_cache as $code => $infos) { $smiley_code[] = '`(?:(?![a-z0-9]))(?<!&[a-z]{4}|&[a-z]{5}|&[a-z]{6}|")(' . str_replace('\'', '\\\\\\\'', preg_quote($code)) . ')(?:(?![a-z0-9]))`'; $smiley_img_url[] = '<img src="/images/smileys/' . $infos['url_smiley'] . '" alt="' . addslashes($code) . '" class="smiley" />'; } $this->content = preg_replace($smiley_code, $smiley_img_url, $this->content); } }
/** * @desc Display the editor * @return string Formated editor. */ public function display() { $template = $this->get_template(); $displayed_icons_number = 0; list($toolbar1, $toolbar2, $toolbar3) = array('', '', ''); foreach ($this->array_tags as $tag => $tinymce_tag) { $tag = preg_replace('`[0-9]`', '', $tag); if (!in_array($tag, $this->forbidden_tags)) { $toolbar1 .= $tinymce_tag . ','; $displayed_icons_number++; } } foreach ($this->array_tags2 as $tag => $tinymce_tag) { $tag = preg_replace('`[0-9]`', '', $tag); if (!in_array($tag, $this->forbidden_tags)) { if ($displayed_icons_number < 18) { $toolbar1 .= $tinymce_tag . ','; } else { $toolbar2 .= $tinymce_tag . ','; } $displayed_icons_number++; } } foreach ($this->array_tags3 as $tag => $tinymce_tag) { $tag = preg_replace('`[0-9]`', '', $tag); if (!in_array($tag, $this->forbidden_tags)) { if ($tag != 'insertfile' || $tag == 'insertfile' && AppContext::get_current_user()->check_auth(FileUploadConfig::load()->get_authorization_enable_interface_files(), FileUploadConfig::AUTH_FILES_BIT)) { if ($displayed_icons_number < 25) { $toolbar1 .= $tinymce_tag . ','; } else { if ($displayed_icons_number < 35) { $toolbar2 .= $tinymce_tag . ','; } else { $toolbar3 .= $tinymce_tag . ','; } } $displayed_icons_number++; } } } $language = substr(AppContext::get_current_user()->get_locale(), 0, 2); switch ($language) { case 'fr': $language = 'fr_FR'; break; case 'en': $language = 'en_GB'; break; default: break; } $form_field_infos = explode('_', $this->identifier); $form_name = $form_field_infos[0]; unset($form_field_infos[0]); $field_name = implode('_', $form_field_infos); $template->put_all(array('C_NOT_JS_INCLUDED' => self::$js_included, 'C_HTMLFORM' => !empty($form_name) && !empty($field_name), 'PAGE_PATH' => $_SERVER['PHP_SELF'], 'FIELD' => $this->identifier, 'FORM_NAME' => $form_name, 'FIELD_NAME' => $field_name, 'FORBIDDEN_TAGS' => implode(',', $this->forbidden_tags), 'L_REQUIRE_TEXT' => LangLoader::get_message('require_text', 'main'), 'C_TOOLBAR1' => !empty($toolbar1), 'C_TOOLBAR2' => !empty($toolbar2), 'C_TOOLBAR3' => !empty($toolbar3), 'TOOLBAR1' => preg_replace('`\\|(,\\|)+`', '|', trim($toolbar1, ',')), 'TOOLBAR2' => preg_replace('`\\|(,\\|)+`', '|', trim($toolbar2, ',')), 'TOOLBAR3' => preg_replace('`\\|(,\\|)+`', '|', trim($toolbar3, ',')), 'LANGUAGE' => $language)); self::$js_included = true; //Chargement des smileys. $smileys = SmileysCache::load()->get_smileys(); $smile_by_line = 9; $nbr_smile = count($smileys); $j = 1; foreach ($smileys as $code_smile => $infos) { $template->assign_block_vars('smiley', array('C_NEW_ROW' => is_int(($j - 1) / $smile_by_line), 'C_LAST_OF_THE_ROW' => is_int($j / $smile_by_line), 'C_END_ROW' => is_int($j / $smile_by_line) || $nbr_smile == $j, 'C_LAST_ROW' => $nbr_smile == $j, 'URL' => Url::to_rel('/images/smileys/' . $infos['url_smiley']), 'CODE' => addslashes($code_smile))); $j++; } return $template->render(); }