本文整理汇总了PHP中TikiLib::htmldecode方法的典型用法代码示例。如果您正苦于以下问题:PHP TikiLib::htmldecode方法的具体用法?PHP TikiLib::htmldecode怎么用?PHP TikiLib::htmldecode使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TikiLib
的用法示例。
在下文中一共展示了TikiLib::htmldecode方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: get_content_from_page
/**
* @param $page
* @param null $lang
* @return string
*/
private function get_content_from_page($page, $lang = null)
{
global $prefs;
$info = $this->get_page_info($page);
if ($prefs['feature_multilingual'] == 'y') {
$multilinguallib = TikiLib::lib('multilingual');
if ($lang && $info['lang'] && $lang != $info['lang']) {
$bestLangPageId = $multilinguallib->selectLangObj('wiki page', $info['page_id'], $lang);
if ($info['page_id'] != $bestLangPageId) {
$info = $this->get_page_info_from_id($bestLangPageId);
}
}
}
if ($info) {
return TikiLib::htmldecode($info['data']);
}
}
示例2: smarty_modifier_htmldecode
function smarty_modifier_htmldecode($s)
{
return TikiLib::htmldecode($s);
}
示例3: tra
$info = $tikilib->get_page_info($_REQUEST['page']);
if (empty($info)) {
$smarty->assign('msg', tra("Page cannot be found"));
$smarty->display("error.tpl");
die;
}
$name = $_REQUEST['page'];
$type = "wiki page";
$objId = $info['page_id'];
$langpage = $info['lang'];
$fullLangName = $langmapping[$langpage][0];
$smarty->assign('languageName', $fullLangName);
$cat_type = 'wiki page';
$cat_objid = $name;
$edit_data = $info['data'];
$smarty->assign('pagedata', TikiLib::htmldecode($edit_data));
if ($prefs['feature_translation_incomplete_notice'] == 'y') {
$smarty->assign('translate_message', "^" . tra("Translation of this page is incomplete.") . "^\n\n");
}
} else {
if ($_REQUEST['id']) {
$smarty->assign('msg', tra("Only wiki pages are supported."));
$smarty->display("error.tpl");
die;
}
}
$smarty->assign('name', $name);
$smarty->assign('type', $type);
$smarty->assign('id', $objId);
include_once 'categorize_list.php';
if (isset($_REQUEST['langpage']) && !empty($_REQUEST['langpage']) && $_REQUEST['langpage'] != "NULL" && $langpage != $_REQUEST['langpage']) {
示例4: header
header("location: tiki-view_blog.php?blogId={$blogId}");
die;
}
$parsed_data = $tikilib->apply_postedit_handlers($edit_data);
$parsed_data = $tikilib->parse_data($parsed_data);
$smarty->assign('data', TikiLib::htmldecode($edit_data));
if ($prefs['feature_freetags'] == 'y') {
$smarty->assign('taglist', $_REQUEST["freetag_string"]);
}
$smarty->assign('title', isset($_REQUEST["title"]) ? $_REQUEST['title'] : '');
$smarty->assign('parsed_data', $parsed_data);
}
if ($contribution_needed) {
$smarty->assign('title', $_REQUEST["title"]);
$smarty->assign('parsed_data', $tikilib->parse_data($_REQUEST['data']));
$smarty->assign('data', TikiLib::htmldecode($_REQUEST['data']));
if ($prefs['feature_freetags'] == 'y') {
$smarty->assign('taglist', $_REQUEST["freetag_string"]);
}
}
if ($tiki_p_blog_admin == 'y') {
$blogsd = $bloglib->list_blogs(0, -1, 'created_desc', '');
$blogs = $blogsd['data'];
} else {
$blogs = $bloglib->list_blogs_user_can_post($user);
}
if (count($blogs) == 0) {
$smarty->assign('msg', tra("You can't post in any blog maybe you have to create a blog first"));
$smarty->display("error.tpl");
die;
}
示例5: wikiplugin_rss
function wikiplugin_rss($data, $params)
{
global $smarty;
global $tikilib;
global $dbTiki;
global $rsslib;
if (!isset($rsslib)) {
include_once 'lib/rss/rsslib.php';
}
extract($params, EXTR_SKIP);
if (!isset($max)) {
$max = '10';
}
if (!isset($id)) {
return tra('You need to specify a RSS Id');
}
if (!isset($date)) {
$date = 0;
}
if (!isset($desc)) {
$desc = 0;
}
if (!isset($author)) {
$author = 0;
}
$ids = explode(':', $id);
$repl = '';
$items = array();
foreach ($ids as $val) {
if (!($rssdata = $rsslib->get_rss_module_content($val))) {
$repl = tra('RSS Id incorrect:') . ' ' . $val;
}
$itemsrss = $rsslib->parse_rss_data($rssdata, $val);
$items = array_merge($items, $itemsrss);
}
if (isset($items[0]) && $items[0]['isTitle'] == 'y') {
$repl .= '<div class="wiki"><a target="_blank" href="' . $items[0]['link'] . '">' . TikiLib::htmldecode($items[0]['title']) . '</a></div><br />';
$items = array_slice($items, 1);
}
usort($items, 'rss_sort');
if (count($ids) > 1) {
$items = array_slice($items, count($ids));
}
if (count($items) < $max) {
$max = count($items);
}
$repl .= '<table class="normal">';
for ($j = 0; $j < $max; $j++) {
$repl .= '<tr><td class="heading"><a class="tableheading" target="_blank" href="' . $items[$j]['link'] . '"><b>' . TikiLib::htmldecode($items[$j]['title']) . '</b></a>';
if ($author == 1 || $date == 1) {
$repl_author = '';
if ($author == 1 && isset($items[$j]['author']) && $items[$j]['author'] != '') {
$repl_author .= $items[$j]['author'];
if ($date == 1) {
$repl_author .= ', ';
}
}
if ($date == 1 && isset($items[$j]['pubDate']) && $items[$j]['pubDate'] != '') {
$repl_author .= '' . $items[$j]['pubDate'];
}
if ($repl_author != '') {
$repl .= ' (' . $repl_author . ')';
}
}
$repl .= '</td></tr>';
if ($desc == 1) {
$repl .= '<tr><td class="even" colspan="2">' . TikiLib::htmldecode($items[$j]['description']) . '</td></tr>';
$repl .= '</tr>';
}
if ($desc > 1) {
$repl .= '<tr><td class="even" colspan="2">' . substr(strip_tags(TikiLib::htmldecode($items[$j]['description'])), 0, $desc) . ' <a class="wiki" href="' . $items[$j]['link'] . '">[[...]</a></td></tr>';
$repl .= '</tr>';
}
}
$repl .= '</table>';
return $repl;
}
示例6:
include_once ('lib/freetag/freetaglib.php');
$post_info['freetags'] = $freetaglib->get_tags_on_object($postId, "blog post");
if ($blog_data['show_related'] == 'y' && !empty($post_info['freetags'])) {
$post_info['related_posts'] = $bloglib->get_related_posts($postId, $blog_data['related_max']);
}
}
if ($prefs['feature_categories'] == 'y') {
$cat_type = 'blog post';
$cat_objid = $postId;
require_once('categorize_list.php');
}
$smarty->assign('ownsblog', $ownsblog);
if ($post_info['wysiwyg'] !== 'y') {
$post_info['data'] = TikiLib::htmldecode($post_info['data']);
}
$smarty->assign('postId', $postId);
$smarty->assign('blog_data', $blog_data);
$smarty->assign('blogId', $blogId);
$smarty->assign('headtitle', $post_info['title'] . ' : ' . $blog_data['title']);
$smarty->assign('title', $post_info['title'] . ' : ' . $blog_data['title']);
if (!isset($_REQUEST['offset'])) $_REQUEST['offset'] = 0;
if (!isset($_REQUEST['sort_mode'])) $_REQUEST['sort_mode'] = 'created_desc';
if (!isset($_REQUEST['find'])) $_REQUEST['find'] = '';
$smarty->assign('offset', $_REQUEST["offset"]);
$smarty->assign('sort_mode', $_REQUEST["sort_mode"]);
$smarty->assign('find', $_REQUEST["find"]);
$offset = $_REQUEST["offset"];
$sort_mode = $_REQUEST["sort_mode"];
$find = $_REQUEST["find"];
示例7: applyFilters
private function applyFilters()
{
global $tikilib;
$default = TikiFilter::get(isset($this->info['defaultfilter']) ? $this->info['defaultfilter'] : 'xss');
// Apply filters on the body
$filter = isset($this->info['filter']) ? TikiFilter::get($this->info['filter']) : $default;
$this->body = $filter->filter($this->body);
if (!$this->parser->getOption('is_html')) {
$noparsed = array('data' => array(), 'key' => array());
//$this->striUnparsedBlock($this->body, $noparsed);
$body = str_replace(array('<', '>'), array('<', '>'), $this->body);
foreach ($noparsed['data'] as &$instance) {
$instance = '~np~' . $instance . '~/np~';
}
unset($instance);
$this->body = str_replace($noparsed['key'], $noparsed['data'], $body);
}
// Make sure all arguments are declared
$params =& $this->info['params'];
if (!isset($this->info['extraparams']) && is_array($params)) {
$this->args = array_intersect_key($this->args, $params);
}
// Apply filters on values individually
if (!empty($this->args)) {
foreach ($this->args as $argKey => &$argValue) {
$paramInfo = $params[$argKey];
$filter = isset($paramInfo['filter']) ? TikiFilter::get($paramInfo['filter']) : $default;
$argValue = TikiLib::htmldecode($argValue);
if (isset($paramInfo['separator'])) {
$vals = $tikilib->array_apply_filter($tikilib->multi_explode($paramInfo['separator'], $argValue), $filter);
$argValue = array_values($vals);
} else {
$argValue = $filter->filter($argValue);
}
}
}
}
示例8: get_template_from_page
/**
* @param $page
* @param $lang
* @return string
*/
private function get_template_from_page($page, $lang)
{
global $prefs;
$info = $this->get_page_info($page);
if ($prefs['feature_multilingual'] == 'y') {
global $multilinguallib;
require_once 'lib/multilingual/multilinguallib.php';
if ($lang && $info['lang'] && $lang != $info['lang']) {
$bestLangPageId = $multilinguallib->selectLangObj('wiki page', $info['page_id'], $lang);
if ($info['page_id'] != $bestLangPageId) {
$info = $this->get_page_info_from_id($bestLangPageId);
}
}
}
if ($info) {
return TikiLib::htmldecode($info['data']);
}
}
示例9: sendWikiEmailNotification
/** \brief send the email notifications dealing with wiki page changes to
* admin notification addresses + watching users addresses (except editor is configured)
* \$event: 'wiki_page_created'|'wiki_page_changed'
*/
function sendWikiEmailNotification($event, $pageName, $edit_user, $edit_comment, $oldver, $edit_data, $machine, $diff = '', $minor = false, $contributions = '', $structure_parent_id = 0)
{
global $tikilib, $prefs, $smarty, $userlib;
global $notificationlib;
include_once 'lib/notifications/notificationlib.php';
$nots = array();
$defaultLanguage = $prefs['site_language'];
if ($prefs['feature_user_watches'] == 'y') {
$nots = $tikilib->get_event_watches($event, $pageName);
}
if ($prefs['feature_user_watches'] == 'y' && $event == 'wiki_page_changed') {
global $structlib;
include_once 'lib/structures/structlib.php';
$nots2 = $structlib->get_watches($pageName);
if (!empty($nots2)) {
$nots = array_merge($nots, $nots2);
}
if ($prefs['wiki_watch_editor'] != "y") {
for ($i = count($nots) - 1; $i >= 0; --$i) {
if ($nots[$i]['user'] == $edit_user) {
unset($nots[$i]);
break;
}
}
}
foreach (array_keys($nots) as $i) {
$nots[$i]['language'] = $tikilib->get_user_preference($nots[$i]['user'], "language", $defaultLanguage);
}
}
if ($prefs['feature_user_watches'] == 'y' && $event == 'wiki_page_created' && $structure_parent_id) {
global $structlib;
include_once 'lib/structures/structlib.php';
$nots = array_merge($nots, $structlib->get_watches('', $structure_parent_id));
}
// admin notifications
// If it's a minor change, get only the minor change watches.
if ($minor) {
$emails = $notificationlib->get_mail_events('wiki_page_changes_incl_minor', 'wikipage' . $pageName);
// look for pageName and any page
} else {
// else if it's not minor change, get both watch types.
$emails1 = $notificationlib->get_mail_events('wiki_page_changes', 'wikipage' . $pageName);
// look for pageName and any page
$emails2 = $notificationlib->get_mail_events('wiki_page_changes_incl_minor', 'wikipage' . $pageName);
// look for pageName and any page
$emails = array_merge($emails1, $emails2);
}
foreach ($emails as $email) {
if ($prefs['wiki_watch_editor'] != "y" && $email == $edit_user) {
continue;
}
if (!testEmailInList($nots, $email)) {
$not = array('email' => $email);
if ($not['user'] = $userlib->get_user_by_email($email)) {
$not['language'] = $tikilib->get_user_preference($not['user'], "language", $defaultLanguage);
} else {
$not['language'] = $defaultLanguage;
}
$nots[] = $not;
}
}
if ($edit_user == '') {
$edit_user = tra('Anonymous');
}
if (count($nots)) {
$edit_data = TikiLib::htmldecode($edit_data);
include_once 'lib/webmail/tikimaillib.php';
$mail = new TikiMail();
$smarty->assign('mail_site', $_SERVER["SERVER_NAME"]);
$smarty->assign('mail_page', $pageName);
$smarty->assign('mail_date', $tikilib->now);
$smarty->assign('mail_user', $edit_user);
$smarty->assign('mail_comment', $edit_comment);
$newver = $oldver + 1;
$smarty->assign('mail_oldver', $oldver);
$smarty->assign('mail_newver', $newver);
$smarty->assign('mail_data', $edit_data);
$foo = parse_url($_SERVER["REQUEST_URI"]);
$machine = $tikilib->httpPrefix() . dirname($foo["path"]);
$smarty->assign('mail_machine', $machine);
if ($prefs['feature_contribution'] == 'y' && !empty($contributions)) {
global $contributionlib;
include_once 'lib/contribution/contributionlib.php';
$smarty->assign('mail_contributions', $contributionlib->print_contributions($contributions));
}
$parts = explode('/', $foo['path']);
if (count($parts) > 1) {
unset($parts[count($parts) - 1]);
}
$smarty->assign('mail_machine_raw', $tikilib->httpPrefix() . implode('/', $parts));
$smarty->assign_by_ref('mail_pagedata', $edit_data);
$smarty->assign_by_ref('mail_diffdata', $diff);
if ($event == 'wiki_page_created') {
$smarty->assign('new_page', 'y');
}
foreach ($nots as $not) {
//.........这里部分代码省略.........
示例10: plugin_apply_filters
private function plugin_apply_filters($name, &$data, &$args, $parseOptions)
{
global $tikilib;
$info = $this->plugin_info($name);
$default = TikiFilter::get(isset($info['defaultfilter']) ? $info['defaultfilter'] : 'xss');
// Apply filters on the body
$filter = isset($info['filter']) ? TikiFilter::get($info['filter']) : $default;
//$data = TikiLib::htmldecode($data); // jb 9.0 commented out in fix for html entitles
$data = $filter->filter($data);
if (isset($parseOptions) && (!empty($parseOptions['is_html']) && !$parseOptions['is_html'])) {
$noparsed = array('data' => array(), 'key' => array());
$this->strip_unparsed_block($data, $noparsed);
$data = str_replace(array('<', '>'), array('<', '>'), $data);
foreach ($noparsed['data'] as &$instance) {
$instance = '~np~' . $instance . '~/np~';
}
unset($instance);
$data = str_replace($noparsed['key'], $noparsed['data'], $data);
}
// Make sure all arguments are declared
$params = $info['params'];
if (!isset($info['extraparams']) && is_array($params)) {
$args = array_intersect_key($args, $params);
}
// Apply filters on values individually
if (!empty($args)) {
foreach ($args as $argKey => &$argValue) {
if (!isset($params[$argKey])) {
continue;
// extra params
}
$paramInfo = $params[$argKey];
$filter = isset($paramInfo['filter']) ? TikiFilter::get($paramInfo['filter']) : $default;
$argValue = TikiLib::htmldecode($argValue);
if (isset($paramInfo['separator'])) {
$vals = array();
$vals = $tikilib->array_apply_filter($tikilib->multi_explode($paramInfo['separator'], $argValue), $filter);
$argValue = array_values($vals);
} else {
$argValue = $filter->filter($argValue);
}
}
}
}
示例11: wikiplugin_rss
function wikiplugin_rss($data, $params)
{
global $smarty;
global $tikilib;
global $dbTiki;
global $rsslib;
if (!isset($rsslib)) {
include_once 'lib/rss/rsslib.php';
}
extract($params, EXTR_SKIP);
if (!isset($max)) {
$max = '10';
}
if (!isset($id)) {
return tra('You need to specify a RSS Id');
}
if (!isset($date)) {
$date = 0;
}
if (!isset($desc)) {
$desc = 0;
}
if (!isset($author)) {
$author = 0;
}
$ids = explode(':', $id);
$repl = '';
$items = array();
$filter = new DeclFilter();
$filter->addStaticKeyFilters(array('link' => 'url', 'title' => 'striptags', 'author' => 'striptags', 'pubDate' => 'striptags', 'description' => 'striptags'));
foreach ($ids as $val) {
if (!($rssdata = $rsslib->get_rss_module_content($val))) {
$repl = tra('RSS Id incorrect:') . ' ' . $val;
}
$itemsrss = $rsslib->parse_rss_data($rssdata, $val, $rssdata);
foreach ($itemsrss as &$item) {
foreach ($item as &$v) {
$v = TikiLib::htmldecode($v);
}
$item = $filter->filter($item);
if ($desc > 1 && strlen($item['description']) > $desc) {
$item['description'] = substr($item['description'], 0, $desc) . ' [...]';
}
}
$items = array_merge($items, $itemsrss);
}
$title = null;
if (isset($items[0]) && $items[0]['isTitle'] == 'y') {
$title = array_shift($items);
}
// No need to waste time sorting with only one feed
if (count($ids) > 1) {
usort($items, 'rss_sort');
}
$items = array_slice($items, 0, $max);
if (count($items) < $max) {
$max = count($items);
}
global $smarty;
$smarty->assign('title', $title);
$smarty->assign('items', $items);
$smarty->assign('showdate', $date > 0);
$smarty->assign('showdesc', $desc > 0);
$smarty->assign('showauthor', $author > 0);
return '~np~' . $smarty->fetch('wiki-plugins/wikiplugin_rss.tpl') . '~/np~';
}
示例12: sendWikiEmailNotification
/**
*\brief send the email notifications dealing with wiki page changes to
* admin notification addresses + watching users addresses (except editor is configured)
* \$event: 'wiki_page_created'|'wiki_page_changed'|wiki_page_deleted |wiki_file_attached
*
*/
function sendWikiEmailNotification($wikiEvent, $pageName, $edit_user, $edit_comment, $oldver, $edit_data, $machine = '', $diff = '', $minor = false, $contributions = '', $structure_parent_id = 0, $attId = 0, $lang = '')
{
global $prefs;
$userlib = TikiLib::lib('user');
$tikilib = TikiLib::lib('tiki');
$smarty = TikiLib::lib('smarty');
$notificationlib = TikiLib::lib('notification');
$nots = array();
$defaultLanguage = $prefs['site_language'];
if ($wikiEvent == 'wiki_file_attached') {
$event = 'wiki_page_changed';
} else {
$event = $wikiEvent;
}
if ($prefs['feature_user_watches'] == 'y') {
$nots = $tikilib->get_event_watches($event, $pageName);
}
if ($prefs['feature_user_watches'] == 'y' && $event == 'wiki_page_changed') {
$structlib = TikiLib::lib('struct');
$nots2 = $structlib->get_watches($pageName);
if (!empty($nots2)) {
$nots = array_merge($nots, $nots2);
}
if ($prefs['wiki_watch_editor'] != "y" || $prefs['user_wiki_watch_editor'] != "y") {
for ($i = count($nots) - 1; $i >= 0; --$i) {
if ($nots[$i]['user'] == $edit_user) {
unset($nots[$i]);
break;
}
}
}
foreach (array_keys($nots) as $i) {
$nots[$i]['language'] = $tikilib->get_user_preference($nots[$i]['user'], "language", $defaultLanguage);
}
}
if ($prefs['feature_user_watches'] == 'y' && $event == 'wiki_page_created' && $structure_parent_id) {
$structlib = TikiLib::lib('struct');
$nots = array_merge($nots, $structlib->get_watches('', $structure_parent_id));
}
// admin notifications
// If it's a minor change, get only the minor change watches.
if ($minor) {
$emails = $notificationlib->get_mail_events('wiki_page_changes_incl_minor', $pageName);
// look for pageName and any page
} else {
// else if it's not minor change, get both watch types.
$emails1 = $notificationlib->get_mail_events('wiki_page_changes', $pageName);
// look for pageName and any page
$emails2 = $notificationlib->get_mail_events('wiki_page_changes_incl_minor', $pageName);
// look for pageName and any page
$emails = array_merge($emails1, $emails2);
}
foreach ($emails as $email) {
if (($prefs['wiki_watch_editor'] != "y" || $prefs['user_wiki_watch_editor'] != "y") && $email == $edit_user) {
continue;
}
if (!testEmailInList($nots, $email)) {
$not = array('email' => $email);
if ($not['user'] = $userlib->get_user_by_email($email)) {
$not['language'] = $tikilib->get_user_preference($not['user'], "language", $defaultLanguage);
} else {
$not['language'] = $defaultLanguage;
}
$nots[] = $not;
}
}
if ($edit_user == '') {
$edit_user = tra('Anonymous');
}
if ($prefs['feature_user_watches'] == 'y' && $prefs['feature_daily_report_watches'] == 'y') {
if ($wikiEvent == 'wiki_file_attached') {
$reportsManager = Reports_Factory::build('Reports_Manager');
$reportsManager->addToCache($nots, array("event" => $wikiEvent, "pageName" => $pageName, 'attId' => $attId, "editUser" => $edit_user, "editComment" => $edit_comment, 'filename' => $edit_data));
} else {
$reportsManager = Reports_Factory::build('Reports_Manager');
$reportsManager->addToCache($nots, array("event" => $wikiEvent, "pageName" => $pageName, "object" => $pageName, "editUser" => $edit_user, "editComment" => $edit_comment, "oldVer" => $oldver));
}
}
if (count($nots)) {
$edit_data = TikiLib::htmldecode($edit_data);
include_once 'lib/mail/maillib.php';
$smarty->assign('mail_site', $_SERVER["SERVER_NAME"]);
$smarty->assign('mail_page', $pageName);
$smarty->assign('mail_date', $tikilib->now);
$smarty->assign('mail_user', $edit_user);
$smarty->assign('mail_comment', $edit_comment);
$newver = $oldver + 1;
$smarty->assign('mail_oldver', $oldver);
$smarty->assign('mail_newver', $newver);
$smarty->assign('mail_data', $edit_data);
$smarty->assign('mail_attId', $attId);
$foo = parse_url($_SERVER["REQUEST_URI"]);
$machine = $tikilib->httpPrefix(true) . dirname($foo["path"]);
$smarty->assign('mail_machine', $machine);
//.........这里部分代码省略.........
示例13: preg_replace
// remove spans round img's
$parsed = preg_replace("/src=\"img\\/smiles\\//im", "src=\"" . $tikiroot . "img/smiles/", $parsed);
// fix smiley src's
$smarty->assign('pagedata', $parsed);
$prefs['wiki_edit_section'] = $secedit;
$prefs['feature_wiki_ext_icon'] = $exticons;
$is_html = true;
$info['is_html'] = true;
$info['wysiwyg'] = true;
$smarty->assign('allowhtml', 'y');
}
if (!$parsed) {
if (!isset($_REQUEST['edit']) && !$is_html) {
// When we get data from database (i.e. we are not in preview mode) and if we don't allow HTML,
// then we need to convert database's HTML entities into their "normal chars" equivalents
$parsed = TikiLib::htmldecode($edit_data);
} else {
//if ( isset($_REQUEST['edit']) && ! $is_html ) {
// When we are in preview mode (i.e. data doesn't come from database) and if we don't allow HTML,
// then we need to convert HTML special chars into their HTML entities equivalent;
// $parsed = htmlspecialchars($edit_data);
//} else {
$parsed = $edit_data;
//}
}
}
$smarty->assign('pagedata', $parsed);
// apply the optional post edit filters before preview
if (isset($_REQUEST["preview"]) || $prefs['wiki_spellcheck'] == 'y' && isset($_REQUEST["spellcheck"]) && $_REQUEST["spellcheck"] == 'on') {
$parsed = $tikilib->apply_postedit_handlers($parsed);
$parsed = $tikilib->parse_data($parsed, $is_html);
示例14: wikiplugin_code
function wikiplugin_code($data, $params)
{
if (is_array($params)) {
extract($params, EXTR_SKIP);
}
$code = trim($data);
$parse_wiki = isset($wiki) && $wiki == 1;
$escape_html = !isset($ishtml) || $ishtml != 1;
// Detect if GeSHI (Generic Syntax Highlighter) is available
$geshi_paths = array('lib/geshi/class.geshi.php', 'lib/geshi/geshi.php', '/usr/share/php-geshi/geshi.php');
foreach ($geshi_paths as $gp) {
if (file_exists($gp)) {
require_once $gp;
break;
}
}
// If 'color' is specified and GeSHI installed, use syntax highlighting with GeSHi
if (isset($colors) && $colors != 'highlights' && class_exists('GeSHI')) {
$geshi =& new GeSHi(TikiLib::htmldecode($code), $colors);
if (version_compare(GESHI_VERSION, 1.1) == -1) {
// Old API
if (isset($ln) && $ln > 0) {
$geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS);
$geshi->start_line_numbers_at($ln);
}
$geshi->set_link_target('_blank');
$out = $geshi->parse_code();
} else {
// New API
$out = $geshi->parseCode();
}
// Remove first <pre> tag
if ($out != '') {
$out = ereg_replace('^<pre[^>]*>(.*)</pre>$', '\\1', $out);
$out = trim($out);
}
if (!$escape_html) {
$out = TikiLib::htmldecode($out);
}
} elseif (isset($colors) && ($colors == 'highlights' || $colors == 'php')) {
$out = highlight_string(TikiLib::htmldecode($code), true);
// Convert into spaces and <br /> tags into real line breaks, since it will be displayed in a <pre> tag
$out = str_replace(' ', ' ', $out);
$out = eregi_replace('<br[^>]+>', "\n", $out);
// Remove first <code> tag
$out = eregi_replace('^\\s*<code[^>]*>(.*)</code>$', '\\1', $out);
// Remove spaces after the first tag and before the start of the code
$out = ereg_replace("^\\s*(<[^>]+>)\n", '\\1', $out);
$out = trim($out);
if (!$escape_html) {
$out = TikiLib::htmldecode($out);
}
} else {
$out = trim($code);
if (isset($ln) && $ln == 1) {
$out = '';
$lines = explode("\n", $code);
$i = 1;
foreach ($lines as $line) {
$out .= sprintf('% 3d', $i) . ' . ' . $line . "\n";
$i++;
}
} else {
$out = $code;
}
}
if (isset($wrap) && $wrap == 1) {
// Force wrapping in <pre> tag through a CSS hack
$pre_style = 'white-space:pre-wrap;' . ' white-space:-moz-pre-wrap !important;' . ' white-space:-pre-wrap;' . ' white-space:-o-pre-wrap;' . ' word-wrap:break-word;';
} else {
// If there is no wrapping, display a scrollbar (only if needed) to avoid truncating the text
$pre_style = 'overflow:auto;';
}
$out = '<pre class="codelisting" dir="' . (isset($rtl) && $rtl == 1 ? 'rtl' : 'ltr') . '" style="' . $pre_style . '">' . ($parse_wiki ? '' : '~np~') . $out . ($parse_wiki ? '' : '~/np~') . '</pre>';
if (isset($caption)) {
$out = '<div class="codecaption">' . $caption . '</div>' . $out;
}
return $out;
}