2核1G3M服务器88一季度

腾讯云,阿里云百度云等 折扣价→点我←

Discuz!X3.4后台搜索索引生成工具(优化 后台搜索索引更新,同时恢复索引记录标记) discuz 教程

游客1 游客组

本帖最后由 民审-M 于 2017-11-14 16:58 编辑

Discuz!X3.4后台搜索索引生成工具(优化 后台搜索索引更新,同时恢复索引记录标记):

此程序为后台搜索索引生成工具,在论坛根目录执行即可

[backcolor=magenta]适用于:[/backcolor]
Discuz! X3.4 R20171114+ SC_GBK 版本更新(2017.11.14更新)
http://bbs.zhanzhangwo.com/t-29165-1-1.html
(出处: 站长窝)

<?php

error_reporting(E_ALL);

$sourcedir = './';

chdir($sourcedir);

define('IN_ADMINCP', TRUE);
define('NOROBOT', TRUE);
define('ADMINSCRIPT', basename(__FILE__));
define('CURSCRIPT', 'admin');
define('APPTYPEID', 0);

include './source/class/class_core.php';
include './source/class/class_admincp.php';
include './source/function/function_misc.php';
include './source/function/function_forum.php';
include './source/function/function_admincp.php';
include './source/function/function_cache.php';

$discuz = & discuz_core::instance();
$discuz->init();

$admincp = new discuz_admincp();
$admincp->core  = & $discuz;
$admincp->init();

$admincpdir = 'source/admincp/';
$langfile = 'source/language/lang_admincp.php';
$menulangfile = 'source/language/lang_admincp_menu.php';
$searchindex = 'source/language/lang_admincp_searchindex.php';

define('IN_DISCUZ', 1);
define('IN_ADMINCP', 1);

include $menulangfile;
$menulang = $lang;
include $langfile;
$lang = $lang + $menulang;
$indexdata = array();

include $sourcedir.'function/function_admincp.php';
include $admincpdir.'admincp_menu.php';
foreach($menu as $topmenu => $leftmenu) {
        foreach($leftmenu as $item) {
                list($action, $operation, $do) = explode('_', $item[1]);
                $indexdata[] = array('index' => array(
                        $menulang[$item[0]] => 'action='.$action.($operation ? '&operation='.$operation.($do ? '&do='.$do : '') : '')
                ), 'text' => array($menulang[$item[0]]));
        }
}

$langi = '|'.implode('|', array_keys($lang)).'|';

$dir = opendir($admincpdir);
while($entry = readdir($dir)) {
        if($entry != '.' && $entry != '..' && preg_match('/^admincp\_/', $entry)) {

                $adminfile = $admincpdir.$entry;                
                $data = file_get_contents($adminfile);
                $data = preg_replace('/\/\/.+?\r/', '', $data);
                $data = preg_replace('/\/\*(.+?)\*\//se', "clearnote('\\1')", $data);

                preg_match_all('#/\*search=\s*(\{.+?\})\s*\*/(.+?)/\*search\*/#is', $data, $search);
                if($search) {
                        foreach($search[0] as $k => $item) {
                                $search[1][$k] = stripslashes($search[1][$k]);
                                $search[1][$k] = unicode_encode($search[1][$k]);
                                $titles = json_decode($search[1][$k], 1);
                                $titlesnew = $titletext = array();
                                foreach($titles as $title => $url) {
                                        $titlekey = strip_tags(isset($lang[$title]) ? $lang[$title] : iconv('UTF-8', 'GBK', $title));
                                        $titlesnew[$titlekey] = $url;
                                        if($titlekey{0} != '_') {
                                                $titletext[] = $titlekey;
                                        }
                                }
                                $data = $search[2][$k];
                                preg_match_all("/(showsetting|showtitle|showtableheader|showtips)\('(\w+)'/", $data, $r);
                                if($r[2]) {
                                        $l = array();
                                        if($titletext) {
                                                $l[] = implode(' &#187; ', $titletext);
                                        }
                                        foreach($r[2] as $i) {
                                                $l[] = strip_tags($i);
                                                $l[] = strip_tags($lang[$i]);
                                                $preg = '/\|('.preg_quote($i).'_comment)\|/';
                                                preg_match_all($preg, $langi, $lr);
                                                if($lr[1]) {
                                                        foreach($lr[1] as $li) {
                                                                $l[] = strip_tags($lang[$li]);
                                                        }
                                                }
                                        }
                                        $indexdata[] = array('index' => $titlesnew, 'text' => $l);
                                }
                        }
                }

        }
}

$return = '<?php

/**
 *      [Discuz!] (C)2001-2099 Comsenz Inc.
 *      This is NOT a freeware, use is subject to license terms
 *
 *      $Id: adminsearchindex2.php 26203 2011-12-05 10:07:49Z monkey $
 *
 *        This file is automatically generate
 */

$lang = '.var_export($indexdata, 1).';

?>';

file_put_contents($searchindex, $return);

echo 'Done!';

function clearnote($s) {
        if(!preg_match('/^search/i', $s)) {
                return '';
        } else {
                return '/*'.$s.'*/';
        }
}

function unicode_encode($name) {
        $name = iconv('GBK', 'UCS-2', $name);
        $len = strlen($name);
        $str = '';
        for ($i = 0; $i < $len - 1; $i = $i + 2) {
                $c = $name[$i];
                $c2 = $name[$i + 1];
                if (ord($c) > 0) {
                        $str .= '\u'.base_convert(ord($c), 10, 16).base_convert(ord($c2), 10, 16);
                } else {
                        $str .= $c2;
                }
        }
        return $str;
}

执行后如图所示,则表示全新生成后台索引成功:


站长窝论坛版权声明 1、本帖标题:Discuz!X3.4后台搜索索引生成工具(优化 后台搜索索引更新,同时恢复索引记录标记)
2、论坛网址:站长窝论坛
3、站长窝论坛的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
4、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
5、站长窝论坛一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本帖由游客1在站长窝论坛《程序综合区》版块原创发布, 转载请注明出处!
评论
最新回复 (0)
返回
发新帖