当前位置: 首页>>代码示例>>PHP>>正文


PHP _rawurlencode函数代码示例

本文整理汇总了PHP中_rawurlencode函数的典型用法代码示例。如果您正苦于以下问题:PHP _rawurlencode函数的具体用法?PHP _rawurlencode怎么用?PHP _rawurlencode使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了_rawurlencode函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: macro_PageHits

function macro_PageHits($formatter = "", $value)
{
    global $DBInfo;
    if (!$DBInfo->use_counter) {
        return "[[PageHits is not activated. set \$use_counter=1; in the config.php]]";
    }
    $pages = $DBInfo->getPageLists();
    sort($pages);
    $hits = array();
    foreach ($pages as $page) {
        $hits[$page] = $DBInfo->counter->pageCounter($page);
    }
    if (!empty($value) and ($value == 'reverse' or $value[0] == 'r')) {
        asort($hits);
    } else {
        arsort($hits);
    }
    $out = '';
    while (list($name, $hit) = each($hits)) {
        if (!$hit) {
            $hit = 0;
        }
        $name = $formatter->link_tag(_rawurlencode($name), "", htmlspecialchars($name));
        $out .= "<li>{$name} . . . . [{$hit}]</li>\n";
    }
    return "<ol>\n" . $out . "</ol>\n";
}
开发者ID:NessunKim,项目名称:MW_Skins,代码行数:27,代码来源:PageHits.php

示例2: do_sitemap

function do_sitemap($formatter, $options)
{
    global $DBInfo;
    # get page list
    if ($formater->group) {
        $group_pages = $DBInfo->getLikePages($formater->group);
        foreach ($group_pages as $page) {
            $all_pages[] = str_replace($formatter->group, '', $page);
        }
    } else {
        $all_pages = $DBInfo->getPageLists();
    }
    usort($all_pages, 'strcasecmp');
    $items = '';
    // empty string
    # process page list
    $zone = '+00:00';
    foreach ($all_pages as $page) {
        $url = qualifiedUrl($formatter->link_url(_rawurlencode($page)));
        $p = new WikiPage($page);
        $t = $p->mtime();
        $date = gmdate("Y-m-d\\TH:i:s", $t) . $zone;
        // W3C datetime format
        $item = "<url>\n";
        $item .= "  <loc>" . $url . "</loc>\n";
        $item .= "  <lastmod>" . $date . "</lastmod>\n";
        $item .= "</url>\n";
        $items .= $item;
    }
    # process output
    $out = $items;
    if ($options['oe'] and strtolower($options['oe']) != $DBInfo->charset) {
        $charset = $options['oe'];
        if (function_exists('iconv')) {
            $new = iconv($DBInfo->charset, $charset, $items);
            if (!$new) {
                $charset = $DBInfo->charset;
            }
            if ($new) {
                $out = $new;
            }
        }
    } else {
        $charset = $DBInfo->charset;
    }
    $head = <<<HEAD
<?xml version="1.0" encoding="{$charset}"?>
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9"
         url="http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"
         xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

HEAD;
    $foot = <<<FOOT
</urlset>
FOOT;
    # output
    header("Content-Type: text/xml");
    print $head . $out . $foot;
}
开发者ID:NessunKim,项目名称:MW_Skins,代码行数:60,代码来源:sitemap.php

示例3: do_Clip

function do_Clip($formatter, $options)
{
    global $DBInfo;
    $enable_replace = 1;
    $keyname = $DBInfo->_getPageKey($options['page']);
    $_dir = str_replace("./", '', $DBInfo->upload_dir . '/' . $keyname);
    // support hashed upload dir
    if (!is_dir($_dir) and !empty($DBInfo->use_hashed_upload_dir)) {
        $prefix = get_hashed_prefix($keyname);
        $_dir = str_replace('./', '', $DBInfo->upload_dir . '/' . $prefix . $keyname);
    }
    $pagename = _urlencode($options['page']);
    $name = $options['value'];
    if (!$name) {
        $title = _("Fatal error !");
        $formatter->send_header("Status: 406 Not Acceptable", $options);
        $formatter->send_title($title, "", $options);
        print "<h2>" . _("No filename given") . "</h2>";
        $formatter->send_footer("", $options);
        return;
    }
    $pngname = _rawurlencode($name);
    //$imgpath="$_dir/$pngname";
    $imgpath = "{$pngname}";
    $imgparam = '';
    if (file_exists($_dir . '/' . $imgpath . '.png')) {
        $url = qualifiedUrl($DBInfo->url_prefix . '/' . $_dir . '/' . $imgpath . '.png');
        $imgparam = "<param name='image' value='{$url}' />";
    }
    $png_url = "{$imgpath}.png";
    $formatter->send_header("", $options);
    $formatter->send_title(_("Clipboard"), "", $options);
    $prefix = $formatter->prefix;
    $now = time();
    $url_exit = $formatter->link_url($pagename, "?ts={$now}");
    $url_save = $formatter->link_url($pagename, "?action=draw");
    $url_help = $formatter->link_url("ClipMacro");
    $pubpath = $DBInfo->url_prefix . "/applets/ClipPlugin";
    print "<h2>" . _("Cut & Paste a Clipboard Image") . "</h2>\n";
    print <<<APPLET
<applet code="clip"
 archive="clip.jar" codebase="{$pubpath}"
 width='200' height='200' align="center">
        <param name="pngpath"  value="{$png_url}" />
        <param name="savepath" value="{$url_save}" />
        <param name="viewpath" value="{$url_exit}" />
        <param name="compress" value="5" />
{$imgparam}
<b>NOTE:</b> You need a Java enabled browser to edit the drawing example.
</applet><br />
APPLET;
    $formatter->send_footer("", $options);
    return;
}
开发者ID:ahastudio,项目名称:moniwiki,代码行数:54,代码来源:Clip.php

