* finish task #2938.
This commit is contained in:
@@ -2389,4 +2389,52 @@ class projectModel extends model
|
||||
if(isset($fullTrees[0]) and empty($fullTrees[0]->children)) array_shift($fullTrees);
|
||||
return array_values($fullTrees);
|
||||
}
|
||||
|
||||
public function toPinyin($products)
|
||||
{
|
||||
global $app;
|
||||
static $pinyin;
|
||||
static $dataKeys;
|
||||
if(empty($pinyin)) $pinyin = $app->loadClass('pinyin');
|
||||
|
||||
$joinOptions = '';
|
||||
$sign = ' aNd ';
|
||||
foreach($products as $value)
|
||||
{
|
||||
if(!isset($dataKeys[$value->name])) $joinOptions .= str_replace($sign, ' and ', $value->name) . $sign;
|
||||
}
|
||||
|
||||
if($joinOptions)
|
||||
{
|
||||
$valuesPinyin = $pinyin->romanize($joinOptions);
|
||||
$signLenth = strlen($sign);
|
||||
$pinyinSign = trim($sign);
|
||||
$pySignLenth = strlen($pinyinSign);
|
||||
while($joinOptions)
|
||||
{
|
||||
$valuePinyin = '';
|
||||
$value = '';
|
||||
|
||||
$pinyinPos = strpos($valuesPinyin, $pinyinSign);
|
||||
if($pinyinPos !== false)
|
||||
{
|
||||
$valuePinyin = substr($valuesPinyin, 0, $pinyinPos);
|
||||
$valuesPinyin = substr($valuesPinyin, $pinyinPos + $pySignLenth);
|
||||
}
|
||||
|
||||
$valuePos = strpos($joinOptions, $sign);
|
||||
if($valuePos === false) break;
|
||||
$value = substr($joinOptions, 0, $valuePos);
|
||||
$joinOptions = substr($joinOptions, $valuePos + $signLenth);
|
||||
|
||||
$valuePinyin = preg_split('/[^a-z]+/iu', trim($valuePinyin));
|
||||
$valueAbbr = '';
|
||||
foreach($valuePinyin as $wordPinyin) if($wordPinyin) $valueAbbr .= $wordPinyin[0];
|
||||
|
||||
$dataKeys[$value] = empty($valuePinyin) ? '' : join($valuePinyin) . ' ' . $valueAbbr;
|
||||
}
|
||||
}
|
||||
|
||||
return $dataKeys;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user