622 lines
24 KiB
PHP
Raw Normal View History

2024-08-31 01:03:37 +08:00
<?php
/*
* @link http://kodcloud.com/
* @author warlee | e-mail:kodcloud@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kodcloud.com/tools/license/license.txt
*/
class explorerUserShare extends Controller{
private $model;
function __construct(){
parent::__construct();
$this->model = Model('Share');
}
// 通过文档获取分享没有则返回false;
public function get(){
$path = Input::get('path','require');
$pathParse = KodIO::parse($path);$shareInfo = false;
if($pathParse['type'] == KodIO::KOD_SHARE_ITEM){
show_json($this->getShareInfo($pathParse['id']));
}
// 物理路径,io路径;
if( $pathParse['type'] == KodIO::KOD_IO || !$pathParse['type'] ){
$shareInfo = $this->model->getInfoBySourcePath(rtrim($path,'/'));
}else{
$sourceID = KodIO::sourceID($path);
$shareInfo = $this->model->getInfoByPath($sourceID);
}
if($shareInfo && $shareInfo['userID'] != KodUser::id()){
show_json(LNG('explorer.noPermissionAction'),false);
}
show_json($shareInfo);
}
// 内部协作分享,分享对象角色权限为拥有者时,可以编辑该协作分享(成员及权限/过期时间)
private function getShareInfo($shareID,$checkAuth = true){
$shareInfo = $this->model->getInfo($shareID);
if(!$shareInfo){show_json(LNG('explorer.noPermissionAction'),false);}
if($shareInfo['userID'] == KodUser::id()){return $shareInfo;}
$sourceInfo = $this->sharePathInfo($shareID);
if( !$sourceInfo || !$sourceInfo['auth'] ||
!Model('Auth')->authCheckRoot($sourceInfo['auth']['authValue']) ){
if($checkAuth){ // 编辑后不检测权限(与我协作-管理者,移除或降低自己的权限)
return show_json(LNG('explorer.noPermissionAction'),false);
}
}
$shareInfo['selfIsShareToUser'] = true;
$shareInfo['sourceInfo'] = $sourceInfo;
return $shareInfo;
}
// 分享信息处理;
public function shareAppendItem(&$item){
$shareInfo = _get($item,'shareInfo');
if(!isset($item['sourceInfo'])){$item['sourceInfo'] = array();}
if(isset($item['sourceInfo']['shareInfo']) ) return $item;
static $shareList = false;
if($shareList === false){
$shareList = $this->model->listSimple();
$shareList = array_to_keyvalue($shareList,'sourcePath');
}
$shareInfo = $shareInfo ? $shareInfo : _get($shareList,$item['path']);
$shareInfo = $shareInfo ? $shareInfo : _get($shareList,rtrim($item['path'],'/'));
$shareInfo = $shareInfo ? $shareInfo : _get($shareList,rtrim($item['path'],'/').'/');
if(!$shareInfo) return $item;
$picker = 'shareID,shareHash,createTime,sourceID,userID,shareSource,isLink,isShareTo,timeTo,options';
if($shareInfo['isLink']=='1'){$picker.=',numDownload,numView';}
$item['sourceInfo']['shareInfo'] = array_field_key($shareInfo,explode(',',$picker));
return $item;
}
/**
* 我的分享列表
* 点击进入对应文档目录;
* link/to
*/
public function myShare($type=''){
$shareList = $this->model->listData($type);
$result = array('fileList'=>array(),'folderList'=>array(),'pageInfo'=>$shareList['pageInfo']);
$sourceArray = array_to_keyvalue($shareList['list'],'','sourceID');
$sourceArray = array_unique($sourceArray);
if($sourceArray){
$where = array(
'sourceID' => array('in',$sourceArray),
'isDelete' => 0,
);
$sourceList = Model('Source')->listSource($where);
$sourceArray = array_merge($sourceList['folderList'],$sourceList['fileList']);
$sourceArray = array_to_keyvalue($sourceArray,'sourceID');
}
$notExist = array();
$sourceCountGroup = 0;$sourceCountIO = 0;
foreach ($shareList['list'] as $shareItem) {
$shareItem = $this->shareItemParse($shareItem);
// 物理路径,io路径;
if($shareItem['sourceID'] == '0'){
// IO 对象存储等加速;
$info = $this->sharePathInfoCheck($shareItem['sourcePath']);
}else{
$info = $sourceArray[$shareItem['sourceID']];
}
if(!$info){
$notExist[] = $shareItem['shareID'];
continue;
}
$info['sharePath'] = KodIO::makeShare($shareItem['shareID'],$info['sourceID']);
$info['shareInfo'] = $shareItem;
$key = $info['type'] == 'folder' ? 'folderList':'fileList';
$this->shareTarget($info,$shareItem);
// 协作内容不再有分享权限时处理; 其他人内容--隐藏; 自己的内容-突出显示;(前提:自己有内部协作或外链分享的对应角色权限);
$shareType = $type == 'to' ? 'shareTo':'shareLink';
$authType = $shareType == 'shareTo' ? 'explorer.share':'explorer.shareLink';
if( Action('user.authRole')->authCan($authType) &&
!Action('explorer.authUser')->canShare($shareItem)){
$this->removeShare($shareItem,$shareType);continue;
}
$result[$key][] = $info;
if(!$info['sourceID']){$sourceCountIO++;}
if($info['groupParentLevel']){$sourceCountGroup++;}
}
// if($notExist){$this->model->remove($notExist);}// 自动清除不存在的分享内容;
// 对自己和部门内容进行分组;
$result['groupShow'] = array(
'selfData' => array(
'type' => 'selfData',
'title' => LNG('explorer.pathGroup.shareSelf'),
"filter"=> array('groupParentLevel'=>'_null_','sourceID'=>'')
),
'groupData' => array(
'type' => 'groupData',
'title' => LNG('explorer.pathGroup.shareGroup'),
"filter"=> array('groupParentLevel'=>'','sourceID'=>'')
),
'ioData' => array(
'type' => 'ioData',
'title' => LNG('admin.storage.localStore').'/IO',
"filter"=> array('sourceID'=>'_null_')
),
);
$length = count($result['folderList']) + count($result['fileList']);
if($sourceCountGroup == 0){unset($result['groupShow']['groupData']);}
if($sourceCountIO == 0){unset($result['groupShow']['ioData']);}
if($length <= 3 || count($result['groupShow']) <= 1){unset($result['groupShow']);}
return $result;
}
private function shareItemParse($shareItem){
// 兼容早期版本,该字段为空的情况;
if(!$shareItem['sourcePath'] && $shareItem['sourceID'] != '0'){
$shareItem['sourcePath'] = KodIO::make($shareItem['sourceID']);
}
return $shareItem;
}
private function sharePathInfoCheck($path){
$parse = KodIO::parse($path);
if ($parse['driverType'] == 'io') {
$driver = Model('Storage')->listData($parse['id']);
if (!$driver) return false;
$type = strtolower($driver['driver']);
$typeList = $GLOBALS['config']['settings']['ioClassList'];
$class = 'PathDriver'.(isset($typeList[$type]) ? $typeList[$type] : ucfirst($type));
if( !class_exists($class) ) return false;
}
try {
$info = IO::info($path);
} catch (Exception $e){$info = false;}
return $info;
}
public function shareToMe($type=''){
$allowTree = Model("SystemOption")->get('shareToMeAllowTree');
$showType = Model('UserOption')->get('shareToMeShowType');
if($allowTree == '0'){$showType = 'list';}
if( $showType == 'group' || strpos($type, 'group') === 0){
return Action('explorer.userShareGroup')->get($type);
}
if( $showType == 'user' || strpos($type, 'user') === 0 ){
return Action('explorer.userShareUser')->get($type);
}
Model("share_to")->selectPageReset();// 确保被筛选后分页数据正常;
$shareList = $this->model->listToMe(5000);
Model("share_to")->selectPageRestore();
$shareHide = Model('UserOption')->get('hideList','shareToMe');
$shareHide = $shareHide ? json_decode($shareHide,true):array();
foreach ($shareList['list'] as $key=>$shareItem){
if(isset($shareHide[$shareItem['shareID'].''])){
$shareItem['shareHide'] = 1;
}else{
$shareItem['shareHide'] = 0;
}
$shareList['list'][$key] = $shareItem;
//$type: '':显示内容; hide: 隐藏内容; all: 全部内容;
if($type == '' && $shareItem['shareHide']){$shareList['list'][$key] = false;}
if($type == 'hide' && !$shareItem['shareHide']){$shareList['list'][$key] = false;}
}
$result = $this->shareToMeListMake($shareList['list']);
$result['currentFieldAdd'] = array("pathDesc"=>'['.LNG('admin.setting.shareToMeList').'],'.LNG('explorer.pathDesc.shareToMe'));
return $result;
}
public function shareToMeListMake($shareList){
$result = array('fileList'=>array(),'folderList'=>array());
$sourceArray = array_to_keyvalue($shareList,'','sourceID');
$sourceArray = array_unique($sourceArray);
if($sourceArray){
$where = array(
'sourceID' => array('in',$sourceArray),
'isDelete' => 0,
);
Model('Source')->selectPageReset();
$sourceList = Model('Source')->listSource($where);
Model('Source')->selectPageRestore();
$sourceArray = array_merge($sourceList['folderList'],$sourceList['fileList']);
$sourceArray = array_to_keyvalue($sourceArray,'sourceID');
}
$notExist = array();
foreach ($shareList as $shareItem) {
if(!$shareItem) continue;
$timeout = intval(_get($shareItem,'options.shareToTimeout',0));
if($timeout > 0 && $timeout < time()) continue;// 过期内容;
if($shareItem['sourceID'] == '0'){// 物理路径,io路径;
$info = $this->sharePathInfoCheck($shareItem['sourcePath']);
}else{
$info = $sourceArray[$shareItem['sourceID']];
}
if(!$info){
$notExist[] = $shareItem['shareID'];
continue;
}
$info = $this->_shareItemeParse($info,$shareItem);
if(!$info) continue;
$key = $info['type'] == 'folder' ? 'folderList':'fileList';
if(isset($shareItem['shareHide'])){$info['shareHide'] = $shareItem['shareHide'];}
$result[$key][] = $info;
}
// if($notExist){$this->model->remove($notExist);} // 自动清除不存在的分享内容;
return $result;
}
public function shareDisplay(){
$data = Input::getArray(array(
"shareArr" => array("check"=>"json","default"=>array()),
"isHide" => array("check"=>"bool","default"=>'1'),
));
$shareHide = Model('UserOption')->get('hideList','shareToMe');
$shareHide = $shareHide ? json_decode($shareHide,true):array();
foreach ($data['shareArr'] as $shareID) {
$shareID = $shareID.'';
if($data['isHide'] == '1'){
$shareHide[$shareID] = '1';
}else{
unset($shareHide[$shareID]);
}
}
Model('UserOption')->set('hideList',json_encode($shareHide),'shareToMe');
show_json(LNG('explorer.success'),true);
}
// 分享内容属性; 默认$sourceID为空则分享本身属性; 指定则文件夹字内容属性;
public function sharePathInfo($shareID,$sourceID=false,$withChildren=false){
$shareInfo = $this->model->getInfo($shareID);
if($shareInfo['sourceID'] == '0'){
$truePath = KodIO::clear($shareInfo['sourcePath'].$sourceID);
// $sourceInfo = IO::info($truePath);
$sourceInfo = array('path'=>$truePath);
}else{
$sourceID = $sourceID ? $sourceID : $shareInfo['sourceID'];
if(!$withChildren){
$sourceInfo = Model('Source')->pathInfo($sourceID);
}else{
$sourceInfo = Model('Source')->pathInfoMore($sourceID);
}
}
// pr($sourceID,$truePath,$sourceInfo,$shareInfo);exit;
if(!$this->shareIncludeCheck($shareInfo,$sourceInfo)) return false;
$sourceInfo = $this->_shareItemeParse($sourceInfo,$shareInfo);
return $sourceInfo;
}
// 检测附带文档是否归属于该分享;
private function shareIncludeCheck($shareInfo,$sourceInfo){
// pr_trace($shareInfo,$sourceInfo);exit;
if(!$shareInfo || !$sourceInfo) return false;
// 物理路径,io路径;
if($shareInfo['sourceID'] == '0'){
$sharePath = KodIO::clear($shareInfo['sourcePath']);
$thisPath = KodIO::clear($sourceInfo['path']);
if(substr($thisPath,0,strlen($sharePath)) != $sharePath) return false;
return true;
}
$shareSource = $shareInfo['sourceInfo'];
// 分享目标为文件,追加子内容必须是自己;
if( $shareSource['type'] == 'file' &&
$shareSource['sourceID'] != $sourceInfo['sourceID']){
return false;
}
if( $shareSource['type'] == 'folder' &&
strpos($sourceInfo['parentLevel'],$shareSource['parentLevel']) !== 0 ){
return false;
}
return true;
}
public function sharePathList($parseInfo){
$shareID = $parseInfo['id'];
$param = explode('/',trim($parseInfo['param'],'/'));
$shareInfo = $this->model->getInfo($shareID);
// 物理路径,io路径;
if($shareInfo['sourceID'] == '0'){
$truePath = KodIO::clear($shareInfo['sourcePath'].$parseInfo['param']);
$sourceInfo = $this->sharePathInfoCheck($truePath);
if(!$sourceInfo) return false;
$list = IO::listPath($truePath);
}else{
$sourceID = $param[0] ? $param[0] : $shareInfo['sourceID'];
$sourceInfo = Model('Source')->pathInfo($sourceID);
if(!$this->shareIncludeCheck($shareInfo,$sourceInfo)) return false;
$list = Model('Source')->listSource(array('parentID' => $sourceID));
}
foreach ($list as $key => &$keyList) {
if($key != 'folderList' && $key != 'fileList' ) continue;
foreach ($keyList as &$source) {
$source = $this->_shareItemeParse($source,$shareInfo);
};unset($source);
};unset($keyList);
$list['current'] = $this->_shareItemeParse($sourceInfo,$shareInfo);
// pr($parseInfo,$truePath,$sourceInfo,$shareInfo,$list);exit;
return $list;
}
/**
* 处理source到分享列表
* 去除无关字段处理parentLevelpathDisplay
*/
public function _shareItemeParse($source,$share){
if(!$source || !is_array($source)){return false;}
$share = $this->shareItemParse($share);
$sourceBefore = $source;
$user = Model('User')->getInfoSimpleOuter($share['userID']);
$source['auth'] = Model("SourceAuth")->authMake($share['authList']);//覆盖原来文档权限;每次进行计算
$source['shareUser'] = $user;
$source['shareCreateTime'] = $share['createTime'];
$source['shareModifyTime'] = $share['modifyTime'];
$source['shareID'] = $share['shareID'];
$sourceRoot = isset($share['sourceInfo']) ? $share['sourceInfo'] : $source;
// 物理路径,io路径;
$pathAdd = $source['sourceID'];
if($share['sourceID'] == '0'){
$sharePath = KodIO::clear($share['sourcePath']);
$thisPath = KodIO::clear($source['path']);
$pathAdd = substr($thisPath,strlen($sharePath));
if(substr($thisPath,0,strlen($sharePath)) != $sharePath) return false;
// 子目录不再追加;
if($pathAdd){unset($source['shareInfo']);}
}
$source['path'] = KodIO::makeShare($share['shareID'],$pathAdd);
$source['path'] = KodIO::clear($source['path']);
if($source['auth'] && $share['sourceID'] != '0'){
$listData = array($source);
Model('Source')->_listAppendAuthSecret($listData);
$source = $listData[0];
if($share['userID'] == USER_ID){
$source['auth'] = $share['sourceInfo']['auth'];
}
}
// 分享者名字;
$userName = $user['nickName'] ? $user['nickName']:$user['name'];
$displayUser = '['.$userName.']'.LNG('common.share').'-'.$sourceRoot['name'];
if($share['userID'] == USER_ID){
$displayUser = $sourceRoot['name'];
$picker = 'shareID,shareHash,createTime,shareSource,isLink,isShareTo,timeTo,options,numDownload,numView';
$shareInfoAdd = array_field_key($share,explode(',',$picker));
$source['sourceInfo']['selfShareInfo'] = array_merge($sourceRoot,$shareInfoAdd);
if(!$pathAdd){$source['sourceInfo']['shareInfo'] = $share;}
}
if($sourceRoot['targetType'] == 'group'){
$source['sharePathFrom'] = $sourceRoot['pathDisplay'];
}else{
$source['sharePathFrom'] = LNG('explorer.toolbar.rootPath').'('.$userName.')';
}
$source['parentLevel'] = ',0,'.substr($source['parentLevel'],strlen($sourceRoot['parentLevel']));
$source['pathDisplay'] = $displayUser.'/'.substr($source['pathDisplay'],strlen($sourceRoot['pathDisplay']));
if($share['sourceID'] == '0'){
$source['parentLevel'] = '';
$source['pathDisplay'] = $displayUser.'/'.$pathAdd;
}
$source['pathDisplay'] = KodIO::clear($source['pathDisplay']);
if($source['type'] == 'folder'){
$source['pathDisplay'] = rtrim($source['pathDisplay'],'/').'/';
}
// 读写权限;
if($source['auth']){// 读写权限同时受: 来源权限+设置权限;
$isWriteable = true;$isReadable = true;
if($share['sourceID'] == '0'){ // 物理路径协作分享,保留原来权限;
$isWriteable = array_key_exists('isWriteable',$source) ? $source['isWriteable'] : true;
$isReadable = array_key_exists('isReadable',$source) ? $source['isReadable'] : true;
}
// 物理路径分享,自己访问自己分享的内容时权限处理;
if($share['sourceID'] == '0' && $share['userID'] == USER_ID){
$source['auth']['authValue'] = AuthModel::authAll();
}
$source['isWriteable'] = $isWriteable && AuthModel::authCheckEdit($source['auth']['authValue']);
$source['isReadable'] = $isReadable && AuthModel::authCheckView($source['auth']['authValue']);
}
if(isset($source['sourceInfo']['tagInfo'])){
unset($source['sourceInfo']['tagInfo']);
}
$this->shareTarget($source,$share);
// 协作内容不再有分享权限时处理; 其他人内容--隐藏; 自己的内容-突出显示;
if(!Action('explorer.authUser')->canShare($share)){return false;}
// pr($source,$sourceBefore,$share);exit;
return $source;
}
private function shareTarget(&$source,$share){
$isRoot = false;
if($source['sourceID'] && $source['sourceID'] == $share['sourceID']){$isRoot = true;}
if($share['sourcePath'] && count(explode('/',trim($source['path'],'/'))) == 1){$isRoot = true;}
if(!$source['shareID']){$isRoot = true;}
$userArr = array();$groupArr = array();
$source['sourceInfo']['shareIsRoot'] = $isRoot;
if(!$isRoot) return; // 子文件夹不显示协作成员;
if($isRoot){$share = $this->model->getInfo($share['shareID']);}//获取完整的authList;
foreach($share['authList'] as $item){
$auth = Model("SourceAuth")->authInfo($item);
if($item['targetType'] == SourceModel::TYPE_GROUP){
$item = Model("Group")->getInfoSimple($item['targetID']);
$item['auth'] = $auth;$groupArr[] = $item;
}else{
$item = Model("User")->getInfoSimpleOuter($item['targetID']);
$item['auth'] = $auth;$userArr[] = $item;
}
}
$source['shareTarget'] = array_merge($groupArr,$userArr);
}
/**
* 添加分享;
*/
public function add(){
$data = $this->_getParam('sourceID');
$pathParse = KodIO::parse($data['path']);
$this->checkRoleAuth($data['isLink'] ? 'shareLink':'shareTo');
// 物理路径,io路径;
$data['sourcePath'] = KodIO::clear($data['path']);
if( $pathParse['type'] == KodIO::KOD_IO || !$pathParse['type'] ){
$result = $this->model->shareAdd('0',$data);
}else{
$sourceID = KodIO::sourceID($data['path']);
$pathInfo = Model('Source')->pathInfo($sourceID);
$this->checkSetAuthAllow($data['authTo'],$pathInfo);
$result = $this->model->shareAdd($sourceID,$data);
}
if(!$result) show_json(LNG('explorer.error'),false);
$shareInfo = $this->model->getInfo($result);
show_json($shareInfo,true);
}
/**
* 编辑分享
*/
public function edit(){
$data = $this->_getParam('shareID');
$this->checkRoleAuth($data['isLink'] == '1' ? 'shareLink':'shareTo');
$shareInfo = $this->getShareInfo($data['shareID']);
$this->checkSetAuthAllow($data['authTo'],$shareInfo['sourceInfo']);
$result = $this->model->shareEdit($data['shareID'],$data);
// 编辑后不检测权限(与我协作-管理者,移除或降低自己的权限)
if(!$result) show_json(LNG('explorer.error'),false);
show_json($this->getShareInfo($data['shareID'],false));
}
// 协作分享: 可以设置的权限,必须小于等于自己在当前文档的权限;
public function checkSetAuthAllow($authTo,$pathInfo){
if(!$authTo || !$pathInfo || !$pathInfo['auth']) return;
$selfAuth = intval($pathInfo['auth']['authInfo']['auth']);
foreach ($authTo as $authItem){
$authInfo = Model("Auth")->listData($authItem['authID']);
$authBoth = $selfAuth | intval($authInfo['auth']);
if($authBoth == $selfAuth) continue;
show_json(LNG('admin.auth.errorAdmin'),false);
}
}
private function checkRoleAuth($shareType){
if(KodUser::isRoot()){return;}
$canShareTo = Action('user.authRole')->authCan('explorer.share');
$canShareLink = Action('user.authRole')->authCan('explorer.shareLink');
if($shareType == 'shareTo' && !$canShareTo){
show_json(LNG('explorer.noPermissionAction'),false,1004);
}
if($shareType == 'shareLink' && !$canShareLink){
show_json(LNG('explorer.noPermissionAction'),false,1004);
}
}
/**
* 添加/编辑分享;
* shareType:
* 0: 暂未指定分享
* 1: 内部指定用户分享
* 2: 外链分享
* 3: 内部指定、外链分享同时包含
*
* 外链分享; title,password,timeTo,options
* authTo: [
* {"targetType":"1","targetID":"23","authID":"1"},
* {"targetType":"2","targetID":"3","authDefine":"512"}
* ]
* param: title,password,timeTo,options
*/
private function _getParam($key='shareID'){
$keys = array(
"isLink" => array("check"=>"bool", "default"=>0),
"isShareTo" => array("check"=>"bool", "default"=>0),
"title" => array("check"=>"require","default"=>''),
"password" => array("default"=>''),//密码设置为空处理;
"timeTo" => array("check"=>"require","default"=>0),
"options" => array("check"=>"json", "default"=>array()),
"authTo" => array("check"=>"json", "default"=>array()),
);
//修改默认值为null不修改
if($key == 'shareID'){
$keys['shareID'] = array("check"=>"int");
foreach ($keys as $key => &$value) {
$value['default'] = null;
};unset($value);
}else{//添加时,目录值
$keys['path'] = array("check"=>"require");
}
$data = Input::getArray($keys);
// 外链分享检测;
if($data['isLink'] == '1'){
$options = Model('SystemOption')->get();
if($options['shareLinkAllow'] == '0'){
show_json(LNG('admin.setting.shareLinkAllowTips'),false);
}
if($options['shareLinkPasswordAllowEmpty'] == '0' && !$data['password']){
show_json(LNG('user.pwdNotNull'),false);
}
if($options['shareLinkAllowGuest'] == '0'){
$data["options"]['onlyLogin'] = '1';
}
// 外链分享,分享者角色没有上传权限时, 不允许开启允许上传;
if(!Action('user.authRole')->authCan('explorer.upload')){
$data["options"]['canUpload'] = '0';
$data["options"]['canEditSave'] = '0';
if($options['shareLinkAllowEdit'] == '0'){$data["options"]['canEditSave'] = '0';}
}
}
return $data;
}
/**
* 批量取消分享;
* 如果制定了分享类型: 则不直接删除数据;
*/
public function del() {
$list = Input::get('dataArr','json');
$shareType = _get($this->in,'type','');
// 批量删除指定内部协作分享, or外链分享;
foreach ($list as $shareID) {
$shareInfo = $this->model->getInfo($shareID);
if(!$shareInfo || $shareInfo['userID'] != KodUser::id()){continue;}
if(!$shareType){
$res = $this->model->remove(array($shareID));
continue;
}
$res = $this->removeShare($shareInfo,$shareType);
}
$msg = !!$res ? LNG('explorer.success'): LNG('explorer.error');
show_json($msg,!!$res);
}
public function removeShare($shareInfo,$shareType){
$this->checkRoleAuth($shareType == 'shareTo' ? 'shareTo':'shareLink');
if($shareType == 'shareTo'){
$data = array('isShareTo'=>0,'authTo'=>array(),'options'=>$shareInfo['options']);
if (isset($data['options']['shareToTimeout'])) unset($data['options']['shareToTimeout']);
}else{
$data = array('isLink'=>0);
}
// 都为空时则删除数据, 再次分享shareID更新;
if( $data['isLink'] == 0 && $shareInfo['isShareTo'] == 0 ||
$data['isShareTo'] == 0 && $shareInfo['isLink'] == 0 ){
return $this->model->remove(array($shareInfo['shareID']));
}
return $this->model->shareEdit($shareInfo['shareID'],$data);
}
}