示例4: macro_PageHits

function macro_PageHits($formatter, $value = '', $params = array())
{
    global $DBInfo, $Config;
    if (empty($Config['use_counter'])) {
        return "[[PageHits is not activated. set \$use_counter=1; in the config.php]]";
    }
    $perpage = !empty($Config['counter_per_page']) ? intval($Config['counter_per_page']) : 200;
    if (!empty($params['p'])) {
        $p = intval($params['p']);
    } else {
        $p = 0;
    }
    if ($p < 0) {
        $p = 0;
    }
    $hits = $DBInfo->counter->getPageHits($perpage, $p);
    if (!empty($value) and ($value == 'reverse' or $value[0] == 'r')) {
        asort($hits);
    } else {
        arsort($hits);
    }
    $out = '';
    while (list($name, $hit) = each($hits)) {
        if (!$hit) {
            $hit = 0;
        }
        $name = $formatter->link_tag(_rawurlencode($name), "", _html_escape($name));
        $out .= "<li>{$name} . . . . [{$hit}]</li>\n";
    }
    $start = $perpage * $p;
    if ($start > 0) {
        $start = ' start="' . $start . '"';
    } else {
        $start = '';
    }
    $out = "<ol{$start}>\n" . $out . "</ol>\n";
    $prev = '';
    $next = '';
    if ($p > 0) {
        $prev = $formatter->link_tag($formatter->page->urlname, '?action=pagehits&amp;p=' . ($p - 1), _("&#171; Prev"));
    }
    $p++;
    if (count($hits) >= 0) {
        $next = $formatter->link_tag($formatter->page->urlname, '?action=pagehits&amp;p=' . $p, _("Next &#187;"));
    }
    return $out . $prev . ' ' . $next;
}
开发者ID:ahastudio,项目名称:moniwiki,代码行数:47,代码来源:PageHits.php

示例5: macro_JME

function macro_JME($formatter, $value)
{
    global $DBInfo;
    $jar = 'JME.zip';
    // XXX
    $jar = 'JME.jar';
    $draw_dir = str_replace('./', '', $DBInfo->upload_dir . '/JME');
    if (!file_exists($draw_dir)) {
        umask(00);
        mkdir($draw_dir, 0777);
    }
    $name = $value;
    $urlname = _rawurlencode($value);
    $molname = $name . ".mol";
    $now = time();
    $url = $formatter->link_url($formatter->page->name, "?action=jme&amp;value={$urlname}&amp;now={$now}");
    if (!file_exists($draw_dir . "/{$molname}")) {
        if ($name) {
            return "<a href='{$url}'>" . sprintf(_("Draw a new molecule '%s'"), $name) . "</a>";
        } else {
            return "<a href='{$url}'>" . _("Draw a new molecule") . "</a>";
        }
    }
    $fp = fopen($draw_dir . '/' . $molname, 'r');
    if ($fp) {
        $mol = '';
        while (!feof($fp)) {
            $mol .= fgets($fp, 2048);
        }
        fclose($fp);
        $mol = str_replace("\r\n", "|\n", $mol);
    }
    $pubpath = $DBInfo->url_prefix . "/applets/JMEPlugin";
    $mol = _html_escape($mol);
    return <<<APPLET
<applet code="JME.class" name="JME" codebase="{$pubpath}" archive="{$jar}">
<param name="options" value="depict" />
<param name="mol" value="{$mol}" />
You have to enable Java and JavaScript on your machine !
</applet>
APPLET;
}
开发者ID:ahastudio,项目名称:moniwiki,代码行数:42,代码来源:JME.php

示例6: macro_Referer

