Wordpress Album plugin nextgen-gallery add directory to convert Chinese to pinyin solution _php tips

Source: Internet
Author: User
Tags explode ord

NextGEN Gallery is a famous album plugin in WordPress, unfortunately does not support Unicode characters such as Chinese, this article will describe how to convert a directory to Ruby (when adding an atlas).

Take NextGen 1.6.2 as an example:

The path to "New Atlas/Picture" is: admin.php?page=nggallery-add-gallery, we find in nextgen-gallery/admin/admin.php "Nggallery-add-gallery ”,

Copy Code code as follows:

Switch ($_get[' page ']) {
Case "Nggallery-add-gallery":
Include_once (DirName (__file__). '/functions.php '); admin functions
Include_once (DirName (__file__). '/addgallery.php '); Nggallery_admin_add_gallery
$ngg->addgallery_page = new Nggaddgallery ();
$ngg->addgallery_page->controller ();
Break

Class Nggaddgallery in addgallery.php, when the mouse hovers over the new Atlas tab, the URL is visible from the browser's status bar admin.php?page=nggallery-add-gallery#addgallery , find "Addgallery" in addgallery.php to see its invocation:
Nggadmin::create_gallery ($newgallery, $defaultpath);
The Nggadmin class is located in Functions.php, and the Create_gallery function is modified as follows: (Red Bold is the newly added row)
Copy Code code as follows:

Require_once (' cn2pinyin.php ');
/**
* Nggadmin-class for admin operation
*
* @package NextGEN Gallery
* @author Alex Rabe
* @copyright 2007-2010
* @access Public
*/
Class nggadmin{
/**
* Create a new gallery & folder
*
* Add Chinese support by:elf Sundae
*
* @class Nggadmin
* @param string $gallerytitle
* @param string $defaultpath
* @param bool $output If the function should show a error messsage or not
* @return
*/
function Create_gallery ($gallerytitle, $defaultpath, $output = True) {
Global $wpdb, $user _id;
Get the current user ID
Get_currentuserinfo ();
Cleanup pathname
$galleryname = Sanitize_file_name ($gallerytitle);
Convert Chinese to Pinyin
$galleryname = Cn2pinyin ($galleryname, 1);
$galleryname = apply_filters (' Ngg_gallery_name ', $galleryname);
$nggpath = $defaultpath. $galleryname;
$nggRoot = Winabspath. $defaultpath;
$txt = ';

Where Cn2pinyin is the Chinese character converted to phonetic function, located in cn2pinyin.php (new this file).
cn2pinyin.php
Copy Code code as follows:

<?php
/**
*
* Convert Chinese to Pinyin
*
*/
function Cn2pinyin ($_string, $_code= ' gb2312 ') {
$_datakey = "A|ai|an|ang|ao|ba|bai|ban|bang|bao|bei|ben|beng|bi|bian|biao|bie|bin|bing|bo|bu|ca|cai|can|cang|cao |ce|ceng|cha ".
"|chai|chan|chang|chao|che|chen|cheng|chi|chong|chou|chu|chuai|chuan|chuang|chui|chun|chuo|ci|cong|cou|cu|".
"Cuan|cui|cun|cuo|da|dai|dan|dang|dao|de|deng|di|dian|diao|die|ding|diu|dong|dou|du|duan|dui|dun|duo|e|en|er".
"|fa|fan|fang|fei|fen|feng|fo|fou|fu|ga|gai|gan|gang|gao|ge|gei|gen|geng|gong|gou|gu|gua|guai|guan|guang|gui".
"|gun|guo|ha|hai|han|hang|hao|he|hei|hen|heng|hong|hou|hu|hua|huai|huan|huang|hui|hun|huo|ji|jia|jian|jiang".
"|jiao|jie|jin|jing|jiong|jiu|ju|juan|jue|jun|ka|kai|kan|kang|kao|ke|ken|keng|kong|kou|ku|kua|kuai|kuan|kuang" .
"|kui|kun|kuo|la|lai|lan|lang|lao|le|lei|leng|li|lia|lian|liang|liao|lie|lin|ling|liu|long|lou|lu|lv|luan|lue" .
"|lun|luo|ma|mai|man|mang|mao|me|mei|men|meng|mi|mian|miao|mie|min|ming|miu|mo|mou|mu|na|nai|nan|nang|nao|ne".
"|nei|nen|neng|ni|nian|niang|niao|nie|nin|ning|niu|nong|nu|nv|nuan|nue|nuo|o|ou|pa|pai|pan|pang|pao|pei|pen".
"|peng|pi|pian|piao|pie|pin|ping|po|pu|qi|qia|qian|qiang|qiao|qie|qin|qing|qiong|qiu|qu|quan|que|qun|ran|rang" .
"|rao|re|ren|reng|ri|rong|rou|ru|ruan|rui|run|ruo|sa|sai|san|sang|sao|se|sen|seng|sha|shai|shan|shang|shao|".
"She|shen|sheng|shi|shou|shu|shua|shuai|shuan|shuang|shui|shun|shuo|si|song|sou|su|suan|sui|sun|suo|ta|tai|".
"Tan|tang|tao|te|teng|ti|tian|tiao|tie|ting|tong|tou|tu|tuan|tui|tun|tuo|wa|wai|wan|wang|wei|wen|weng|wo|wu".
"|xi|xia|xian|xiang|xiao|xie|xin|xing|xiong|xiu|xu|xuan|xue|xun|ya|yan|yang|yao|ye|yi|yin|ying|yo|yong|you".
"|yu|yuan|yue|yun|za|zai|zan|zang|zao|ze|zei|zen|zeng|zha|zhai|zhan|zhang|zhao|zhe|zhen|zheng|zhi|zhong|".
"Zhou|zhu|zhua|zhuai|zhuan|zhuang|zhui|zhun|zhuo|zi|zong|zou|zu|zuan|zui|zun|zuo";
$_datavalue = " -20319|-20317|-20304|-20295|-20292|-20283|-20265|-20257|-20242|-20230|-20051|-20036|-20032|-20026 |-20002|-19990 ".
"|-19986|-19982|-19976|-19805|-19784|-19775|-19774|-19763|-19756|-19751|-19746|-19741|-19739|-19728|-19725".
"|-19715|-19540|-19531|-19525|-19515|-19500|-19484|-19479|-19467|-19289|-19288|-19281|-19275|-19270|-19263".
"|-19261|-19249|-19243|-19242|-19238|-19235|-19227|-19224|-19218|-19212|-19038|-19023|-19018|-19006|-19003".
"|-18996|-18977|-18961|-18952|-18783|-18774|-18773|-18763|-18756|-18741|-18735|-18731|-18722|-18710|-18697".
"|-18696|-18526|-18518|-18501|-18490|-18478|-18463|-18448|-18447|-18446|-18239|-18237|-18231|-18220|-18211".
"|-18201|-18184|-18183|-18181|-18012|-17997|-17988|-17970|-17964|-17961|-17950|-17947|-17931|-17928|-17922".
"|-17759|-17752|-17733|-17730|-17721|-17703|-17701|-17697|-17692|-17683|-17676|-17496|-17487|-17482|-17468".
"|-17454|-17433|-17427|-17417|-17202|-17185|-16983|-16970|-16942|-16915|-16733|-16708|-16706|-16689|-16664".
"|-16657|-16647|-16474|-16470|-16465|-16459|-16452|-16448|-16433|-16429|-16427|-16423|-16419|-16412|-16407".
"|-16403|-16401|-16393|-16220|-16216|-16212|-16205|-16202|-16187|-16180|-16171|-16169|-16158|-16155|-15959".
"|-15958|-15944|-15933|-15920|-15915|-15903|-15889|-15878|-15707|-15701|-15681|-15667|-15661|-15659|-15652".
"|-15640|-15631|-15625|-15454|-15448|-15436|-15435|-15419|-15416|-15408|-15394|-15385|-15377|-15375|-15369".
"|-15363|-15362|-15183|-15180|-15165|-15158|-15153|-15150|-15149|-15144|-15143|-15141|-15140|-15139|-15128".
"|-15121|-15119|-15117|-15110|-15109|-14941|-14937|-14933|-14930|-14929|-14928|-14926|-14922|-14921|-14914".
"|-14908|-14902|-14894|-14889|-14882|-14873|-14871|-14857|-14678|-14674|-14670|-14668|-14663|-14654|-14645".
"|-14630|-14594|-14429|-14407|-14399|-14384|-14379|-14368|-14355|-14353|-14345|-14170|-14159|-14151|-14149".
"|-14145|-14140|-14137|-14135|-14125|-14123|-14122|-14112|-14109|-14099|-14097|-14094|-14092|-14090|-14087".
"|-14083|-13917|-13914|-13910|-13907|-13906|-13905|-13896|-13894|-13878|-13870|-13859|-13847|-13831|-13658".
"|-13611|-13601|-13406|-13404|-13400|-13398|-13395|-13391|-13387|-13383|-13367|-13359|-13356|-13343|-13340".
"|-13329|-13326|-13318|-13147|-13138|-13120|-13107|-13096|-13095|-13091|-13076|-13068|-13063|-13060|-12888".
"|-12875|-12871|-12860|-12858|-12852|-12849|-12838|-12831|-12829|-12812|-12802|-12607|-12597|-12594|-12585".
"|-12556|-12359|-12346|-12320|-12300|-12120|-12099|-12089|-12074|-12067|-12058|-12039|-11867|-11861|-11847".
"|-11831|-11798|-11781|-11604|-11589|-11536|-11358|-11340|-11339|-11324|-11303|-11097|-11077|-11067|-11055".
"|-11052|-11045|-11041|-11038|-11024|-11020|-11019|-11018|-11014|-10838|-10832|-10815|-10800|-10790|-10780".
"|-10764|-10587|-10544|-10533|-10519|-10331|-10329|-10328|-10322|-10315|-10309|-10307|-10296|-10281|-10274".
"|-10270|-10262|-10260|-10256|-10254";
$_tdatakey = Explode (' | ', $_datakey);
$_tdatavalue = Explode (' | ', $_datavalue);
$_data = (php_version >= ' 5.0 ')? Array_combine ($_tdatakey, $_tdatavalue): _array_combine ($_tdatakey, $_tdatavalue);
Arsort ($_data);
Reset ($_data);
if ($_code!= ' gb2312 ')
$_string = _U2_UTF8_GB ($_string);
$_res = ';
for ($i = 0; $i < strlen ($_string); $i + +) {
$_p = Ord (substr ($_string, $i, 1));
if ($_p > 160) {
$_q = Ord (substr ($_string, + + $i, 1));
$_p = $_p * 256 + $_q-65536;
}
$_res. = _pinyin ($_p, $_data);
}
Return Preg_replace ("/[^a-z0-9]*/", "", $_res);
}
function _pinyin ($_num, $_data) {
if ($_num > 0 && $_num < 160)
return Chr ($_num);
ElseIf ($_num < -20319 | | | $_num >-10247)
Return ";
else {
foreach ($_data as $k => $v) {
if ($v <= $_num)
Break
}
return $k;
}
}
function _u2_utf8_gb ($_c) {
$_string = ';
if ($_c < 0x80)
$_string. = $_c;
ElseIf ($_c < 0x800) {
$_string. = Chr (0xc0 | $_c >> 6);
$_string. = Chr (0x80 | $_c & 0x3F);
} elseif ($_c < 0x10000) {
$_string. = Chr (0xe0 | $_c >> 12);
$_string. = Chr (0x80 | $_c >> 6 & 0x3F);
$_string. = Chr (0x80 | $_c & 0x3F);
} elseif ($_c < 0x200000) {
$_string. = Chr (0xF0 | $_c >> 18);
$_string. = Chr (0x80 | $_c >> & 0x3F);
$_string. = Chr (0x80 | $_c >> 6 & 0x3F);
$_string. = Chr (0x80 | $_c & 0x3F);
}
Return Iconv (' UTF-8 ', ' GB2312 ', $_string);
}
function _array_combine ($_ARR1, $_ARR2) {
for ($i = 0; $i < count ($_ARR1); $i + +)
$_res[$_arr1[$i]] = $_arr2[$i];
return $_res;
}
Usage:
The second argument is left blank for gb1232 encoding
echo Cn2pinyin (' Chinese test ');
The second parameter is arbitrarily set to UTF-8 encoding
echo Cn2pinyin (' Chinese test ', 1);
?>

Download cn2pinyin.php At:http://xiazai.jb51.net/201012/yuanma/cn2pinyin.rar
Also, modify the name in the new atlas to support character hints:
In addgallery.php, line:304
Copy Code code as follows:

function Tab_addgallery () {
?>
<!--Create Gallery-->
/// ....
<?php _e (' Create a new, empty gallery below the folder ', ' Nggallery ');? > <strong><?php echo $this->defaultpath ></strong><br/>
<?php}?>
<i> (the Atlas name supports the following characters: Chinese, A-Z, A-Z, 0-9 、-、 _, Chinese will automatically convert to pinyin) </i></td>
</tr>
<?php do_action (' ngg_add_new_gallery_form ');?>
</table>
//...
</form>

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.