直接下载替换文件或自行修改
修复tag过长超过120数据库出错,建议大家手动加上,就不写成插件了。
//修改model目录tag.func.php文件
替换function well_tag_post、function well_tag_post_update
增加function df_tag_json_length
function well_tag_post($tid, $fid, $str)
{
// hook model_tag_post_start.php
if (empty($str)) return '';
$arr = explode(',', $str);
$arr = array_filter($arr);
if (empty($arr)) return '';
$arr = array_unique($arr);
// hook model_tag_post_end.php
// $tags中的tagid和帖子tid入库 创建帖子时json入库主题附表
$json = well_tag_process($tid, $fid, $arr);
// 调用封装函数
$json = df_tag_json_length($json, 120);
return $json;
}
// 修改内容标签预处理 $newtag数组, $oldtag旧的json数据
function well_tag_post_update($tid, $fid, $newtag, $oldtag)
{
// hook model_tag_post_update_start.php
// 如果旧的tag为空 直接创建新标签
if (empty($oldtag)) return well_tag_post($tid, $fid, $newtag);
// hook model_tag_post_update_before.php
// json旧标签
if (!is_array($oldtag)) {
$oldtag = xn_json_decode($oldtag);
is_array($oldtag) || $oldtag = array();
}
// hook model_tag_post_update_center.php
$newtag = explode(',', $newtag);
$newtag = array_filter($newtag);
$newtag = array_unique($newtag);
// hook model_tag_post_update_middle.php
//if (empty($newtag)) return '';
$create_tag = array();
$tagarr = array();
if (!empty($newtag)) {
foreach ($newtag as $tagname) {
// 搜索数组键值,并返回对应的键名
$tagname = filter_all_html($tagname);
$key = array_search($tagname, $oldtag);
if (FALSE === $key) {
// 创建新数组$new_tags
$create_tag[] = $tagname;
} else {
// 保留的旧标签
$tagarr[$key] = $tagname;
// 销毁旧数组保留的标签 余下为需要删除的标签
unset($oldtag[$key]);
}
}
}
// hook model_tag_post_update_after.php
if (!empty($oldtag)) {
$tagids = array();
foreach ($oldtag as $tagid => $tagname) {
$tagids[] = $tagid;
}
well_oldtag_delete($tagids, $tid);
}
$r = well_tag_process($tid, $fid, $create_tag, $tagarr);
// hook model_tag_post_update_end.php
$r = df_tag_json_length($r, 120);
return $r;
}
// hook model__tag_end.php
//json长度处理
function df_tag_json_length($json, $max_length = 120) {
if (empty($json)) {
return $json;
}
if (xn_strlen($json) <= $max_length) {
return $json;
}
$json_truncated = xn_substr($json, 0, $max_length - 1);
$json_truncated = rtrim($json_truncated, ',');
return $json_truncated . '}';
}