function macro_Referer($formatter, $value, &$options)
{
    global $DBInfo;
    if (empty($DBInfo->use_referer)) {
        return "[[Referer macro: {$use_referer} is off.]]";
    }
    $referer_log_filename = $DBInfo->cache_dir . "/referer/referer.log";
    if ($value !== true) {
        // [[referer]] or ?action=referer
        $needle = $formatter->page->urlname;
    } else {
        // [[referer()]]
        unset($needle);
    }
    if ($needle and false) {
        // so slow XXX
        $handle = fopen($referer_log_filename, 'r');
        if (!is_resource($handle)) {
            return '';
        }
        $logs = array();
        while (!feof($handle)) {
            $line = fgets($handle);
            list(, $pagename, ) = explode("\t", $line);
            if ($pagename == $needle) {
                $logs[] = $line;
            }
            if ($count > 100) {
                break;
            }
            $count++;
        }
        fclose($handle);
        $logs = array_reverse($logs);
    } else {
        $number_of_lines = 200;
        // XXX
        $logs = tail_file($referer_log_filename, $number_of_lines);
    }
    $log = array();
    $counter = 10;
    // XXX
    $count = 0;
    foreach ($logs as $line) {
        list(, $pagename, ) = explode("\t", $line);
        if (strcmp($pagename, $needle) == 0) {
            $log[] = $line;
        }
        if ($count > $counter) {
            break;
        }
        $count++;
    }
    $logs = $log;
    $tz_offset = $formatter->tz_offset;
    $length = sizeof($logs);
    for ($c = 0; $c < $length; $c++) {
        $fields = explode("\t", $logs[$c]);
        $fields[0] = date("Y-m-d H:i:s", strtotime($fields[0]) + $tz_offset);
        $fields[1] = $formatter->link_tag(_rawurlencode($fields[1]), "", urldecode($fields[1]));
        $found = '';
        if (ereg("[?&][pqQ](uery)?=([^&]+)&?", $fields[2], $regs)) {
            $check = strpos($regs[2], '%');
            # is it urlecnoded ?
            if ($check !== false) {
                $found = urldecode($regs[2]);
                if (function_exists('iconv')) {
                    $test = false;
                    if (strcasecmp('utf-8', $DBInfo->charset) != 0) {
                        $test = iconv('utf-8', $DBInfo->charset, $found);
                        if ($test !== false) {
                            $found = $test;
                        }
                    }
                    if ($test === false and !empty($DBInfo->url_encodings)) {
                        $cs = explode(',', $DBInfo->url_encodings);
                        foreach ($cs as $c) {
                            $test = @iconv($c, $DBInfo->charset, $found);
                            if ($test !== false) {
                                $found = $test;
                                break;
                            }
                        }
                    }
                }
            } else {
                $found = $regs[2];
            }
        }
        $fields[2] = (!empty($found) ? "[ {$found} ] " : '') . "<a href='{$fields['2']}'>" . urldecode($fields[2]) . "</a>";
        if (isset($needle)) {
            unset($fields[1]);
        }
        $logs[$c] = "<td class='date' style='width:20%'>" . implode("</td><td>", $fields) . "<td>";
    }
    $ret = '';
    if ($length > 0) {
        $ret = "\n<table>";
        $ret .= "<caption>" . _("Referer history") . "</caption>";
        $ret .= "<tr>";
//.........这里部分代码省略.........
开发者ID:ahastudio,项目名称:moniwiki,代码行数:101,代码来源:referer.php

示例7: macro_PageList

function macro_PageList($formatter, $arg = "", $options = array())
{
    global $DBInfo;
    $offset = '';
    if (!is_numeric($options['offset']) or $options['offset'] <= 0) {
        unset($options['offet']);
    } else {
        $offset = $options['offset'];
    }
    preg_match("/([^,]*)(\\s*,\\s*)?(.*)?\$/", $arg, $match);
    if ($match[1] == 'date') {
        $options['date'] = 1;
        $arg = '';
    } else {
        if ($match) {
            $arg = $match[1];
            $opts = array();
            if ($match[3]) {
                $opts = explode(",", $match[3]);
            }
            if (in_array('date', $opts)) {
                $options['date'] = 1;
            }
            if (in_array('dir', $opts)) {
                $options['dir'] = 1;
            }
            if (in_array('subdir', $opts)) {
                $options['subdir'] = 1;
            }
            if (in_array('info', $opts)) {
                $options['info'] = 1;
            } else {
                if ($arg and (in_array('metawiki', $opts) or in_array('m', $opts))) {
                    $options['metawiki'] = 1;
                }
            }
        }
    }
    $upper = '';
    if (!empty($options['subdir'])) {
        if (($p = strrpos($formatter->page->name, '/')) !== false) {
            $upper = substr($formatter->page->name, 0, $p);
        }
        $needle = _preg_search_escape($formatter->page->name);
        $needle = '^' . $needle . '\\/';
    } else {
        if (!empty($options['rawre'])) {
            $needle = $arg;
        } else {
            $needle = _preg_search_escape($arg);
        }
    }
    $test = @preg_match("/{$needle}/", "", $match);
    if ($test === false) {
        # show error message
        return "[[PageList(<font color='red'>Invalid \"{$arg}\"</font>)]]";
    }
    $ret = array();
    $options['ret'] =& $ret;
    $options['offset'] = $offset;
    if (!empty($options['date'])) {
        $tz_offset =& $formatter->tz_offset;
        $all_pages = $DBInfo->getPageLists($options);
    } else {
        if (!empty($options['metawiki'])) {
            $all_pages = $DBInfo->metadb->getLikePages($needle);
        } else {
            $all_pages = $DBInfo->getLikePages($needle);
        }
    }
    $hits = array();
    $out = '';
    if (!empty($options['date']) and !is_numeric($k = key($all_pages)) and is_numeric($all_pages[$k])) {
        if ($needle) {
            while (list($pagename, $mtime) = @each($all_pages)) {
                preg_match("/{$needle}/", $pagename, $matches);
                if ($matches) {
                    $hits[$pagename] = $mtime;
                }
            }
        } else {
            $hits = $all_pages;
        }
        arsort($hits);
        while (list($pagename, $mtime) = @each($hits)) {
            $out .= '<li>' . $formatter->link_tag(_rawurlencode($pagename), "", _html_escape($pagename)) . ". . . . [" . gmdate("Y-m-d", $mtime + $tz_offset) . "]</li>\n";
        }
        $out = "<ol>\n" . $out . "</ol>\n";
    } else {
        foreach ($all_pages as $page) {
            preg_match("/{$needle}/", $page, $matches);
            if ($matches) {
                $hits[] = $page;
            }
        }
        sort($hits);
        if (!empty($options['dir']) or !empty($options['subdir'])) {
            $dirs = array();
            $files = array();
            if ($options['subdir']) {
//.........这里部分代码省略.........
开发者ID:ahastudio,项目名称:moniwiki,代码行数:101,代码来源:pagelist.php

示例8: macro_Rss

function macro_Rss($formatter, $value)
{
    global $DBInfo;
    $xml_parser = xml_parser_create();
    $rss_parser = new WikiRSSParser();
    xml_set_object($xml_parser, $rss_parser);
    xml_set_element_handler($xml_parser, "startElement", "endElement");
    xml_set_character_data_handler($xml_parser, "characterData");
    $key = _rawurlencode($value);
    $cache = new Cache_text("rss");
    # reflash rss each 7200 second (60*60*2)
    if (!$cache->exists($key) or time() > $cache->mtime($key) + 7200) {
        $fp = @fopen("{$value}", "r");
        if (!$fp) {
            return "[[RSS(ERR: not a valid URL! {$value})]]";
        }
        while ($data = fread($fp, 4096)) {
            $xml_data .= $data;
        }
        fclose($fp);
        $cache->update($key, $xml_data);
    } else {
        $xml_data = $cache->fetch($key);
    }
    list($line, $dummy) = explode("\n", $xml_data, 2);
    preg_match("/\\sencoding=?(\"|')([^'\"]+)/", $line, $match);
    if ($match) {
        $charset = strtoupper($match[2]);
    } else {
        $charset = 'UTF-8';
    }
    # override $charset for php5
    if ((int) phpversion() >= 5) {
        $charset = 'UTF-8';
    }
    ob_start();
    $ret = xml_parse($xml_parser, $xml_data);
    if (!$ret) {
        return sprintf("[[RSS(XML error: %s at line %d)]]", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser));
    }
    $out = ob_get_contents();
    ob_end_clean();
    xml_parser_free($xml_parser);
    #  if (strtolower(str_replace("-","",$options['oe'])) == 'euckr')
    if (function_exists('iconv') and strtoupper($DBInfo->charset) != $charset) {
        $new = iconv($charset, $DBInfo->charset, $out);
        if ($new !== false) {
            return $new;
        }
    }
    return $out;
}
开发者ID:NessunKim,项目名称:MW_Skins,代码行数:52,代码来源:rss.php

示例9: do_atom

function do_atom($formatter, $options)
{
    global $DBInfo;
    global $_release;
    define('ATOM_DEFAULT_DAYS', 7);
    $days = $DBInfo->rc_days ? $DBInfo->rc_days : ATOM_DEFAULT_DAYS;
    $options['quick'] = 1;
    if ($options['c']) {
        $options['items'] = $options['c'];
    }
    $lines = $DBInfo->editlog_raw_lines($days, $options);
    $time_current = time();
    #  $secs_per_day= 60*60*24;
    #  $days_to_show= 30;
    #  $time_cutoff= $time_current - ($days_to_show * $secs_per_day);
    $URL = qualifiedURL($formatter->prefix);
    $img_url = qualifiedURL($DBInfo->logo_img);
    $url = qualifiedUrl($formatter->link_url($DBInfo->frontpage));
    $surl = qualifiedUrl($formatter->link_url($options['page'] . '?action=atom'));
    $channel = <<<CHANNEL
  <title>{$DBInfo->sitename}</title>
  <link href="{$url}"></link>
  <link rel="self" type="application/atom+xml" href="{$surl}" />
  <subtitle>RecentChanges at {$DBInfo->sitename}</subtitle>
  <generator version="{$_release}">MoniWiki Atom feeder</generator>

CHANNEL;
    $items = "";
    $ratchet_day = FALSE;
    if (!$lines) {
        $lines = array();
    }
    foreach ($lines as $line) {
        $parts = explode("\t", $line);
        $page_name = $DBInfo->keyToPagename($parts[0]);
        $addr = $parts[1];
        $ed_time = $parts[2];
        $user = $parts[4];
        $user_uri = '';
        if ($DBInfo->hasPage($user)) {
            $user_uri = $formatter->link_url(_rawurlencode($user), "", $user);
            $user_uri = '<uri>' . $user_uri . '</uri>';
        }
        $log = _stripslashes($parts[5]);
        $act = rtrim($parts[6]);
        $url = qualifiedUrl($formatter->link_url(_rawurlencode($page_name)));
        $diff_url = qualifiedUrl($formatter->link_url(_rawurlencode($page_name), '?action=diff'));
        $extra = "<br /><a href='{$diff_url}'>" . _("show changes") . "</a>\n";
        $content = '';
        if (!$DBInfo->hasPage($page_name)) {
            $status = 'deleted';
            $content = "<content type='html'><a href='{$url}'>{$page_name}</a> is deleted</content>\n";
        } else {
            $status = 'updated';
            if ($options['diffs']) {
                $p = new WikiPage($page_name);
                $f = new Formatter($p);
                $options['raw'] = 1;
                $options['nomsg'] = 1;
                $html = $f->macro_repl('Diff', '', $options);
                if (!$html) {
                    ob_start();
                    $f->send_page('', array('fixpath' => 1));
                    #$f->send_page('');
                    $html = ob_get_contents();
                    ob_end_clean();
                    $extra = '';
                }
                $content = "  <content type='xhtml'><div xmlns='http://www.w3.org/1999/xhtml'>{$html}</content>\n";
            } else {
                if ($log) {
                    $html = str_replace('&', '&amp;', $log);
                    $content = "<content type='text'>" . $html . "</content>\n";
                } else {
                    $content = "<content type='text'>updated</content>\n";
                }
            }
        }
        $zone = '+00:00';
        $date = gmdate("Y-m-d\\TH:i:s", $ed_time) . $zone;
        if (!isset($updated)) {
            $updated = $date;
        }
        #$datetag = gmdate("YmdHis",$ed_time);
        $valid_page_name = str_replace('&', '&amp;', $page_name);
        $items .= "<entry>\n";
        $items .= "  <title>{$valid_page_name}</title>\n";
        $items .= "  <link href='{$url}'></link>\n";
        $items .= '  ' . $content;
        $items .= "  <author><name>{$user}</name>{$user_uri}</author>\n";
        $items .= "  <updated>{$date}</updated>\n";
        $items .= "  <contributor><name>{$user}</name>{$user_uri}</contributor>\n";
        $items .= "</entry>\n";
    }
    $updated = "  <updated>{$updated}</updated>\n";
    $new = "";
    if ($options['oe'] and strtolower($options['oe']) != $DBInfo->charset) {
        $charset = $options['oe'];
        if (function_exists('iconv')) {
            $out = $head . $channel . $items . $form;
//.........这里部分代码省略.........
开发者ID:NessunKim,项目名称:MW_Skins,代码行数:101,代码来源:atom.php

示例10: macro_BBS

function macro_BBS($formatter, $value, $options = array())
{
    global $DBInfo;
    # set defaults
    $ncount = 20;
    # default
    $bname = $formatter->page->name;
    $nid = '';
    # check options
    $args = preg_split('/\\s*,\\s*/', $value);
    foreach ($args as $arg) {
        $arg = trim($arg);
        if ($arg == '') {
            continue;
        }
        if (($p = strpos($arg, '=')) !== false) {
            $k = substr($arg, 0, $p);
            $v = substr($arg, $p + 1);
            if ($k == 'no') {
                $nid = $v;
            } else {
                if ($k == 'mode') {
                    $options['mode'] = $v;
                }
            }
        } else {
            if ($arg == 'mode') {
            } else {
                if ($arg == (int) $arg . "") {
                    $ncount = $arg;
                } else {
                    $bname = $arg;
                }
            }
        }
    }
    $bpage = _rawurlencode($bname);
    $nid = $nid ? $nid : $_GET['no'];
    $nids = array();
    if ($nid) {
        $nids = preg_split('/\\s+/', $nid);
        rsort($nids);
    }
    $options['p'] = $_GET['p'] > 0 ? $_GET['p'] : 1;
    $options['c'] = $ncount != 20 ? $ncount : '';
    $options['p'] = intval($options['p']);
    # is it exists ?
    if (!$DBInfo->hasPage($bname)) {
        return _("This bbs does not exists yet. Please save this page first");
    }
    # load a config file
    $conf0 = array();
    if (file_exists('config/bbs.' . $bname . '.php')) {
        $confname = 'bbs.' . $bname . '.php';
        $conf0 = _load_php_vars('config/bbs.default.php');
    } else {
        $confname = 'bbs.default.php';
    }
    $conf = _load_php_vars('config/' . $confname);
    $conf = array_merge($conf0, $conf);
    $conf['data_dir'] = $DBInfo->data_dir;
    $conf['dba_type'] = $DBInfo->dba_type;
    if (!$DBInfo->use_bbs) {
        return '[[BBS]]';
    }
    #if ($DBInfo->use_bbs == 1);
    #if ($DBInfo->use_bbs == 2);
    $MyBBS = new BBS_text($bname, $conf);
    // XXX
    if ($options['new'] and $MyBBS) {
        return $MyBBS;
    }
    if (!$MyBBS) {
        return '[[BBS]]';
    }
    $msg = '';
    $btn = array();
    # read messages
    #
    $formatter->baserule[] = "/^((-=)+-?\$)/";
    $formatter->baserule[] = "/ comment #(\\d+)\\b/";
    $formatter->baserule[] = "/\\[reply (\\d+)\\]/";
    $formatter->baserepl[] = "<hr />\n";
    $formatter->baserepl[] = " comment [#c\\1 #\\1]";
    $formatter->baserepl[] = "<script type='text/javascript'><!--\n" . " addReplyLink(\\1); //--></script>";
    $msg = '';
    $narticle = sizeof($nids);
    $js = '';
    if ($nid and $narticle == 1 and $options['mode'] == 'simple') {
        $nid = $nids[0];
        if (!$nid or !$MyBBS->hasPage($nid)) {
            return '[[BBS(error)]]';
        }
        include_once 'lib/metadata.php';
        $body = $MyBBS->getPage($nid);
        list($metas, $body) = _get_metadata($body);
        $img = '';
        if ($MyBBS->use_attach) {
            $cache = new Cache_text('attachments');
            $attachs = $cache->fetch($MyBBS->bbsname . ':' . $nid);
//.........这里部分代码省略.........
开发者ID:ahastudio,项目名称:moniwiki,代码行数:101,代码来源:bbs.php

示例11: macro_UploadedFiles


//.........这里部分代码省略.........
    txtarea.value += tagOpen + myText + tagClose + " ";
    txtarea.focus();
  }
}
/*]]>*/
</script>
EOS;
    }
    if (!empty($DBInfo->download_action)) {
        $mydownload = $DBInfo->download_action;
    } else {
        $mydownload = 'download';
    }
    $checkbox = 'checkbox';
    $needle = "//";
    if (!empty($options['download']) || !empty($DBInfo->force_download)) {
        $force_download = 1;
        if (!empty($options['download'])) {
            $mydownload = $options['download'];
        }
    }
    if (!empty($options['needle'])) {
        $needle = '@' . $options['needle'] . '@i';
    }
    if (!empty($options['checkbox'])) {
        $checkbox = $options['checkbox'];
    }
    if (!in_array('UploadFile', $formatter->actions)) {
        $formatter->actions[] = 'UploadFile';
    }
    if ($value and $value != 'UploadFile') {
        $key = $DBInfo->pageToKeyname($value);
        //if ($force_download or $key != $value)
        $down_prefix = $formatter->link_url(_rawurlencode($value), "?action={$mydownload}&amp;value=");
        $dir = $DBInfo->upload_dir . "/{$key}";
    } else {
        $value = $formatter->page->urlname;
        $key = $DBInfo->pageToKeyname($formatter->page->name);
        //if ($force_download or $key != $formatter->page->name)
        $down_prefix = $formatter->link_url($formatter->page->urlname, "?action={$mydownload}&amp;value=");
        $dir = $DBInfo->upload_dir . "/{$key}";
    }
    // support hashed upload_dir
    if (!is_dir($dir) and !empty($DBInfo->use_hashed_upload_dir)) {
        $dir = $DBInfo->upload_dir . '/' . get_hashed_prefix($key) . $key;
    }
    if (!empty($force_download) or $key != $value) {
        $prefix = $down_prefix;
    }
    if (!empty($formatter->preview) and $formatter->page->name == $value) {
        $opener = '';
    } else {
        $opener = $value . ':';
    }
    if ($value != 'UploadFile' and file_exists($dir)) {
        $handle = opendir($dir);
    } else {
        $key = '';
        $value = 'UploadFile';
        if (!$force_download) {
            $prefix .= $prefix ? '/' : '';
        }
        $dir = $DBInfo->upload_dir;
        $handle = opendir($dir);
        $opener = '/';
    }
开发者ID:sedrion,项目名称:moniwiki,代码行数:67,代码来源:UploadedFiles.php

示例12: macro_RecentChanges


//.........这里部分代码省略.........
        $via_proxy = false;
        if (($p = strpos($addr, ',')) !== false) {
            // user via Proxy
            $via_proxy = true;
            $real_ip = substr($addr, 0, $p);
            $log_proxy = '<span class="via-proxy">' . $real_ip . '</span>';
            $log = isset($log[0]) ? $log_proxy . ' ' . $log : $log_proxy;
            $dum = explode(',', $addr);
            $addr = array_pop($dum);
        }
        //    if ($ed_time < $time_cutoff)
        //      break;
        $group = '';
        if ($formatter->group) {
            if (!preg_match("/^({$formatter->group})(.*)\$/", $page_name, $match)) {
                continue;
            }
            $title = $match[2];
        } else {
            if (!empty($formatter->use_group) and ($p = strpos($page_name, '~')) !== false) {
                $title = substr($page_name, $p + 1);
                $group = ' (' . substr($page_name, 0, $p) . ')';
            } else {
                $title = $page_name;
            }
        }
        if (!empty($changed_time_fmt)) {
            if (empty($timesago)) {
                $date = gmdate($changed_time_fmt, $ed_time + $tz_offset);
            } else {
                $date = _timesago($ed_time, 'Y-m-d', $tz_offset);
            }
        }
        $pageurl = _rawurlencode($page_name);
        // get title
        $title0 = get_title($title) . $group;
        $title0 = _html_escape($title0);
        if ($rctype == 'list') {
            $attr = '';
        } else {
            $attr = " id='title-{$ii}'";
        }
        if (!empty($strimwidth) and strlen(get_title($title)) > $strimwidth and function_exists('mb_strimwidth')) {
            $title0 = mb_strimwidth($title0, 0, $strimwidth, '...', $DBInfo->charset);
        }
        $attr .= ' title="' . $title0 . '"';
        $title = $formatter->link_tag($pageurl, "", $title0, $target . $attr);
        // simple list format
        if ($rctype == 'list') {
            if (empty($logs[$page_key])) {
                $logs[$page_key] = array();
            }
            $logs[$page_key][$day] = 1;
            if (!$DBInfo->hasPage($page_name)) {
                $act = 'DELETE';
                $title = '<strike>' . $title . '</strike>';
            }
            $list[$page_name] = array($title, $date, $ed_time, $act);
            continue;
        }
        // print $ed_time."/".$bookmark."//";
        $diff = '';
        $updated = '';
        if ($act == 'UPLOAD') {
            $icon = $formatter->link_tag($pageurl, "?action=uploadedfiles", $formatter->icon['attach']);
        } else {
开发者ID:ahastudio,项目名称:moniwiki,代码行数:67,代码来源:RecentChanges.php

示例13: macro_Rss

function macro_Rss($formatter, $value)
{
    global $DBInfo;
    $rsscache = new Cache_text('rsscache');
    $key = _rawurlencode($value);
    // rss TTL = 7200 sec (60*60*2)
    if (!$formatter->refresh && $rsscache->exists($key) && time() < $rsscache->mtime($key) + 7200) {
        return $rsscache->fetch($key);
    }
    if ($rsscache->exists($key . '.lock')) {
        return '';
    }
    $args = explode(',', $value);
    // first arg assumed to be a date fmt arg
    $date_fmt = '';
    $title_width = 0;
    if (count($args) > 1) {
        if (preg_match("/^[\\s\\/\\-:aABdDFgGhHiIjmMOrSTY\\[\\]]+\$/", $args[0])) {
            $date_fmt = array_shift($args);
        }
        if (is_numeric($args[0])) {
            $title_width = array_shift($args);
            // too small or too big
            if ($title_width < 10 || $title_width > 40) {
                $title_width = 0;
            }
        }
        $value = implode(',', $args);
    }
    $cache = new Cache_text("rssxml");
    # reflash rss each 7200 second (60*60*2)
    if (!$cache->exists($key) or time() > $cache->mtime($key) + 7200) {
        $fp = @fopen("{$value}", "r");
        if (!$fp) {
            return "[[RSS(ERR: not a valid URL! {$value})]]";
        }
        while ($data = fread($fp, 4096)) {
            $xml_data .= $data;
        }
        fclose($fp);
        $cache->update($key, $xml_data);
    } else {
        $xml_data = $cache->fetch($key);
    }
    // detect charset
    $charset = 'UTF-8';
    list($line, $dummy) = explode("\n", $xml_data, 2);
    preg_match("/\\sencoding=?(\"|')([^'\"]+)/", $line, $match);
    if ($match) {
        $charset = strtoupper($match[2]);
    }
    // override $charset for php5
    if ((int) phpversion() >= 5) {
        $charset = 'UTF-8';
    }
    $xml_parser = xml_parser_create();
    $rss_parser = new WikiRSSParser($charset);
    if (!empty($date_fmt)) {
        $rss_parser->setDateFormat($date_fmt);
    }
    if (!empty($title_width)) {
        $rss_parser->setTitleWidth($title_width);
    }
    xml_set_object($xml_parser, $rss_parser);
    xml_set_element_handler($xml_parser, "startElement", "endElement");
    xml_set_character_data_handler($xml_parser, "characterData");
    ob_start();
    $ret = xml_parse($xml_parser, $xml_data);
    if (!$ret) {
        return sprintf("[[RSS(XML error: %s at line %d)]]", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser));
    }
    $out = ob_get_contents();
    ob_end_clean();
    xml_parser_free($xml_parser);
    $out = '<ul class="rss">' . $out . '</ul>';
    #  if (strtolower(str_replace("-","",$options['oe'])) == 'euckr')
    if (function_exists('iconv') and strtoupper($DBInfo->charset) != $charset) {
        $new = iconv($charset, $DBInfo->charset, $out);
        if ($new !== false) {
            return $new;
        }
    }
    $rsscache->remove($key . '.lock');
    $rsscache->update($key, $out);
    return $out;
}
开发者ID:ahastudio,项目名称:moniwiki,代码行数:86,代码来源:rss.php

示例14: macro_FastSearch


//.........这里部分代码省略.........
            $searchkeys = $sc->fetch($word);
        } else {
            $searchkeys = $DB->_search($word);
            $sc->update($word, $searchkeys);
        }
        $new_words = array_merge($new_words, $searchkeys);
        $new_words = array_merge($idx, $DB->_search($word));
    }
    $words = array_merge($words, $new_words);
    //
    $word = array_shift($words);
    $idx = $DB->_fetchValues($word);
    foreach ($words as $word) {
        $ids = $DB->_fetchValues($word);
        // FIXME
        foreach ($ids as $id) {
            $idx[] = $id;
        }
    }
    $init_hits = array_count_values($idx);
    // initial hits
    $idx = array_keys($init_hits);
    //arsort($idx);
    $all_count = $DBInfo->getCounter();
    $pages = array();
    $hits = array();
    foreach ($idx as $id) {
        $key = $DB->_fetch($id);
        $pages[$id] = $key;
        $hits['_' . $key] = $init_hits[$id];
        // HACK. prefix '_' to numerical named pages
    }
    $DB->close();
    if (!empty($_GET['q']) and isset($_GET['q'][0])) {
        return $pages;
    }
    $context = !empty($opts['context']) ? $opts['context'] : 0;
    $limit = isset($opts['limit'][0]) ? $opts['limit'] : $default_limit;
    $contexts = array();
    if ($arena == 'fullsearch' || $arena == 'pagelinks') {
        $idx = 1;
        foreach ($pages as $page_name) {
            if (!empty($limit) and $idx > $limit) {
                break;
            }
            $p = new WikiPage($page_name);
            if (!$p->exists()) {
                continue;
            }
            $body = $p->_get_raw_body();
            $count = preg_match_all($pattern, $body, $matches);
            // more precisely count matches
            if ($context) {
                # search matching contexts
                $contexts[$page_name] = find_needle($body, $needle, '', $context);
            }
            $hits['_' . $page_name] = $count;
            // XXX hack for numerical named pages
            $idx++;
        }
    }
    //uasort($hits, 'strcasecmp');
    //$order = 0;
    //uasort($hits, create_function('$a, $b', 'return ' . ($order ? '' : '-') . '(strcasecmp($a, $b));'));
    $name = array_keys($hits);
    array_multisort($hits, SORT_DESC, $name, SORT_ASC);
    $opts['hits'] = $hits;
    $opts['hit'] = count($hits);
    $opts['all'] = $all_count;
    if (!empty($opts['call'])) {
        return $hits;
    }
    $out = "<!-- RESULT LIST START -->";
    // for search plugin
    $out .= "<ul>";
    $idx = 1;
    while (list($page_name, $count) = each($hits)) {
        $page_name = substr($page_name, 1);
        $out .= '<!-- RESULT ITEM START -->';
        // for search plugin
        $out .= '<li>' . $formatter->link_tag(_rawurlencode($page_name), "?action=highlight&amp;value=" . _urlencode($needle), $page_name, "tabindex='{$idx}'");
        if ($count > 1) {
            $out .= ' . . . . ' . sprintf($count == 1 ? _("%d match") : _("%d matches"), $count);
            if (!empty($contexts[$page_name])) {
                $out .= $contexts[$page_name];
            }
        }
        $out .= "</li>\n";
        $out .= '<!-- RESULT ITEM END -->';
        // for search plugin
        $idx++;
        if (!empty($limit) and $idx > $limit) {
            break;
        }
    }
    $out .= "</ul>\n";
    $out .= "<!-- RESULT LIST END -->";
    // for search plugin
    return $out;
}
开发者ID:NessunKim,项目名称:MW_Skins,代码行数:101,代码来源:FastSearch.php

示例15: macro_LikePages


//.........这里部分代码省略.........
    }
    if ($end) {
        foreach ($pages as $page) {
            preg_match("/{$end}\$/", $page, $matches);
            if ($matches) {
                $ends[$page] = 1;
            }
        }
    }
    if (!empty($DBInfo->use_similar_text)) {
        $len = strlen($value);
        $ii = 0;
        foreach ($pages as $page) {
            $ii++;
            $match = similar_text($value, $page) / min($len, strlen($page));
            if ($match > 0.9 && empty($starts[$page]) && empty($ends[$page])) {
                $likes[$page] = $match;
            }
        }
    } else {
        if ($start || $end) {
            if ($start and $end) {
                $similar_re = "{$start}|{$end}";
            } else {
                if ($start) {
                    $similar_re = $start;
                } else {
                    $similar_re = $end;
                }
            }
            if (!empty($words)) {
                $similar_re .= '|' . implode('|', $words);
            }
            foreach ($pages as $page) {
                preg_match("/({$similar_re})/i", $page, $matches);
                if ($matches && empty($starts[$page]) && empty($ends[$page])) {
                    $likes[$page] = 1;
                }
            }
        }
    }
    $idx = 1;
    $hits = 0;
    $out = "";
    if ($likes) {
        ksort($likes);
        $out .= "<h3>" . _("These pages share a similar word...") . "</h3>";
        $out .= "<ol>\n";
        foreach ($likes as $pagename => $i) {
            $pageurl = _rawurlencode($pagename);
            $pagetext = htmlspecialchars(urldecode($pagename));
            $out .= '<li>' . $formatter->link_tag($pageurl, "", $pagetext, "tabindex='{$idx}'") . "</li>\n";
            $idx++;
        }
        $out .= "</ol>\n";
        $hits = count($likes);
    }
    if ($starts || $ends) {
        ksort($starts);
        $out .= "<h3>" . _("These pages share an initial or final title word...") . "</h3>";
        $out .= "<table border='0' width='100%'><tr><td width='50%' valign='top'>\n<ol>\n";
        while (list($pagename, $i) = each($starts)) {
            $pageurl = _rawurlencode($pagename);
            $pagetext = htmlspecialchars(urldecode($pagename));
            $out .= '<li>' . $formatter->link_tag($pageurl, "", $pagetext, "tabindex='{$idx}'") . "</li>\n";
            $idx++;
        }
        $out .= "</ol></td>\n";
        ksort($ends);
        $out .= "<td width='50%' valign='top'><ol>\n";
        while (list($pagename, $i) = each($ends)) {
            $pageurl = _rawurlencode($pagename);
            $pagetext = htmlspecialchars(urldecode($pagename));
            $out .= '<li>' . $formatter->link_tag($pageurl, "", $pagetext, "tabindex='{$idx}'") . "</li>\n";
            $idx++;
        }
        $out .= "</ol>\n</td></tr></table>\n";
        $hits += count($starts) + count($ends);
    }
    if (empty($hits)) {
        $out .= "<h3>" . _("No similar pages found") . "</h3>";
    }
    $opts['msg'] = sprintf(_("Like \"%s\""), $value);
    while (empty($metawiki)) {
        if (empty($DBInfo->metadb)) {
            $DBInfo->initMetaDB();
        }
        if (empty($DBInfo->metadb) or empty($DBInfo->shared_metadb)) {
            break;
        }
        $opts['extra'] = _("If you can't find this page, ");
        if (empty($hits) and empty($metawiki) and !empty($DBInfo->metadb)) {
            $opts['extra'] = _("You are strongly recommened to find it in MetaWikis. ");
        }
        $tag = $formatter->link_to("?action=LikePages&amp;metawiki=1", _("Search all MetaWikis"));
        $opts['extra'] .= "{$tag} (" . _("Slow Slow") . ")<br />";
        break;
    }
    return $out;
}
开发者ID:NessunKim,项目名称:MW_Skins,代码行数:101,代码来源:LikePages.php


注:本文中的_rawurlencode函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。