You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

98 lines
3.7 KiB

<?php
/**
* Created by PhpStorm.
* User: a
* Date: 2018/3/29
* Time: 15:08
*/
//修改resources表和folder表pfid
$sql1 = 'ALTER TABLE ' . DB::table('resources') . ' MODIFY pfid int(11) NOT NULL DEFAULT 0';
$sql2 = 'ALTER TABLE ' . DB::table('folder') . ' MODIFY pfid int(11) NOT NULL DEFAULT 0';
DB::query($sql1);
DB::query($sql2);
//处理更新之后群组开关问题
DB::update('organization', array('manageon' => 1, 'available' => 1, 'syatemon' => 1), "1");
//修复继承权限
//判断是否已经存在pathkey字段,不存在则添加
if (!DB::result_first("DESCRIBE %t `perm_inherit`", array('folder'))) {
$sql = "alter table " . DB::table('folder') . " add column `perm_inherit` int(10) NOT NULL DEFAULT '0' after `perm` ";
DB::query($sql);
}
if (!DB::result_first("DESCRIBE %t `pathkey`", array('resources_path'))) {
$sql = "alter table " . DB::table('resources_path') . " add column `pathkey` varchar(255) NOT NULL DEFAULT '' after `path` ";
DB::query($sql);
}
function create_pathinfo_by_fid($fid, $appid = 0) {
$patharr = array();
if (!$pathdata = C::t('folder')->get_folder_pathinfo_by_fid($fid)) return $patharr;
$pathprefix = ($appid) ? "dzz:app_" . $appid . ":" : '';
$path = '';
$pathkey = '';
foreach ($pathdata as $v) {
$path .= $v['fname'] . '/';
$pathkey .= '_' . $v['fid'] . '_-';
}
if (!$pathprefix) {
$pathprefix = ($v['gid']) ? "dzz:gid_" . $v['gid'] . ":" : "dzz:uid_" . $v['uid'] . ":";
}
$patharr['path'] = $pathprefix . $path;
$patharr['pathkey'] = substr($pathkey, 0, -1);
return $patharr;
}
//修复resource_path表数据
foreach (DB::fetch_all("select f.fid,fa.svalue from %t f left join %t fa on f.fid = fa.fid and fa.skey = %s", array('folder', 'folder_attr', 'appid')) as $value) {
$_appid = false;
if ($value['svalue']) {
$_appid = $value['svalue'];
}
$pdata = create_pathinfo_by_fid($value['fid'], $_appid);
if ($pdata) {
if (!DB::result_first("select count(*) from %t where fid = %d", array('resources_path', $value['fid']))) {
$pdata['fid'] = $value['fid'];
DB::insert('resources_path', $pdata);
} else {
DB::update('resources_path', $pdata, array('fid' => $value['fid']));
}
}
$perm_inherit = perm_check::getPerm1($value['fid']);
DB::update('folder', array('perm_inherit' => $perm_inherit), "fid='{$value[fid]}'");
}
//回收站数据处理
$rids = array();
foreach (DB::fetch_all("select rid from %t", array('resources')) as $v) {
$rids[] = $v['rid'];
}
$delfids = array();
$delrids = array();
foreach (DB::fetch_all("select rid,type,oid from %t where rid in(%n) and isdelete > 0", array('resources', $rids)) as $v) {
if ($v['type'] == 'folder' && $v['oid']) {
$delfids[] = $v['oid'];
}
$delrids[] = $v['rid'];
}
$nodelrids = array_diff($rids, $delrids);
//更改resources表数据
if (count($delrids) > 0) DB::update("resources", array('pfid' => -1), 'rid in(' . dimplode($delrids) . ')');
//更改folder表数据
if (count($delfids) > 0) DB::update("folder", array('pfid' => -1), 'fid in(' . dimplode($delfids) . ')');
//清除回收站中的无用数据
if (count($nodelrids) > 0) DB::delete('resources_recyle', 'rid in(' . dimplode($nodelrids) . ')');
//修复机构部门及群组管理员非成员数据问题
$orgadminer = array();
foreach (DB::fetch_all("select uid,orgid from %t where 1", array('organization_admin')) as $v) {
if (DB::result_first("select count(*) from %t where orgid = %d and uid = %d", array('orgnazination_user', $v['orgid'], $v['uid']))) {
C::t('organization_user')->insert_by_orgid($v['orgid'], $v['uid'], 0);
}
}
DB::update("user" . array('groupid' => 9), array('groupid' => 2));
$finish = true;