diff --git a/core/class/io/io_dzz.php b/core/class/io/io_dzz.php
index eac0958..ad28773 100644
--- a/core/class/io/io_dzz.php
+++ b/core/class/io/io_dzz.php
@@ -129,7 +129,7 @@ class io_dzz extends io_api
global $_G;//123
if (strpos($path, 'attach::') === 0) {
$attach = C::t('attachment')->fetch(intval(str_replace('attach::', '', $path)));
- Hook::listen('io_dzz_getstream_attach',$attach);//挂载点
+ Hook::listen('io_dzz_getstream_attach',$attach);//挂载点
$bz = io_remote::getBzByRemoteid($attach['remote']);
if ($bz == 'dzz') {
return $_G['setting']['attachdir'] . $attach['attachment'];
@@ -145,7 +145,7 @@ class io_dzz extends io_api
} elseif (preg_match('/\w{32}/i', $path)) {
$icoid = trim($path);
$icoarr = C::t('resources')->fetch_by_rid($path);
- Hook::listen('io_dzz_getstream_attach',$icoarr);//挂载点
+ Hook::listen('io_dzz_getstream_attach',$icoarr);//挂载点
$bz = io_remote::getBzByRemoteid($icoarr['remote']);
if ($bz == 'dzz') {
if ($icoarr['type'] == 'video' || $icoarr['type'] == 'dzzdoc' || $icoarr['type'] == 'link') {
@@ -166,12 +166,13 @@ class io_dzz extends io_api
return false;
}
$icoarr = C::t('resources')->fetch_by_rid($rid);
- Hook::listen('io_dzz_getstream_attach',$icoarr);//挂载点
+ Hook::listen('io_dzz_getstream_attach',$icoarr);//挂载点
$bz = io_remote::getBzByRemoteid($icoarr['remote']);
if ($bz == 'dzz') {
if ($icoarr['type'] == 'video' || $icoarr['type'] == 'dzzdoc' || $icoarr['type'] == 'link') {
return $icoarr['url'];
}
+
return $_G['setting']['attachdir'] . $icoarr['attachment'];
} else {
return IO::getStream($bz . '/' . $icoarr['attachment'], $fop);
@@ -188,13 +189,14 @@ class io_dzz extends io_api
global $_G;
if (strpos($path, 'attach::') === 0) {
$attach = C::t('attachment')->fetch(intval(str_replace('attach::', '', $path)));
- Hook::listen('io_dzz_getstream_attach',$attach);//挂载点
- $bz = io_remote::getBzByRemoteid($attach['remote']);
+ Hook::listen('io_dzz_getstream_attach',$attach);//挂载点
+ $bz = io_remote::getBzByRemoteid($attach['remote']);
if ($bz == 'dzz') {
return $_G['siteurl'] . $_G['setting']['attachurl'] . $attach['attachment'];
} else {
return IO::getFileUri($bz . '/' . $attach['attachment'], $fop);
}
+
} elseif (strpos($path, 'dzz::') === 0) {
if (strpos($path, './') !== false) return '';
return $_G['siteurl'] . $_G['setting']['attachurl'] . preg_replace("/^dzz::/", '', $path);
@@ -206,7 +208,7 @@ class io_dzz extends io_api
if ($icoarr['aid']) {
$attachment = C::t('attachment')->fetch($icoarr['aid']);
$icoarr['remote'] = $attachment['remote'];
- Hook::listen('io_dzz_getstream_attach',$icoarr);//挂载点
+ Hook::listen('io_dzz_getstream_attach',$icoarr);//挂载点
$bz = io_remote::getBzByRemoteid($icoarr['remote']);
if ($bz == 'dzz') {
if ($icoarr['type'] == 'video' || $icoarr['type'] == 'dzzdoc' || $icoarr['type'] == 'link') {
@@ -838,8 +840,9 @@ class io_dzz extends io_api
//当文件在回收站时,彻底删除;
//finaldelete 真实删除,不放入回收站
//$force 强制删除,不受权限控制
- public function Delete($path, $force = false)
+ public function Delete($path,$finaldelete=false, $force = false)
{
+
global $_G;
if (strpos($path, 'dzz::') === 0) {
if (strpos($path, './') !== false) return false;
@@ -865,27 +868,19 @@ class io_dzz extends io_api
$filename = end($patharr);
}
- if (!$icoarr = DB::fetch_first("select * from %t where pfid = %d and name = %s and isdelete < 1", array('resources', $pfid, $filename))) {
- return array('rid' => $icoarr['rid'], 'error' => lang('file_longer_exists'));
- }
- $size = 0;
- if ($icoarr['type'] == 'folder') {
- $contains = C::t('resources')->get_contains_by_fid($icoarr['oid'], true);
- $size = $contains['size'];
- } else {
- if ($icoarr['vid'] > 0) {
- $size = DB::result_first("select sum(size) from %t where rid = %s", array('resources_version', $icoarr['rid']));
- } else {
- $size = $icoarr['size'];
- }
- }
- if (perm_check::checkperm('delete', $icoarr)) {
- if ($force) {//强制彻底删除
+ if ($rid = DB::result_first("select rid from %t where pfid = %d and name = %s and isdelete < 1", array('resources', $pfid, $filename))) {
+ $icoarr=C::t('resources')->fetch_by_rid($rid);
+ }else{
+ return array('rid' => $icoarr['rid'], 'error' => lang('file_longer_exists'));
+ }
+
+ if ($force || perm_check::checkperm('delete', $icoarr)) {
+ if ($finaldelete) {//强制彻底删除
C::t('resources')->delete_by_rid($path, true);
} elseif ($icoarr['isdelete'] > 0) {//删除状态彻底删除
- C::t('resources')->delete_by_rid($path, false);
+ C::t('resources')->delete_by_rid($path, true);
} else {//非删除状态删除到回收站
- $return = C::t('resources')->recyle_by_rid($icoarr['rid']);
+ $return = C::t('resources')->recyle_by_rid($icoarr['rid'],$force);
if ($return['error']) {
return $return;
}
@@ -893,16 +888,19 @@ class io_dzz extends io_api
} else {
return array('rid' => $icoarr['rid'], 'error' => lang('no_privilege'));
}
- if ($size > 0 && !$icoarr['isdelete']) {
- SpaceSize(-$size, $icoarr['gid'], true);
- }
+
return array('rid' => $icoarr['rid'], 'name' => $icoarr['name']);
} elseif (preg_match('/\w{32}/i', $path)) {//rid删除
try {
- if (!$icoarr = C::t('resources')->fetch_info_by_rid($path)) {
+ if (!$icoarr = C::t('resources')->fetch_by_rid($path)) {
return array('rid' => $path, 'error' => lang('file_longer_exists'));
}
- $size = 0;
+ //当文件在回收站时,补全文件的原pfid(通过回收站表)
+ if($icoarr['pfid']=='-1' && ($recycle=C::t('resources_recyle')->fetch_by_rid($path))){
+ $icoarr['pfid']=$recycle['pfid'];
+ }
+ //文件大小统计改到 resources表中处理
+ /* $size = 0;
if ($icoarr['type'] == 'folder') {
$contains = C::t('resources')->get_contains_by_fid($icoarr['oid'], true);
$size = $contains['size'];
@@ -912,14 +910,14 @@ class io_dzz extends io_api
} else {
$size = $icoarr['size'];
}
- }
- if (perm_check::checkperm('delete', $icoarr)) {
- if ($force) {//强制彻底删除
+ }*/
+ if ($force || perm_check::checkperm('delete', $icoarr)) {
+ if ($finaldelete) {//强制彻底删除
C::t('resources')->delete_by_rid($path, true);
} elseif ($icoarr['isdelete'] > 0) {//删除状态彻底删除
- C::t('resources')->delete_by_rid($path, false);
+ C::t('resources')->delete_by_rid($path, true);
} else {//非删除状态删除到回收站
- $return = C::t('resources')->recyle_by_rid($icoarr['rid']);
+ $return = C::t('resources')->recyle_by_rid($icoarr['rid'],$force);
if ($return['error']) {
return $return;
}
@@ -927,9 +925,10 @@ class io_dzz extends io_api
} else {
return array('rid' => $icoarr['rid'], 'error' => lang('no_privilege'));
}
- if ($size > 0 && !$icoarr['isdelete']) {
+ //文件大小统计改到 resources表中处理
+ /*if ($size > 0 && !$icoarr['isdelete']) {
SpaceSize(-$size, $icoarr['gid'], true);
- }
+ }*/
return array('rid' => $icoarr['rid'], 'name' => $icoarr['name']);
} catch (Exception $e) {
return array('error' => $e->getMessage());
diff --git a/core/class/table/table_admincp_session.php b/core/class/table/table_admincp_session.php
deleted file mode 100644
index aa932ec..0000000
--- a/core/class/table/table_admincp_session.php
+++ /dev/null
@@ -1,48 +0,0 @@
-_table = 'admincp_session';
- $this->_pk = 'uid';
-
- parent::__construct();
- }
-
- public function fetch($uid, $panel) {
- $sql = 'SELECT * FROM %t WHERE uid=%d AND panel=%d';
- return DB::fetch_first($sql, array($this->_table, $uid, $panel));
- }
-
- public function fetch_all_by_panel($panel) {
- return DB::fetch_all('SELECT * FROM %t WHERE panel=%d', array($this->_table, $panel), 'uid');
- }
-
- public function delete($uid, $panel, $ttl = 3600) {
-
-
- $sql = 'DELETE FROM %t WHERE (uid=%d AND panel=%d) OR dateline<%d';
- DB::query($sql, array($this->_table, $uid, $panel, TIMESTAMP-intval($ttl)));
-
- }
-
- public function update($uid, $panel, $data) {
- if(!empty($data) && is_array($data)) {
- DB::update($this->_table, $data, array('uid'=>$uid, 'panel'=>$panel));
- }
- }
-
-}
-
-?>
diff --git a/core/class/table/table_app_market.php b/core/class/table/table_app_market.php
deleted file mode 100644
index f47a039..0000000
--- a/core/class/table/table_app_market.php
+++ /dev/null
@@ -1,213 +0,0 @@
-_table = 'app_market';
- $this->_pk = 'appid';
- $this->_pre_cache_key = 'app_market_';
- $this->_cache_ttl = 60*60;
-
- parent::__construct();
- }
- public function update($appid,$setarr){
- if(($ret=parent::update($appid,$setarr)) && isset($setarr['available'])){
- //如果是启用或关闭时,更新钩子表的status字段
- C::t('hooks')->update_by_appid($appid,array('status'=>intval($setarr['available'])));
- }
- return $ret;
- }
-
- public function fetch_by_appid($appid,$havecount=false){ //返回一条数据同时加载统计表数据
- global $_G;
- $appid = intval($appid);
- if(!$data=parent::fetch($appid)) return array();
- if($data['appico']!='dzz/images/default/icodefault.png' && !preg_match("/^(http|ftp|https|mms)\:\/\/(.+?)/i", $data['appico'])){
- $data['appico']=$_G['setting']['attachurl'].$data['appico'];
- }
- $data['fileext']=$data['fileext']?explode(',',$data['fileext']):array();
- $data['icon']=$data['appico'];
- $data['title']=$data['appname'];
- $data['url']=replace_canshu($data['appurl']);
- if($havecount){
- $data['viewnum']=intval($count['viewnum']);
- $data['replynum']=intval($count['replynum']);
- $data['downnum']=intval($count['downnum']);
- $data['star']=intval($count['star']);
- $data['starnum']=intval($count['starnum']);
- }
- return $data;
- }
- public function fetch_all_by_appid($appids,$havecount=false){ //返回数据同时加载统计表数据
- global $_G;
- if(!$appids) return false;
- if(!is_array($appids)){
- $appids=array($appids);
- }
- $return=array();
- foreach($appids as $appid){
- $appid = intval($appid);
- if(!$data=self::fetch($appid)) continue;
- if($data['appico']!='dzz/images/default/icodefault.png' && !preg_match("/^(http|ftp|https|mms)\:\/\/(.+?)/i", $data['appico'])){
- $data['appico']=$_G['setting']['attachurl'].$data['appico'];
- }
- $data['fileext']=$data['fileext']?explode(',',$data['fileext']):array();
- $data['icon']=$data['appico'];
- $data['title']=$data['appname'];
- $data['url']=replace_canshu($data['appurl']);
- if($havecount){
- $data['viewnum']=intval($count['viewnum']);
- $data['replynum']=intval($count['replynum']);
- $data['downnum']=intval($count['downnum']);
- $data['star']=intval($count['star']);
- $data['starnum']=intval($count['starnum']);
- }
- $return[$appid]=$data;
- }
- return $return;
- }
- public function delete_by_appid($appids){ //删除应用
- global $_G;
- if(!is_array($appids)) $appids=array(intval($appids));
-
- $data=DB::fetch_all("SELECT * FROM %t WHERE appid IN(%n)",array($this->_table,$appids));
- foreach($data as $value){
-
- if(strpos($value['appico'],'appico')===0){//删除应用图标
- @unlink($_G['setting']['attachdir'].$value['appico']);
- }
- C::t('app_pic')->delete_by_appid($value['appid']);//删除介绍图片
- C::t('app_open')->delete_by_appid($value['appid']);//删除打开方式;
- C::t('app_relative')->delete_by_appid($value['appid']);//删除标签
- C::t('app_user')->delete_by_appid($value['appid']); //删除用户默认打开方式
- C::t('app_organization')->delete_by_appid($value['appid']);//删除部门应用
- C::t('hooks')->delete_by_appid($value['appid']);//删除相关钩子
- }
- $this->delete($appids);
- return true;
- }
- /*public function fetch_all_by_tagid($classid,$count=false,$force=false){
- if($force || ($data = $this->fetch_cache(intval($classid),'app_market_class_') === false)) {
- $data=DB::fetch_all("select * from %t where classid= %d ",array($this->_table,$classid));
- if(!empty($data)) $this->store_cache(intval($classid), $data, 3600,'app_market_class_');
- }
- return $count?count($data):$data;
- }*/
-
- public function get_appid_by_appurl($appurl){
- return DB::fetch_all("select appid from %t where appurl=%s",array($this->_table,$appurl));
-
- }
- public function fetch_all_by_notdelete($uid=0){ //取得所有默认不能删除的应用
- if($uid && $space=getuserbyuid($uid)){
- if($space['groupid']==1){//系统管理员
- $l=" `group` = '1'";
- if($notappids=C::t('app_organization')->fetch_notin_appids_by_uid($uid)){
- $l.=" and appid NOT IN (".dimplode($notappids).") ";
- }
- $sql="`position`>0 and (`group`='0' OR `group`=2 OR `group`=3 OR (".$l.")) ";
- }elseif($space['groupid']==2){
- $l=" (`group` = '1')";
- if($notappids=C::t('app_organization')->fetch_notin_appids_by_uid($uid)){
- $l.=" and appid NOT IN (".dimplode($notappids).") ";
- }
- $sql=" `position`>0 and (`group` = '2' OR `group`='0' or (".$l."))";
- }else{ //普通成员
- //属于普通用户应用但不属于特定部门的应用
- $l=" (`group` = '1')";
- if($notappids=C::t('app_organization')->fetch_notin_appids_by_uid($uid)){
- $l.=" and appid NOT IN (".dimplode($notappids).") ";
- }
- $sql="`position`>0 and (`group`='0' or (".$l."))";
- }
- }else{ //游客
- $sql="`position`>0 and (`group`='-1' or `group`='0')";
- }
- return DB::fetch_all("select * from %t where $sql and notdelete>0 and available>0 order by disp ",array($this->_table),'appid');
- }
- public function fetch_all_by_default($uid=0){ //取得所有默认的应用
- if($uid && $space=getuserbyuid($uid)){
- if($space['groupid']==1){//系统管理员
- $l="`group` = '1'";
- if($notappids=C::t('app_organization')->fetch_notin_appids_by_uid($uid)){
- $l.=" and appid NOT IN (".dimplode($notappids).") ";
- }
- $sql="`position`>0 and (`group`='0' OR `group`='2' OR `group`='3' OR (".$l."))";
- }elseif($space['groupid']==2){
- $l=" (`group` = '1')";
- if($notappids=C::t('app_organization')->fetch_notin_appids_by_uid($uid)){
- $l.=" and appid NOT IN (".dimplode($notappids).") ";
- }
- $sql=" `position`>0 and (`group` = '2' OR `group`='0' or (".$l."))";
- }else{ //普通成员
- //属于普通用户应用但不属于特定部门的应用
- $l=" (`group` = '1')";
- if($notappids=C::t('app_organization')->fetch_notin_appids_by_uid($uid)){
- $l.=" and appid NOT IN (".dimplode($notappids).") ";
- }
- $sql="`position`>0 and (`group`='0' or (".$l."))";
- }
- }else{ //游客
- $sql="`position`>0 and (`group`='-1' or `group`='0')";
- }
- //exit($sql);
- return DB::fetch_all("select * from %t where $sql and available>0 order by disp ",array($this->_table),'appid');
- }
- public function fetch_appid_by_mod($mod,$match=0){//$match==1表示全匹配,默认模糊匹配
- $sql='';
- $param=array($this->_table);
- if(!$match){
- $sql=" appurl LIKE %s";
- $param[]='%'.$mod.'%';
- }else{
- $sql=" appurl = %s";
- $param[]=$mod;
- }
- return DB::result_first("select appid from %t where $sql ",$param);
- }
- public function fetch_appid($mod){
- $sql='';
- $param=array($this->_table);
- $sql=" identifier = %s";
- $param[]=$mod;
- return DB::result_first("select appid from %t where $sql ",$param);
- }
- public function fetch_by_identifier($identifier,$app_path='dzz'){
- return DB::fetch_first("select * from %t where app_path=%s and identifier=%s ",array($this->_table,$app_path,$identifier));
- }
- public function fetch_by_mod(){
- return DB::fetch_first("select * from %t where app_path=%s and identifier=%s ",array($this->_table,CURSCRIPT,CURMODULE));
- }
- public function fetch_all_identifier($available=0){
- $data=array();
- $sql="identifier!=''";
- if($available){
- $sql.=" and `available`>0";
- }
- foreach(DB::fetch_all("select appid,identifier,app_path from %t where %i ",array($this->_table,$sql)) as $value){
- $data[$value['appid']]=$value;
- }
- return $data;
- }
- public function fetch_all_by_appurl($appurl,$identifier){
-
- return DB::fetch_all("select * from %t where appurl=%s and identifier=%s",array($this->_table,$appurl,$identifier));
- }
- public function fetch_appico_by_appid($appid){
- $appid = intval($appid);
- return DB::result_first("select appico from %t where appid = %d",array($this->_table,$appid));
- }
-
-}
diff --git a/core/class/table/table_app_open.php b/core/class/table/table_app_open.php
deleted file mode 100644
index 7b3ad67..0000000
--- a/core/class/table/table_app_open.php
+++ /dev/null
@@ -1,117 +0,0 @@
-_table = 'app_open';
- $this->_pk = 'extid';
- $this->_pre_cache_key = 'app_open_';
- $this->_cache_ttl =0;
- parent::__construct();
- }
- public function setDefault($extid){
- $data=self::fetch($extid);
- DB::update($this->_table,array('isdefault'=>0),"ext='{$data[ext]}'");
- $this->clear_cache('ext_all');
- $this->clear_cache('all');
- return self::update($extid,array('isdefault'=>1));
- }
- public function setOrders($extid){
- foreach($extid as $k=>$v ){
- $result = self::update($v,array('disp'=>$k));
- }
- $this->clear_cache('ext_all');
- $this->clear_cache('all');
- return true;
- }
- public function delete_by_appid($appid){
- if(!$appid) return false;
- $query=DB::query("SELECT * FROM %t WHERE appid=%d ",array($this->_table,$appid));
- while($value=DB::fetch($query)){
- if($value['extid']){
- $result=C::t('app_open_default')->delete_by_extid($value['extid']);
- }
- }
- $this->clear_cache('ext_all');
- $this->clear_cache('all');
- return DB::delete($this->_table," appid='{$appid}'");
- }
- public function insert_by_exts($appid,$exts){
- if(!$appid) return false;
- if(!is_array($exts)) $exts=$exts?explode(',',$exts):array();
- //删除原来的ext
- $oexts=array();
- $delids=array();
- $oextarr=DB::fetch_all("select * from ".DB::table('app_open')." where appid='{$appid}'");
- foreach($oextarr as $value){
- $oexts[]=$value['ext'];
- if(!in_array($value['ext'],$exts)) $delids[]=$value['extid'];
- }
- if($delids) {
- self::delete($delids);
- }
- foreach($exts as $ext){
- if($ext && !in_array($ext,$oexts)) parent::insert(array('ext'=>$ext,'appid'=>$appid));
- }
- $this->clear_cache('ext_all');
- $this->clear_cache('all');
- return true;
- }
-
- public function fetch_all_ext(){
- $data = array();
- if(($data = $this->fetch_cache('all')) === false) {
- $data = array();
- $query=DB::query("SELECT * FROM %t WHERE 1 ",array($this->_table));
- while($value=DB::fetch($query)){
- if($value['appid']){
- if($app=C::t('app_market')->fetch_by_appid($value['appid'],false)){
- if($app['available']<1) continue;
- if(!$value['icon']) $value['icon']=$app['appico'];
- if(!$value['name']) $value['name']=$app['appname'];
- if(!$value['url']) $value['url']=$app['appurl'];
- if(!$value['nodup']) $value['nodup']=$app['nodup'];
- if(!$value['feature']) $value['feature']=$app['feature'];
- }else{
- continue;
- }
- }
- $value['url']=replace_canshu($value['url']);
- $data[$value['extid']]=$value;
- }
- if(!empty($data)) $this->store_cache('all', $data);
- }
- return $data;
- }
- public function fetch_all_orderby_ext($uid,$ext_all=array()){
- $data = array();
- if($config = C::t('user_field')->fetch($uid)){
- if($config['applist']){
- $appids=explode(',',$config['applist']);
- }else{
- $appids=array();
- }
- }
- if(!$ext_all) $ext_all=self::fetch_all_ext();
- foreach($ext_all as $value){
- if($value['appid'] && !in_array($value['appid'],$appids)){
- continue;
- }
- $data[$value['ext']][]=$value['extid'];
- }
- return $data;
-
- }
-
-}
-?>
diff --git a/core/class/table/table_app_open_default.php b/core/class/table/table_app_open_default.php
deleted file mode 100644
index ab518f0..0000000
--- a/core/class/table/table_app_open_default.php
+++ /dev/null
@@ -1,43 +0,0 @@
-_table = 'app_open_default';
- $this->_pk = '';
- //$this->_pre_cache_key = 'app_open_';
- //$this->_cache_ttl = 0;
- parent::__construct();
- }
- public function delete_by_extid($extid){
- return DB::delete($this->_table," extid='{$extid}'");
- }
-
- public function insert_default_by_uid($uid,$extid,$ext){
- DB::insert($this->_table,array('uid'=>$uid,'ext'=>$ext,'extid'=>$extid,'dateline'=>TIMESTAMP),0,1);
- return true;
- }
- public function fetch_all_by_uid($uid){
- $data=array();
- $query=DB::query("SELECT ext,extid FROM %t WHERE uid= %d ",array($this->_table,$uid));
- while($value=DB::fetch($query)){
- $data[$value['ext']]=$value['extid'];
- }
- return $data;
- }
-
-}
-
-?>
diff --git a/core/class/table/table_app_organization.php b/core/class/table/table_app_organization.php
deleted file mode 100644
index 7bcd6ce..0000000
--- a/core/class/table/table_app_organization.php
+++ /dev/null
@@ -1,91 +0,0 @@
-_table = 'app_organization';
- $this->_pk = '';
- parent::__construct();
- }
- public function insert($appid, $orgid) {
- return DB::insert($this->_table, array("orgid"=>$orgid,'appid'=>$appid,'dateline'=>TIMESTAMP),1,1);
- }
- public function replace_orgids_by_appid($appid,$orgids){
- $Oorgids=self::fetch_orgids_by_appid($appid);
- if(!is_array($orgids)) $orgids=array($orgids);
- $insertids=array_diff($orgids,$Oorgids);
- $delids=array_diff($Oorgids,$orgids);
- if($delids) DB::delete($this->_table,"appid='{$appid}' and orgid IN (".dimplode($delids).")");
- foreach($insertids as $orgid){
- if($orgid>0) self::insert($appid,$orgid);
- }
- return true;
- }
- public function delete_by_appid($appid) {
- return DB::delete($this->_table, "appid='{$appid}'");
- }
- public function delete_by_orgid($orgids) {
- if(!$orgids) return;
- if(!is_array($orgids)) $orgids=array($orgids);
- return DB::delete($this->_table, "orgid IN (".dimplode($orgids).")");
- }
- public function fetch_appids_by_orgid($orgids,$sub=false){
- $appids=array();
- $orgids=(array)$orgids;
- if($sub){
-
- foreach(DB::fetch_all("select * from %t where 1",array($this->_table)) as $value){
- if(($porgids= C::t('organization')->fetch_parent_by_orgid($value['orgid'],true)) && array_intersect($porgids,$orgids)){
- $appids[]=$value['appid'];
- }
- }
- }else{
- $query=DB::query("select appid from %t where orgid IN(%n)",array($this->_table,$orgids));
- while($value=DB::fetch($query)){
- $appids[]=$value['appid'];
- }
- }
- return $appids;
- }
- public function fetch_notin_appids_by_uid($uid){
- $paichu_appids=$orgids=array();
- foreach(C::t('organization_user')->fetch_orgids_by_uid($uid) as $orgid){
- if($parentids=C::t('organization')->fetch_parent_by_orgid($orgid)){
- $orgids=array_merge($orgids,$parentids);
- }
- }
- if($orgids){
- $appids=C::t('app_organization')->fetch_appids_by_orgid($orgids);
- }else{
- $appids=array();
- }
- foreach(DB::fetch_all("select appid from %t where appid NOT IN(%n) ",array($this->_table,$appids)) as $value){
- $paichu_appids[]=$value['appid'];
- }
-
- return $paichu_appids;
- }
- public function fetch_orgids_by_appid($appid){
- $orgids=array();
- $arr=DB::fetch_all("select orgid from %t where appid = %d ",array($this->_table,$appid));
- foreach($arr as $value){
- $orgids[]=$value['orgid'];
- }
- return $orgids;
- }
-
-
-}
-?>
diff --git a/core/class/table/table_app_pic.php b/core/class/table/table_app_pic.php
deleted file mode 100644
index b2ffa43..0000000
--- a/core/class/table/table_app_pic.php
+++ /dev/null
@@ -1,73 +0,0 @@
-_table = 'app_pic';
- $this->_pk = 'picid';
- /*$this->_pre_cache_key = 'app_pic_';
- $this->_cache_ttl = 0;*/
-
- parent::__construct();
- }
- public function delete_by_appid($appids){ //通过应用id删除应用图片
- if(!$appids) return;
- if(!is_array($appids)){
- $appids=array($appids);
- }
- $data=DB::fetch_all("SELECT * FROM %t WHERE appid IN(%n)",array($this->_table,$appids));
-
- foreach($data as $value){
- if($value['picid']) $this->delete_by_picid($value['picid']);
- }
- return true;
- }
- public function delete_by_picid($picid){ //删除应用图片
- global $_G;
- if(!$data=$this->fetch($picid)){
- return false;
- }
- if($data['aid']){
- C::t('attachment')->delete_by_aid($data['aid']);
- $this->delete($picid);
- }
- return true;
- }
-
- public function fetch($picid,$force=false){ //返回一条数据同时加载attachment表数据库数据
- $picid = intval($picid);
- $data = array();
- if($force || ($picid && $data = $this->fetch_cache($picid) === false)) {
- $data=DB::fetch_first("SELECT * FROM %t WHERE picid= %d ", array($this->_table,$picid));
- $attachment= array();
- if($data['aid']) $attachment=C::t('attachment')->fetch($data['aid']);
- $data=array_merge($attachment,$data);
- if(!empty($data)) $this->store_cache($picid, $data, $this->_cache_ttl);
- }
- return $data;
- }
- public function fetch_all_by_appid($appid,$iscount=false,$force=false){ //返回某个应用的全部图片
- $appid=intval($appid);
- $data=array();
- if($force || ($appid && ($data = $this->fetch_cache($appid,'app_pic_by_appid_')) === false)) {
- foreach(DB::fetch_all("select picid from %t where appid= %d",array($this->_table,$appid)) as $value){
- $data[$value['picid']]=$this->fetch($value['picid'],$force);
- }
- if(!empty($data)) $this->store_cache($appid, $data, 3600,'app_pic_by_appid_');
- }
-
- return $iscount?count($data):$data;
- }
-}
-?>
diff --git a/core/class/table/table_app_relative.php b/core/class/table/table_app_relative.php
deleted file mode 100644
index ba762d0..0000000
--- a/core/class/table/table_app_relative.php
+++ /dev/null
@@ -1,61 +0,0 @@
-_table = 'app_relative';
- $this->_pk = 'rid';
- //$this->_pre_cache_key = 'app_relative_';
- //$this->_cache_ttl = 0;
-
- parent::__construct();
- }
-
- public function update_by_appid($appid,$tagids){
- //先删除有关此appid的部分
- self::delete_by_appid($appid);
- foreach($tagids as $tagid){
- DB::insert($this->_table,array('appid'=>intval($appid),'tagid'=>intval($tagid)));
- }
- }
- public function delete_by_appid($appid){
- $tagids=array();
- foreach(DB::fetch_all("select tagid from %t where appid=%d",array($this->_table,$appid)) as $value){
- $tagids[]=$value['tagid'];
- }
- C::t('app_tag')->delete_by_tagid($tagids);
- DB::query("DELETE FROM %t WHERE appid= %d ",array($this->_table,$appid));
- }
- public function fetch_all_by_tagid($tagid,$count=false){
- $tagid=intval($tagid);
- if($count) return DB::result_first("select COUNT(*) from %t WHERE tagid= %d ",array($this->_table,$tagid));
- else return DB::fetch_all("SELECT * FROM %t WHERE tagid = %d ",array($this->_table,$tagid));
- }
- public function fetch_all_by_appid($appid,$count=false){
- $appid=intval($appid);
- if($count) return DB::result_first("select COUNT(*) from %t r LEFT JOIN %t t ON r.tagid=t.tagid WHERE t.tagid>0 and r.appid = %d ",array($this->_table,'app_tag',$appid));
- else return DB::fetch_all("SELECT t.* FROM %t r LEFT JOIN %t t ON r.tagid=t.tagid WHERE t.tagid>0 and r.appid = %d ",array($this->_table,'app_tag',$appid));
- }
- public function fetch_appids_by_tagid($tagid){
- $appids=array();
- foreach(DB::fetch_all("select appid from %t where tagid=%d",array($this->_table,$tagid)) as $value){
- $appids[]=$value['appid'];
- }
- return $appids;
- }
-
-}
-
-?>
diff --git a/core/class/table/table_app_tag.php b/core/class/table/table_app_tag.php
deleted file mode 100644
index 61a47ba..0000000
--- a/core/class/table/table_app_tag.php
+++ /dev/null
@@ -1,95 +0,0 @@
-_table = 'app_tag';
- $this->_pk = 'tagid';
-
- parent::__construct();
- }
-
-
- public function addtags($tags,$appid) {
- if(!$tags){
- C::t('app_relative')->delete_by_appid($appid);
- return;
- }
- if(!is_array($tags)){
- if(strpos($tags,"','")!==false){
- $tagnames=explode("','",trim($tags,"'"));
- }elseif(strpos($tags,',')!==false){
- $tagnames=explode(',',trim($tags));
- }else{
- $tagnames=array(trim($tags,"'"));
- }
- }else{
- $tagnames=$tags;
- }
-
-
- $tagarr=DB::fetch_all('SELECT tagid,tagname FROM '.DB::table($this->_table)." WHERE tagname IN( ".dimplode($tagnames).")");
- $have_tagnames=array();
- $have_tagids=array();
-
- foreach($tagarr as $tagid => $value){
- $have_tagnames[]=$value['tagname'];
- $have_tagids[]=$value['tagid'];
- }
- //已经存在的增加hot +1;
- DB::query("UPDATE ".DB::table($this->_table)." SET hot=hot+1 WHERE tagid IN(%n)",array($have_tagids));
- $insert_names=array_diff($tagnames,$have_tagnames);
- foreach($insert_names as $name){
- $have_tagids[]=self::insert(array('tagname'=>$name, 'dateline'=>TIMESTAMP, 'hot'=>1),1);
- }
- //插入关系表
- C::t('app_relative')->update_by_appid($appid,$have_tagids);
- }
- public function delete_by_tagid($tagids){
- DB::query("UPDATE ".DB::table($this->_table)." SET hot=hot-1 WHERE tagid IN(".dimplode($tagids).")");
- DB::delete($this->_table, array('hot'=>0));
- }
- public function deletetags($tags) {
- if(!$tags) return;
- if(!is_array($tags)){
- if(strpos($tags,"','")!==false){
- $tagnames=explode("','",trim($tags,"'"));
- }elseif(strpos($tags,',')!==false){
- $tagnames=explode(',',trim($tags));
- }else{
- $tagnames=array($tags);
- }
- }else{
- $tagnames=$tags;
- }
- $tagarr=DB::fetch_all('SELECT tagid,tagname,hot FROM '.DB::table($this->_table)." WHERE tagname IN (".dimplode($tagnames).")");
- $have_tagids=array();
- $delete_tagids=array();
- foreach($tagarr as $tagid => $value){
- if($value['hot']>1) $have_tagids[]=$value['tagname'];
- elseif($value['hot']<1){
- $delete_tagids[]=$value['tagid'];
- }
- }
- //已经存在的且hot>1的-1;
- DB::query("UPDATE ".DB::table($this->_table)." SET hot=hot-1 WHERE tagid IN(".dimplode($have_tagids).")");
- //已经存在的且hot<=1的删除;
- DB::query("DELETE FROM ".DB::table($this->_table)." WHERE tagid IN(".dimplode($delete_tagids).")");
-
- }
-
-}
-
-?>
diff --git a/core/class/table/table_app_user.php b/core/class/table/table_app_user.php
deleted file mode 100644
index d5d6588..0000000
--- a/core/class/table/table_app_user.php
+++ /dev/null
@@ -1,65 +0,0 @@
-_table = 'app_user';
- $this->_pk = 'id';
- parent::__construct();
- }
- public function delete_by_uid_appid($uid,$appid){
- if(!$appid) return false;
- return DB::delete($this->_table," appid='{$appid}' and uid='{$uid}'");
- }
- public function delete_by_appid($appid){
- if(!$appid) return false;
- return DB::delete($this->_table," appid='{$appid}'");
- }
- public function update_lasttime($uid,$appid,$lasttime){
- if(!$uid) return false;
- if(DB::query("update ".DB::table($this->_table)." set lasttime=".intval($lasttime).", num=num+1 where appid='{$appid}' and uid='{$uid}'")){
-
- }else{
- parent::insert(array('uid'=>$uid,'appid'=>$appid,'lasttime'=>$lasttime,'dateline'=>TIMESTAMP,'num'=>1),false,true);
- }
- }
-
- public function insert_by_uid($uid,$appids,$isall=0){
- if(!$appids) return false;
- if(!is_array($appids)) $appids=array($appids);
- //删除原来的
- $oids=array();
- $delids=array();
- $insertids=array();
- $oarr=DB::fetch_all("select * from ".DB::table('app_user')." where uid='{$uid}'");
- foreach($oarr as $value){
- $oids[]=$value['appid'];
- if( !in_array($value['appid'],$appids)) $delids[]=$value['id'];
- }
- if($isall && $delids) {
- self::delete($delids);
- }
- foreach($appids as $appid){
- if(!in_array($appid,$oids)) DB::insert('app_user',array('uid'=>$uid,'appid'=>$appid,'dateline'=>TIMESTAMP,'num'=>1));
- }
- return true;
- }
- public function fetch_all_appids_by_uid($uid){
- $data=array();
- foreach(DB::fetch_all("select appid from %t where uid=%d",array($this->_table,$uid)) as $value){
- $data[]=$value['appid'];
- }
- return $data;
- }
-}
-?>
diff --git a/core/class/table/table_attachment.php b/core/class/table/table_attachment.php
deleted file mode 100644
index ab30c30..0000000
--- a/core/class/table/table_attachment.php
+++ /dev/null
@@ -1,161 +0,0 @@
-_table = 'attachment';
- $this->_pk = 'aid';
- $this->_pre_cache_key = 'attachment_';
- $this->_cache_ttl = 0;
- parent::__construct();
- }
- public function setUnrun_by_aid($aid,$r){//设置允许运行,如果文件在本地同时修改实际文件名,增加无法运行的后缀;
- $data=parent::fetch($aid);
- if($data['remote']==0 || $data['remote']==1){//文件在本地,修改文件名
- if($r>0){
- $earr=explode('.',$data['attachment']);
- foreach($earr as $key=> $ext){
- if(in_array(strtolower($ext),array($data['filetype'],'dzz'))) unset($earr[$key]);
- }
- $tattachment=implode('.',$earr).'.dzz';
- if(is_file(getglobal('setting/attachdir').'./'.$data['attachment']) && @rename(getglobal('setting/attachdir').'./'.$data['attachment'],getglobal('setting/attachdir').'./'.$tattachment)){
- return parent::update($aid,array('unrun'=>$r,'attachment'=>$tattachment));
- }
-
- }else{
- $earr=explode('.',$data['attachment']);
- foreach($earr as $key=> $ext){
- if(in_array(strtolower($ext),array($data['filetype'],'dzz'))) unset($earr[$key]);
- }
- $tattachment=implode('.',$earr).'.'.$data['filetype'];
- if(is_file(getglobal('setting/attachdir').'./'.$data['attachment']) && @rename(getglobal('setting/attachdir').'./'.$data['attachment'],getglobal('setting/attachdir').'./'.$tattachment)){
- return parent::update($aid,array('unrun'=>$r,'attachment'=>$tattachment));
- }
- }
- }
- return false;
- }
- public function getThumbByAid($aid,$width=256,$height=256,$original=0){ //通过附件获取缩略图
- //可以让$aid 带入$attach数组.
- if(!is_array($aid)){
- $attach=self::fetch($aid);
- }else{
- $attach=$aid;
- }
- if(!$width ||!$height) $original=1;
- /*$bz=io_remote::getBzByRemoteid($attach['remote']);
- if($bz=='dzz'){*/
- $path='attach::'.$attach['aid'];
- /*}else{
- $path=$bz.'/'.$attach['attachment'];
- }*/
- return (defined('DZZSCRIPT')?DZZSCRIPT:'index.php').'?mod=io&op=thumbnail&width='.$width.'&height='.$height.'&original='.$original.'&path='.dzzencode($path);
- }
- public function get_total_filesize() {
- $attachsize = 0;
- $attachsize = DB::result_first("SELECT SUM(filesize) FROM ".DB::table($this->table));
- return $attachsize;
- }
- public function addcopy_by_aid($aids,$ceof=1){
- if(!is_array($aids)) $aids=array($aids);
-
- if($ceof>0){
- DB::query("update %t set copys=copys+%d where aid IN(%n)",array($this->_table,$ceof,$aids));
- }else{
- DB::query("update %t set copys=copys-%d where aid IN(%n)",array($this->_table,abs($ceof),$aids));
- }
- $this->clear_cache($aids);
- }
- public function delete_by_aid($aid){ //删除附件
- global $_G;
- if(!$data=$this->fetch($aid)){
- return false;
- }
- if($data['copys']>1){
- return $this->update($aid,array('copys'=>$data['copys']-1));
- }else{
- if(io_remote::DeleteFromSpace($data)){
- return $this->delete($aid);
- }else{
- return false;
- }
- }
- return true;
- }
- public function fetch_by_md5($md5){ //通过md5值返回一条数据
- return DB::fetch_first("SELECT * FROM %t WHERE md5 = %s ",array($this->table,$md5));
- }
- public function getSizeByRemote($remoteid){ //统计占用空间
- if($remoteid<2){
- return DB::result_first("SELECT sum(filesize) FROM %t WHERE remote <2 and copys>0 ",array($this->table));
- }else{
- return DB::result_first("SELECT sum(filesize) FROM %t WHERE remote = %d and copys>0 ",array($this->table,$remoteid));
- }
-
- }
- public function getAttachByFilter($filter,$sizecount=false){ //统计占用空间
- $where='copys>0 and remote!='.$filter['remoteid'];
- if($filter['oremoteid']){
- if($filter['oremoteid']<2){
- $where.=" and remote<2";
- }else{
- $where.=" and remote= '{$filter[oremoteid]}'";
- }
- }
-
- if($filter['aid']){
- $where.=" and aid='{$filter['aid']}'";
- }
- $filter['sizelt']=intval($filter['sizelt']*1024*1024);
- if($filter['sizelt']>0){
- $where.=" and filesize>'$filter[sizelt]'";
- }
- $filter['sizegt']=intval($filter['sizegt']*1024*1024);
- if($filter['sizegt']>0){
- $where.=" and filesize<'$filter[sizegt]'";
- }
- if($filter['exts']){
- $extarr=explode(',',$filter['exts']);
- if($extarr){
- $where.=" and filetype IN (".dimplode($extarr).")";
- }
- }
- if($filter['dateline']){
- $where.=" and dateline>='{$filter[dateline]}'";
- }
- if($filter['aid1']){
- $where.=" and aid>'{$filter[aid1]}'";
- }
-
- if($filter['ignore']){
- $ignores=explode(',',$filter['ignore']);
- if($ignores){
- $where.=" and aid NOT IN (".dimplode($ignores).")";
- }
- }
- if($sizecount) return DB::result_first("SELECT sum(filesize) FROM ".DB::table($this->_table)." WHERE $where ");
- else return DB::fetch_first("SELECT * FROM ".DB::table($this->_table)." WHERE $where order by aid");
-
- }
- public function insert($setarr,$return_insert_id=1){
- if($aid=parent::insert($setarr,$return_insert_id)){
- Hook::listen('table_attachment_insert', $aid);//插入附件表时的挂载点
- return $aid;
- }
- return false;
- }
-}
-
-?>
diff --git a/core/class/table/table_cache.php b/core/class/table/table_cache.php
deleted file mode 100644
index a941583..0000000
--- a/core/class/table/table_cache.php
+++ /dev/null
@@ -1,26 +0,0 @@
-_table = 'cache';
- $this->_pk = 'cachekey';
-
- parent::__construct();
- }
-
-}
-
-?>
diff --git a/core/class/table/table_collect.php b/core/class/table/table_collect.php
deleted file mode 100644
index db48f30..0000000
--- a/core/class/table/table_collect.php
+++ /dev/null
@@ -1,35 +0,0 @@
-_table = 'collect';
- $this->_pk = 'cid';
- parent::__construct();
- }
- public function delete_by_cid($cid){
- $lid=intval($cid);
- $link=self::fetch($cid);
- if($link['cid']){
- $copys=DB::result_first("select copys from ".DB::table('collect')." where cid='{$link[cid]}' and type = 'link'");
- if($copys<=1){
- return DB::delete('collect',"cid='{$link[cid]}'");
- }else{
- return DB::update('collect',array('copys'=>$copys-1),"cid='{$link[cid]}'");
- }
- }
- }
- public function addcopy_by_cid($cid,$ceof=1){
- if(!is_array($cid)) $aids=array($cid);
-
- if($ceof>0){
- DB::query("update %t set copys=copys+%d where cid IN(%n)",array($this->_table,$ceof,$cid));
- }else{
- DB::query("update %t set copys=copys-%d where cid IN(%n)",array($this->_table,abs($ceof),$cid));
- }
- }
-}
\ No newline at end of file
diff --git a/core/class/table/table_comment.php b/core/class/table/table_comment.php
deleted file mode 100644
index a8a4462..0000000
--- a/core/class/table/table_comment.php
+++ /dev/null
@@ -1,172 +0,0 @@
-_table = 'comment';
- $this->_pk = 'cid';
- $this->_pre_cache_key = 'comment_';
- $this->_cache_ttl = 60*60;
- parent::__construct();
- }
-
- public function insert_by_cid($arr,$ats,$attach){
- if($arr['cid']=parent::insert($arr,1)){
- /*if($arr['rcid'] && $rdata=parent::fetch($arr['rcid']) && !in_array($rdata['authorid'],$ats)){
- $ats[]=$rdata['authorid'];
- }*/
- if($ats){
- C::t('comment_at')->insert_by_cid($arr['cid'],($ats));
- }
- if($attach) C::t('comment_attach')->insert_by_cid($arr['cid'],$attach);
-
- if($arr['module']){
-
- @include_once DZZ_ROOT.'./dzz/'.$arr['module'].'/class/table/table_'.$arr['idtype'].'.php';
- }else{
- @include_once DZZ_ROOT.'./core/class/table/table_'.$arr['idtype'].'.php';
- }
- if(class_exists('table_'.$arr['idtype']) && method_exists('table_'.$arr['idtype'],'callback_by_comment')){
- $arr['message']=dzzcode($arr['message']);
- C::t($arr['idtype'])->callback_by_comment($arr,'add',$ats);
- }
- }
- return $arr['cid'];
- }
- public function update_by_cid($cid,$message,$rcid,$attach){
- $ret=0;
- $ret+=parent::update($cid,array('message'=>$message,'rcid'=>$rcid,'edituid'=>getglobal('uid'),'edittime'=>TIMESTAMP));
-
- $ret+=C::t('comment_attach')->update_by_cid($cid,$attach);
-
- return $ret;
- }
- public function delete_by_cid($cid){
- if(!$data=parent::fetch($cid)) return false;
- $delcids=array($cid);
- foreach(DB::fetch_all("select cid from %t where pcid=%d ",array($this->_table,$cid)) as $value){
- $delcids[]=$value['cid'];
- }
- if($return=parent::delete($delcids)){
- //删除@
- C::t('comment_at')->delete_by_cid($delcids);
- //删除附件
- C::t('comment_attach')->delete_by_cid($delcids);
- if($data['module']){
- @include_once DZZ_ROOT.'dzz/'.$data['module'].'/class/table/table_'.$data['idtype'].'.php';
- }else{
- @include_once DZZ_ROOT.'core/class/table/table_'.$data['idtype'].'.php';
- }
- if(class_exists('table_'.$data['idtype']) && method_exists('table_'.$data['idtype'],'callback_by_comment')){
- C::t($data['idtype'])->callback_by_comment($data,'delete');
- }
- return $return;
- }else{
- return false;
- }
- }
- public function delete_by_id_idtype($ids,$idtype){
- $ids=(array)$ids;
- $dels=array();
- foreach(DB::fetch_all("select * from %t where id IN (%n) and idtype=%s",array($this->_table,$ids,$idtype)) as $value){
- $dels[]=$value['cid'];
- }
- if($return=parent::delete($dels)){
- //删除@
- C::t('comment_at')->delete_by_cid($dels);
- //删除附件
- C::t('comment_attach')->delete_by_cid($dels);
- }
- return parent::delete($dels);
- }
- public function fetch_all_by_idtype($id,$idtype,$limit,$iscount=false){
-
- $limitsql='';
- if($limit){
- $limit=explode('-',$limit);
- if(count($limit)>1){
- $limitsql.=" limit ".intval($limit[0]).",".intval($limit[1]);
- }else{
- $limitsql.=" limit ".intval($limit[0]);
- }
- }
-
- if($iscount) return DB::result_first("select COUNT(*) from %t where id=%s and idtype=%s and pcid=0",array($this->_table,$id,$idtype));
- $data=array();
- foreach(DB::fetch_all("select * from %t where id=%s and idtype=%s and pcid=0 order by dateline DESC $limitsql",array($this->_table,$id,$idtype)) as $value){
- $value['message']=dzzcode($value['message']);
- $value['dateline']=dgmdate($value['dateline'],'u');
- $value['replies']=DB::result_first("select COUNT(*) from %t where pcid=%d",array($this->_table,$value['cid']));
- $value['replys']=self::fetch_all_by_pcid($value['cid'],5);
- $value['attachs']=C::t('comment_attach')->fetch_all_by_cid($value['cid']);
- $data[]=$value;
- }
- return $data;
- }
- public function fetch_all_by_pcid($pcid,$limit,$iscount=false){
- $limitsql='';
- if($limit){
- $limit=explode('-',$limit);
- if(count($limit)>1){
- $limitsql.=" limit ".intval($limit[0]).",".intval($limit[1]);
- }else{
- $limitsql.=" limit ".intval($limit[0]);
- }
- }
- if($iscount) return DB::result_first("select COUNT(*) from %t where pcid=%d ",array($this->_table,$pcid));
- $data=array();
- foreach(DB::fetch_all("select * from %t where pcid=%d order by dateline DESC $limitsql",array($this->_table,$pcid)) as $value){
- $value['message']=dzzcode($value['message']);
- $value['dateline']=dgmdate($value['dateline'],'u');
- $value['attachs']=C::t('comment_attach')->fetch_all_by_cid($value['cid']);
- if($value['rcid']){
- $value['rpost']=parent::fetch($value['rcid']);
- }
-
- $data[]=$value;
- }
- return $data;
- }
-
- public function copy_by_id_idtype($oid,$id,$idtype){
- $return=0;
- foreach(DB::fetch_all("select * from %t where id=%s and idtype=%s and pcid='0'",array($this->_table,$oid,$idtype)) as $value){
- $ocid=$value['cid'];
- unset($value['cid']);
- $value['id']=$id;
- if($value['cid']=parent::insert($value,1)){
- C::t('comment_at')->copy_by_cid($ocid,$value['cid']);
- C::t('comment_attach')->copy_by_cid($ocid,$value['cid']);
- $return+=1;
- //拷贝子评论
- foreach(DB::fetch_all("select * from %t where pcid=%d ",array($this->_table,$ocid)) as $value1){
- $ocid=$value1['cid'];
- unset($value1['cid']);
- $value1['pcid']=$value['cid'];
- $value1['id']=$id;
- $value1['rcid']=0;
- if(parent::insert($value1,1)){
- C::t('comment_at')->copy_by_cid($ocid,$value['cid']);
- C::t('comment_attach')->copy_by_cid($ocid,$value['cid']);
- }
- }
- }
- }
- return $return;
- }
-
-}
-
-?>
diff --git a/core/class/table/table_comment_at.php b/core/class/table/table_comment_at.php
deleted file mode 100644
index b7df66f..0000000
--- a/core/class/table/table_comment_at.php
+++ /dev/null
@@ -1,55 +0,0 @@
-_table = 'comment_at';
- $this->_pk = '';
-
- parent::__construct();
- }
- public function fetch_all_cids_by_uid($uid,$timestamp=0,$count=0){
- $cids=array();
- if($count) return DB::result_first("select COUNT(*) from %t where uid=%d and dateline>%d",array($this->_table,$uid,$timestamp));
- foreach(DB::fetch_all("select cid from %t where uid=%d and dateline>%d",array($this->_table,$uid,$timestamp)) as $value){
- $tids[]=$value['cid'];
- }
- return array_unique($cids);
- }
- public function insert_by_cid($cid,$uids){
- if(!$cid || !$uids) return false;
- foreach($uids as $uid){
- parent::insert(array('cid'=>$cid,'uid'=>$uid,'dateline'=>TIMESTAMP),0,1);
- }
-
- }
- public function delete_by_cid($cids){
- if(!$cids) return false;
- if(!is_array($cids)){
- $cids=array($cids);
- }
- return DB::delete($this->_table,"cid IN (".dimplode($cids).")");
- }
- public function copy_by_cid($ocid,$cid){
- foreach(DB::fetch_all("select * from %t where cid=%d",array($this->_table,$ocid)) as $value){
- $value['cid']=$cid;
- parent::insert($value,0,1);
- }
- return 0;
- }
-
-}
-
-?>
diff --git a/core/class/table/table_comment_attach.php b/core/class/table/table_comment_attach.php
deleted file mode 100644
index 5ea5f95..0000000
--- a/core/class/table/table_comment_attach.php
+++ /dev/null
@@ -1,180 +0,0 @@
-_table = 'comment_attach';
- $this->_pk = 'qid';
- $this->_pre_cache_key = 'comment_attach_';
- $this->_cache_ttl = 60*60;
- parent::__construct();
- }
- public function fetch_by_qid($qid){
- global $_G;
- if(!$data=self::fetch($qid)) return false;
- if($data['aid']>0){
- $attach=C::t('attachment')->fetch($data['aid']);
- if(in_array(strtolower($attach['filetype']),array('png','jpeg','jpg','gif'))){
- $attach['img']=C::t('attachment')->getThumbByAid($attach,120,80);
- $attach['isimage']=1;
- $attach['type']='image';
- }else{
- $attach['img']=geticonfromext($attach['filetype'],'');
- $attach['isimage']=0;
- }
- $attach['url']=getAttachUrl($attach);
-
- $attach['filename']=$data['title'];
- $data = array_merge($attach,$data);
- }
- return $data;
- }
- public function insert_by_cid($cid,$attach){
- //处理附件
- foreach($attach['title'] as $key=>$value){
- $setarr=array('cid'=>$cid,
- 'dateline'=>TIMESTAMP,
- 'aid'=>intval($attach['aid'][$key]),
- 'title'=>getstr($value),
- 'type'=>getstr($attach['type'][$key]),
- 'img'=>getstr($attach['img'][$key]),
- 'url'=>getstr($attach['url'][$key]),
- 'ext'=>getstr($attach['ext'][$key])
- );
-
- if(parent::insert($setarr)){
- if($setarr['aid']>0) C::t('attachment')->addcopy_by_aid($setarr['aid']);
- if($setarr['type']=='link'){
- $imgarr=$setarr['img']?explode('icon',$setarr['img']):array();
- if(isset($imgarr[1]) && ($did=DB::result_first("select did from %t where pic=%s",array('icon','icon'.$imgarr[1])))) C::t('icon')->update_copys_by_did($did);
- }
- }
- }
- }
- public function update_by_cid($cid,$attach){
- $qids=array();
- $ret=0;
- foreach(DB::fetch_all("select qid from %t where cid=%d",array($this->_table,$cid)) as $value){
- $qids[$value['qid']]=$value['qid'];
- }
-
- foreach($attach['title'] as $key=> $value){
- $qid=intval($attach['qid'][$key]);
- if($qid>0){
- unset($qids[$qid]);
- }else{
- $setarr=array('cid'=>$cid,
- 'dateline'=>TIMESTAMP,
- 'aid'=>intval($attach['aid'][$key]),
- 'title'=>trim($value),
- 'type'=>trim($attach['type'][$key]),
- 'img'=>trim($attach['img'][$key]),
- 'url'=>trim($attach['url'][$key]),
- 'ext'=>trim($attach['ext'][$key])
- );
- if($ret+=parent::insert($setarr)){
- if($setarr['aid']) C::t('attachment')->addcopy_by_aid($setarr['aid']);
- if($setarr['type']=='link'){
- $imgarr=$setarr['img']?explode('icon',$setarr['img']):array();
- if(isset($imgarr[1]) && ($did=DB::result_first("select did from %t where pic=%s",array('icon','icon'.$imgarr[1])))) C::t('icon')->update_copys_by_did($did,-1);
- }
- }
- }
- }
- if($qids) $ret+=self::delete_by_qid($qids);
- return $ret;
- }
- public function delete_by_qid($qids){
- $qids=(array)$qids;
- $ret=0;
- foreach(DB::fetch_all("select qid,aid,type,img from %t where qid IN(%n)",array('comment_attach',$qids)) as $value){
- if(parent::delete($value['qid'])){
- $ret+=1;
- if($value['aid']>0) C::t('attachment')->delete_by_aid($value['aid']);
- if($value['type']=='link'){
- $imgarr=$value['img']?explode('icon',$value['img']):array();
- if(isset($imgarr[1]) && ($did=DB::result_first("select did from %t where pic=%s",array('icon','icon'.$imgarr[1])))) C::t('icon')->update_copys_by_did($did,-1);
- }
- }
- }
- return $ret;
- }
- public function delete_by_cid($cids){
- $cids=(array)$cids;
- $ret=0;
- foreach(DB::fetch_all("select qid,aid,type,img from %t where cid IN (%n) ",array('comment_attach',$cids)) as $value){
- if(parent::delete($value['qid'])){
- $ret+=1;
- if($value['aid']>0) C::t('attachment')->delete_by_aid($value['aid']);
- if($value['type']=='link'){
- $imgarr=$value['img']?explode('icon',$value['img']):array();
- if(isset($imgarr[1]) && ($did=DB::result_first("select did from %t where pic=%s",array('icon','icon'.$imgarr[1])))) C::t('icon')->update_copys_by_did($did,-1);
- }
- }
- }
- return $ret;
- }
-
- public function fetch_all_by_cid($cid){
- global $_G;
- $data=array();
- //$openext=C::t('app_open')->fetch_all_orderby_ext($_G['uid']);
- foreach(DB::fetch_all("select * from %t where cid= %d",array($this->_table,$cid)) as $value){
- $value['title']=getstr($value['title']);
- $value['type']=getstr($value['type']);
- $value['url']=getstr($value['url']);
- $value['ext']=getstr($value['ext']);
- $value['img']=getstr($value['img']);
-
- if($value['aid']>0){
- $attach=C::t('attachment')->fetch($value['aid']);
- if(in_array(strtolower($attach['filetype']),array('png','jpeg','jpg','gif','bmp'))){
- $attach['img']=C::t('attachment')->getThumbByAid($attach);
- $attach['isimage']=1;
- $value['type']='image';
- }else{
- $attach['img']=geticonfromext($attach['filetype'],'');
- $attach['isimage']=0;
- }
- $attach['url']=getAttachUrl($attach);
- //if(isset($openext[$attach['filetype']]))
- $attach['preview']=1;
- $attach['filesize']=formatsize($attach['filesize']);
- $data[$value['qid']]=array_merge($value,$attach);
- }else{
- $value['preview']=1;
- $data[$value['qid']]=$value;
- }
-
- }
- return $data;
- }
- public function copy_by_cid($ocid,$cid){
- $aids=array();
- foreach(DB::fetch_all("select * from %t where cid=%d",array($this->_table,$ocid)) as $value){
- unset($value['qid']);
- $value['cid']=$cid;
- if(parent::insert($value)){
- if($value['type']=='attach' && $value['aid']>0) C::t('attachment')->addcopy_by_aid($value['aid']);
- if($value['type']=='link'){
- $imgarr=$value['img']?explode('icon',$value['img']):array();
- if(isset($imgarr[1]) && ($did=DB::result_first("select did from %t where pic=%s",array('icon','icon'.$imgarr[1])))) C::t('icon')->update_copys_by_did($did);
- }
- }
- }
- return 0;
- }
-}
-?>
diff --git a/core/class/table/table_connect.php b/core/class/table/table_connect.php
deleted file mode 100644
index 26e795f..0000000
--- a/core/class/table/table_connect.php
+++ /dev/null
@@ -1,77 +0,0 @@
-_table = 'connect';
- $this->_pk = 'bz';
- $this->_pre_cache_key = 'connect_';
- $this->_cache_ttl = 60*60;
- parent::__construct();
- }
- public function fetch_all_by_available($onlyuser=false){
- $data=array();
- if($onlyuser) $available=1;
- else $available=0;
- $query=DB::query("SELECT * FROM ".DB::table($this->_table)." WHERE available > '{$available}' and type!='local' ORDER BY disp");
- while($value=DB::fetch($query)){
- //检测可用性
- if($value['type']=='pan' && (empty($value['key']) || empty($value['secret']))){
- $value['available']=0;
- $value['warning']=lang('please_open_after_setting');
- continue;
- }
- if(!is_file(DZZ_ROOT.'./core/class/io/io_'.($value['bz']).'.php')){
- $value['available']=0;
- $value['warning']='api'.lang('typename_attach').':io_'.($value['bz']).'.php'.lang('inexistence').'!';
- continue;
- }
-
- $data[$value['bz']]=$value;
- }
- return $data;
- }
-
- public function fetch_all_folderdata($uid){
- $data=self::fetch_all_by_available();
- $folderdata=array();
- foreach($data as $value){
- foreach(DB::fetch_all("select id from ".DB::table($value['dname'])." where uid>0 && uid='{$uid}'") as $value1){
-
- $arr=C::t($value['dname'])->fetch_by_id($value1['id']);
- $folderdata[$arr['fid']]=$arr;
- }
- }
- return $folderdata;
- }
- public function fetch_all_bz(){
- $data=array();
- foreach(DB::fetch_all("select bz from %t where 1",array($this->_table)) as $value){
- $data[]=$value['bz'];
- }
- return $data;
- }
- public function delete_by_bz($bz){
- if($bz=='dzz') return false; //dzz是内置,不能删除
- $data=self::fetch($bz);
- if(is_file(DZZ_ROOT.'./core/class/table/table_'.$data['dname'].'.php')){
- C::t($data['dname'])->delete_by_bz($bz);
- }
- return self::delete($bz);
- }
-}
-
-?>
diff --git a/core/class/table/table_connect_disk.php b/core/class/table/table_connect_disk.php
deleted file mode 100644
index bb73e6d..0000000
--- a/core/class/table/table_connect_disk.php
+++ /dev/null
@@ -1,82 +0,0 @@
-_table = 'connect_disk';
- $this->_pk = 'id';
- $this->_pre_cache_key = 'connect_disk_';
- $this->_cache_ttl = 300;
- parent::__construct();
- }
- public function fetch_by_id($id){
-
- $value=parent::fetch($id);
- $cloud=DB::fetch_first("select * from ".DB::table('connect')." where bz='{$value['bz']}'");
- $data=array(
- 'id'=>$value['id'],
- 'fid'=>md5($cloud['bz'].':'.$value['id'].':'.$cloud['root']),
- 'pfid'=>0,
- 'fname'=>$value['cloudname'],
- 'ficon'=>'dzz/images/default/system/'.$cloud['bz'].'.png',
- 'bz'=>$cloud['bz'].':'.$value['id'].':',
- 'path'=>$cloud['bz'].':'.$value['id'].':'.$cloud['root'],
- 'type'=>'disk',
- 'fsperm'=>perm_FolderSPerm::flagPower($cloud['bz']),
- 'perm'=>perm_binPerm::getGroupPower('all'),
- 'flag'=>$cloud['bz'],
- 'iconview'=>1,
- 'disp'=>'0',
- );
-
- return $data;
- }
- public function fetch_all_by_id($ids){
- $data=array();
- foreach($ids as $id){
- $value=self::fetch_by_id($id);
- $data[$value['fid']]=$value;
- }
- return $data;
- }
- public function delete_by_id($id){
- $return=array();
- $data=parent::fetch($id);
- if(parent::delete($id)){
- $return['msg']='success';
- //C::t('source_shortcut')->delete_by_bz($data['bz'].':'.$id.':',true);//删除快捷方式;
- //删除图片缓存文件
- $imgcache=getglobal('setting/attachdir').'./imgcache/'.$data['bz'].'/'.$id.'/';
- removedirectory($imgcache);
- }
- return $return;
- }
- public function delete_by_uid($uid){
- if(!$uid) return 0;
- foreach(DB::fetch_all("select id from %t where uid=%d",array($this->_table,$uid)) as $value){
- self::delete_by_id($value['id']);
- }
- return true;
- }
- public function delete_by_bz($bz){
- foreach(DB::fetch_all("select id from %t where bz=%s",array($this->_table,$bz)) as $value){
- self::delete_by_id($value['id']);
- }
- }
-}
-
-?>
diff --git a/core/class/table/table_connect_ftp.php b/core/class/table/table_connect_ftp.php
deleted file mode 100644
index dc9b23a..0000000
--- a/core/class/table/table_connect_ftp.php
+++ /dev/null
@@ -1,82 +0,0 @@
-_table = 'connect_ftp';
- $this->_pk = 'id';
- $this->_pre_cache_key = 'connect_ftp_';
- $this->_cache_ttl = 300;
- parent::__construct();
- }
- public function fetch_by_id($id){
-
- $value=self::fetch($id);
- $cloud=DB::fetch_first("select * from ".DB::table('connect')." where bz='{$value['bz']}'");
- $data=array(
- 'id'=>$value['id'],
- 'fid'=>md5($cloud['bz'].':'.$value['id'].':'.$cloud['root']),
- 'pfid'=>0,
- 'fname'=>$value['cloudname'],
- 'ficon'=>'dzz/images/default/system/'.$cloud['bz'].'.png',
- 'bz'=>$cloud['bz'].':'.$value['id'].':',
- 'path'=>$cloud['bz'].':'.$value['id'].':'.$cloud['root'],
- 'type'=>'ftp',
- 'fsperm'=>perm_FolderSPerm::flagPower($cloud['bz']),
- 'perm'=>perm_binPerm::getGroupPower('all'),
- 'flag'=>$cloud['bz'],
- 'iconview'=>1,
- 'disp'=>'0',
- );
-
- return $data;
- }
- public function fetch_all_by_id($ids){
- $data=array();
- foreach($ids as $id){
- $value=self::fetch_by_id($id);
- $data[$value['fid']]=$value;
- }
- return $data;
- }
- public function delete_by_id($id){
- $return=array();
- $data=parent::fetch($id);
- if(parent::delete($id)){
- $return['msg']='success';
- //C::t('source_shortcut')->delete_by_bz($data['bz'].':'.$id.':',true);//删除快捷方式;
- //删除图片缓存文件
- $imgcache=getglobal('setting/attachdir').'./imgcache/'.$data['bz'].'/'.$id.'/';
- removedirectory($imgcache);
- }
- return $return;
- }
- public function delete_by_uid($uid){
- if(!$uid) return 0;
- foreach(DB::fetch_all("select id from %t where uid=%d",array($this->_table,$uid)) as $value){
- self::delete_by_id($value['id']);
- }
- return true;
- }
- public function delete_by_bz($bz){
- foreach(DB::fetch_all("select id from %t where bz=%s",array($this->_table,$bz)) as $value){
- self::delete_by_id($value['id']);
- }
- }
-}
-
-?>
diff --git a/core/class/table/table_connect_onedrive.php b/core/class/table/table_connect_onedrive.php
deleted file mode 100644
index 6aefcbe..0000000
--- a/core/class/table/table_connect_onedrive.php
+++ /dev/null
@@ -1,83 +0,0 @@
-_table = 'connect_onedrive';
- $this->_pk = 'id';
- $this->_pre_cache_key = 'connect_onedrive_';
- $this->_cache_ttl = 300;
- parent::__construct();
- }
- public function fetch_by_id($id){
-
- $value=self::fetch($id);
- $cloud=DB::fetch_first("select * from ".DB::table('connect')." where bz='{$value['bz']}'");
- if(!$value['cloudname']) $value['cloudname']=$cloud['name'].':'.($value['cusername']?$value['cusername']:$cloud['cuid']);
- $data=array(
- 'id'=>$value['id'],
- 'fid'=>md5($cloud['bz'].':'.$value['id'].':'.$cloud['root']),
- 'pfid'=>0,
- 'fname'=>$value['cloudname'],
- 'ficon'=>'dzz/images/default/system/'.$cloud['bz'].'.png',
- 'bz'=>$cloud['bz'].':'.$value['id'].':',
- 'path'=>$cloud['bz'].':'.$value['id'].':'.$cloud['root'],
- 'type'=>'pan',
- 'fsperm'=>perm_FolderSPerm::flagPower($cloud['bz']),
- 'perm'=>perm_binPerm::getGroupPower('all'),
- 'flag'=>$cloud['bz'],
- 'iconview'=>1,
- 'disp'=>'0',
- );
-
- return $data;
- }
- public function fetch_all_by_id($ids){
- $data=array();
- foreach($ids as $id){
- $value=self::fetch_by_id($id);
- $data[$value['fid']]=$value;
- }
- return $data;
- }
- public function delete_by_id($id){
- $return=array();
- $data=parent::fetch($id);
- if(parent::delete($id)){
- $return['msg']='success';
- //C::t('source_shortcut')->delete_by_bz($data['bz'].':'.$id.':',true);//删除快捷方式;
- //删除图片缓存文件
- $imgcache=getglobal('setting/attachdir').'./imgcache/'.$data['bz'].'/'.$id.'/';
- removedirectory($imgcache);
- }
- return $return;
- }
- public function delete_by_uid($uid){
- if(!$uid) return 0;
- foreach(DB::fetch_all("select id from %t where uid=%d",array($this->_table,$uid)) as $value){
- self::delete_by_id($value['id']);
- }
- return true;
- }
- public function delete_by_bz($bz){
- foreach(DB::fetch_all("select id from %t where bz=%s",array($this->_table,$bz)) as $value){
- self::delete_by_id($value['id']);
- }
- }
-}
-
-?>
diff --git a/core/class/table/table_connect_pan.php b/core/class/table/table_connect_pan.php
deleted file mode 100644
index 942727c..0000000
--- a/core/class/table/table_connect_pan.php
+++ /dev/null
@@ -1,83 +0,0 @@
-_table = 'connect_pan';
- $this->_pk = 'id';
- $this->_pre_cache_key = 'connect_pan_';
- $this->_cache_ttl = 300;
- parent::__construct();
- }
- public function fetch_by_id($id){
-
- $value=self::fetch($id);
- $cloud=DB::fetch_first("select * from ".DB::table('connect')." where bz='{$value['bz']}'");
- if(!$value['cloudname']) $value['cloudname']=$cloud['name'].':'.($value['cusername']?$value['cusername']:$cloud['cuid']);
- $data=array(
- 'id'=>$value['id'],
- 'fid'=>md5($cloud['bz'].':'.$value['id'].':'.$cloud['root']),
- 'pfid'=>0,
- 'fname'=>$value['cloudname'],
- 'ficon'=>'dzz/images/default/system/'.$cloud['bz'].'.png',
- 'bz'=>$cloud['bz'].':'.$value['id'].':',
- 'path'=>$cloud['bz'].':'.$value['id'].':'.$cloud['root'],
- 'type'=>'pan',
- 'fsperm'=>perm_FolderSPerm::flagPower($cloud['bz']),
- 'perm'=>perm_binPerm::getGroupPower('all'),
- 'flag'=>$cloud['bz'],
- 'iconview'=>1,
- 'disp'=>'0',
- );
-
- return $data;
- }
- public function fetch_all_by_id($ids){
- $data=array();
- foreach($ids as $id){
- $value=self::fetch_by_id($id);
- $data[$value['fid']]=$value;
- }
- return $data;
- }
- public function delete_by_id($id){
- $return=array();
- $data=parent::fetch($id);
- if(parent::delete($id)){
- $return['msg']='success';
- //C::t('source_shortcut')->delete_by_bz($data['bz'].':'.$id.':',true);//删除快捷方式;
- //删除图片缓存文件
- $imgcache=getglobal('setting/attachdir').'./imgcache/'.$data['bz'].'/'.$id.'/';
- removedirectory($imgcache);
- }
- return $return;
- }
- public function delete_by_uid($uid){
- if(!$uid) return 0;
- foreach(DB::fetch_all("select id from %t where uid=%d",array($this->_table,$uid)) as $value){
- self::delete_by_id($value['id']);
- }
- return true;
- }
- public function delete_by_bz($bz){
- foreach(DB::fetch_all("select id from %t where bz=%s",array($this->_table,$bz)) as $value){
- self::delete_by_id($value['id']);
- }
- }
-}
-
-?>
diff --git a/core/class/table/table_connect_storage.php b/core/class/table/table_connect_storage.php
deleted file mode 100644
index 9ba9441..0000000
--- a/core/class/table/table_connect_storage.php
+++ /dev/null
@@ -1,84 +0,0 @@
-_table = 'connect_storage';
- $this->_pk = 'id';
- /*$this->_pre_cache_key = 'connect_storage_';
- $this->_cache_ttl = 0;*/
- parent::__construct();
- }
- public function fetch_by_id($id){
-
- $value=self::fetch($id);
- $cloud=DB::fetch_first("select * from ".DB::table('connect')." where bz='{$value['bz']}'");
- $value['access_id']=authcode($value['access_id'],'DECODE',$value['bz'])?authcode($value['access_id'],'DECODE',$value['bz']):$value['access_id'];
- if(!$value['cloudname']) $value['cloudname']=$cloud['name'].':'.($value['bucket']?$value['bucket']:cutstr($value['access_id'], 4, ''));
- if($value['bucket']) $value['bucket'].='/';
- $data=array(
- 'id'=>$value['id'],
- 'fid'=>md5($cloud['bz'].':'.$value['id'].':'.$value['bucket']),
- 'pfid'=>0,
- 'fname'=>$value['cloudname'],
- 'ficon'=>'dzz/images/default/system/'.$cloud['bz'].'.png',
- 'bz'=>$cloud['bz'].':'.$value['id'].':',
- 'path'=>$cloud['bz'].':'.$value['id'].':'.$value['bucket'],
- 'type'=>'storage',
- 'fsperm'=>$value['bucket']?'0':perm_FolderSPerm::flagPower($cloud['bz'].'_root'),
- 'perm'=>perm_binPerm::getGroupPower('all'),
- 'flag'=>$cloud['bz'],
- 'iconview'=>1,
- 'disp'=>'0',
- );
-
- return $data;
- }
- public function fetch_all_by_id($ids){
- $data=array();
- foreach($ids as $id){
- if($value=self::fetch_by_id($id)) $data[$value['fid']]=$value;
- }
- return $data;
- }
- public function delete_by_id($id){
- //删除此应用的快捷方式
- $return=array();
- $data=parent::fetch($id);
- if(parent::delete($id)){
- $return['msg']='success';
- //C::t('source_shortcut')->delete_by_bz($data['bz'].':'.$id.':',true);//删除快捷方式;
- //删除图片缓存文件
- $imgcache=getglobal('setting/attachdir').'./imgcache/'.$data['bz'].'/'.$id.'/';
- removedirectory($imgcache);
- }
- return $return;
- }
- public function delete_by_uid($uid){
- if(!$uid) return 0;
- foreach(DB::fetch_all("select id from %t where uid=%d",array($this->_table,$uid)) as $value){
- self::delete_by_id($value['id']);
- }
- return true;
- }
- public function delete_by_bz($bz){
- foreach(DB::fetch_all("select id from %t where bz=%s",array($this->_table,$bz)) as $value){
- self::delete_by_id($value['id']);
- }
- }
-}
-
-?>
diff --git a/core/class/table/table_cron.php b/core/class/table/table_cron.php
deleted file mode 100644
index 0e8c0d0..0000000
--- a/core/class/table/table_cron.php
+++ /dev/null
@@ -1,39 +0,0 @@
-_table = 'cron';
- $this->_pk = 'cronid';
-
- parent::__construct();
- }
-
- public function fetch_nextrun($timestamp) {
- $timestamp = intval($timestamp);
- return DB::fetch_first('SELECT * FROM '.DB::table($this->_table)." WHERE available>'0' AND nextrun<='$timestamp' ORDER BY nextrun LIMIT 1");
- }
-
- public function fetch_nextcron() {
- return DB::fetch_first('SELECT * FROM '.DB::table($this->_table)." WHERE available>'0' ORDER BY nextrun LIMIT 1");
- }
-
- public function get_cronid_by_filename($filename) {
- return DB::result_first('SELECT cronid FROM '.DB::table($this->_table)." WHERE filename='$filename'");
- }
-
-}
-
-?>
diff --git a/core/class/table/table_district.php b/core/class/table/table_district.php
deleted file mode 100644
index a3b9bb7..0000000
--- a/core/class/table/table_district.php
+++ /dev/null
@@ -1,41 +0,0 @@
-_table = 'district';
- $this->_pk = 'id';
-
- parent::__construct();
- }
-
- public function fetch_all_by_upid($upid, $order = null, $sort = 'DESC') {
- $upid = is_array($upid) ? array_map('intval', (array)$upid) : dintval($upid);
- if($upid !== null) {
- $ordersql = $order !== null && !empty($order) ? ' ORDER BY '.DB::order($order, $sort) : '';
- return DB::fetch_all('SELECT * FROM %t WHERE '.DB::field('upid', $upid)." $ordersql", array($this->_table), $this->_pk);
- }
- return array();
- }
-
- public function fetch_all_by_name($name) {
- if(!empty($name)) {
- return DB::fetch_all('SELECT * FROM %t WHERE '.DB::field('name', $name), array($this->_table));
- }
- return array();
- }
-
-}
-
-?>
diff --git a/core/class/table/table_document.php b/core/class/table/table_document.php
deleted file mode 100644
index 1f38c5f..0000000
--- a/core/class/table/table_document.php
+++ /dev/null
@@ -1,127 +0,0 @@
-_table = 'document';
- $this->_pk = 'did';
- /* $this->_pre_cache_key = 'document_';
- $this->_cache_ttl = 0;*/
-
- parent::__construct();
- }
-
- public function copy_by_did($did,$area='',$areaid=0,$fid=0){ //复制文档
- global $_G;
- if(!$data=self::fetch($did)) return false;
- unset($data['did']);
- $data['version']=1;
- $data['uid']=$_G['uid'];
- $data['username']=$_G['username'];
- $data['dateline']=TIMESTAMP;
- if($area) $data['area']=$area;
- if($areaid) $data['areaid']=$areaid;
- if($fid) $data['fid']=$fid;
-
- if($data['did']=parent::insert($data,1)){
- $newest=array();
- $i=0;
- foreach(DB::fetch_all("select * from %t where did=%d order by version",array('document_reversion',$did)) as $value){
- $attachs=array();
-
- unset($value['revid']);
- $value['did']=$data['did'];
- $value['dateline']=TIMESTAMP;
- $value['uid']=$_G['uid'];
- $value['username']=$_G['username'];
- $value['version']-=$i;
- if($value['attachs']) $attachs=explode(',',$value['attachs']);
- $attachs[]=$value['aid'];
- if(C::t('document_reversion')->insert_by_parent($value)){
- C::t('attachment')->addcopy_by_aid($attachs);
- $newest=$value;
- }else{
- $i++;
- }
- }
- if($newest){
- parent::update($data['did'],array('version'=>$newest['version'],'aid'=>$newest['aid']));
- return $data['did'];
- }else{
- parent::delete($data['did']);
- return false;
- }
- }
- return false;
- }
- public function insert($arr,$attachs=array(),$area='',$areaid=0,$new=0){ //插入
- if(!$arr['did']){//首次插入
- $setarr=$arr;
- $setarr['version']=1;
- $setarr['area']=$area;
- $setarr['areaid']=$areaid;
- $setarr['dateline']=TIMESTAMP;
- $arr['did']=parent::insert($setarr,1);
- }
-
- $arr['attachs']=$attachs;
-
- //插入版本库
- $verarr=array('did'=>$arr['did'],
- 'aid'=>$arr['aid'],
- 'uid'=>$arr['uid'],
- 'username'=>$arr['username'],
- 'attachs'=>$attachs
- );
- if($re=C::t('document_reversion')->insert($verarr,$new)){
- $setarr=array('version'=>$re['version'],
- 'uid'=>$arr['uid'],
- 'username'=>$arr['username'],
- 'aid'=>$arr['aid']
- );
- parent::update($re['did'],$setarr);
- }
- return $arr['did'];
- }
- public function fetch_by_did($did){
- if(!$data=self::fetch($did)) return false;
- $attach=C::t('attachment')->fetch($data['aid']);
- return array_merge($attach,$data);
- }
- public function delete_by_did($did,$force=false){
- if(!$data=self::fetch($did)) return false;
- if($force || $data['isdelete']){
- //删除版本
- C::t('document_reversion')->delete_by_did($did);
- //删除评论
- C::t('comment')->delete_by_id_idtype($did,'document');
- return parent::delete($did);
- }else{
- return parent::update($did,array('isdelete'=>TIMESTAMP));
- }
- }
- //获取最新的10条附件。
- public function fetch_all_by_areaid($areaid,$area='project',$limit='10'){
- global $_G;
- $data=array();
- foreach(DB::fetch_all("select * from %t where areaid=%d and area=%s limit $limit",array($this->_table,$areaid,$area)) as $value){
- $attach=C::t('attachment')->fetch($value['aid']);
- $data[$value['qid']]=array_merge($value,$attach);
- }
- return $data;
- }
-}
-
-?>
diff --git a/core/class/table/table_document_event.php b/core/class/table/table_document_event.php
deleted file mode 100644
index 65f2e9e..0000000
--- a/core/class/table/table_document_event.php
+++ /dev/null
@@ -1,54 +0,0 @@
-_table = 'document_event';
- $this->_pk = 'eid';
-
- parent::__construct();
- }
-
- public function delete_by_did($dids){
- if(!is_array($dids)) $dids=array($dids);
- return DB::delete($this->_table,"did IN (".dimplode($dids).")");
- }
-
- public function fetch_all_by_did($did){
- $data=array();
- foreach(DB::fetch_all("select * from %t where did = %d order by dateline",array($this->_table,$did)) as $value){
- switch($value['action']){
- case 'create':
- $value['faction']=lang('create_document');
- break;
- case 'reversion':
- $value['faction']=lang('edit_document');
- break;
- case 'edit':
- $value['faction']=lang('edit_document');
- break;
- case 'delete':
- $value['faction']=lang('delete_document');
- break;
- case 'rename':
- $value['faction']=lang('rename_document');
- break;
- }
- $data[]=$value;
- }
- }
-}
-
-?>
diff --git a/core/class/table/table_document_reversion.php b/core/class/table/table_document_reversion.php
deleted file mode 100644
index 4c73986..0000000
--- a/core/class/table/table_document_reversion.php
+++ /dev/null
@@ -1,199 +0,0 @@
-_table = 'document_reversion';
- $this->_pk = 'revid';
-
- parent::__construct();
- }
- public function fetch_by_revid($revid){
- global $_G;
- if(!$data=self::fetch($revid)) return false;
- $attach=C::t('attachment')->fetch($data['aid']);
- return array_merge($attach,$data);
- }
- public function reversion($did,$version,$uid,$username){ //使用此版本
- $newest=DB::fetch_first("select * from %t where did=%d order by version DESC limit 1",array($this->_table,$did));
- if($version==$newest['version']) return false;//已经是最新版了
- if($oversion=DB::fetch_first("select * from %t where did=%d and version=%d",array($this->_table,$did,$version))){
- unset($oversion['revid']);
- $oversion['version']=$newest['version']+1;
- $oversion['uid']=$uid;
- $oversion['did']=$did;
- $oversion['username']=$username;
- $oversion['dateline']=TIMESTAMP;
- if($oversion['revid']=parent::insert($oversion,1)){
- //插入事件
- $event=array('did'=>$did,
- 'action'=>'reversion',
- 'uid'=>$uid,
- 'username'=>$username,
- 'dateline'=>TIMESTAMP,
-
- );
- C::t('document_event')->insert($event);
-
- //更新附件的copys
- $addids=array();
- if($oversion['attachs']) $addids=explode(',',$oversion['attachs']);
- $addids[]=$oversion['aid'];
- C::t('attachment')->addcopy_by_aid($addids);
- //更新主文档表
- $setarr=array('version'=>$oversion['version'],
- 'uid'=>$oversion['uid'],
- 'username'=>$oversion['username'],
- 'aid'=>$oversion['aid']
- );
- C::t('document')->update($did,$setarr);
- }
- return $oversion['version'];
- }
- return false;
- }
- public function insert_by_parent($arr){
- return parent::insert($arr,1);
- }
- public function insert($arr,$new){
- //先获取最新版本,没有的话新插入
- $newest=array();
- if($newest=DB::fetch_first("select * from %t where did=%d order by version DESC limit 1",array($this->_table,$arr['did']))){
- if($new){
- $arr['version']=$newest['version']+1;
- $arr['dateline']=TIMESTAMP;
- $attachs=array();
- if($arr['attachs']) {
- $attachs=$arr['attachs'];
- $arr['attachs']=implode(',',$attachs);
- }else{
- $arr['attachs']='';
- }
- if($arr['revid']=parent::insert($arr,1)){
- $attachs[]=$arr['aid'];
- C::t('attachment')->addcopy_by_aid($attachs);
- //插入事件
- $event=array('did'=>$arr['did'],
- 'action'=>'edit',
- 'uid'=>$arr['uid'],
- 'username'=>$arr['username'],
- 'dateline'=>TIMESTAMP
- );
- C::t('document_event')->insert($event);
- }
- }else{
- $oldattachs=$newest['attachs']?explode(',',$newest['attachs']):array();
- $oldattachs[]=$newest['aid'];
-
- $attachs=array();
- if($arr['attachs']) {
- $attachs=$arr['attachs'];
- $arr['attachs']=implode(',',$arr['attachs']);
- }else{
- $arr['attachs']='';
- }
- $attachs[]=$arr['aid'];
- if(parent::update($newest['revid'],$arr)){
- $arr['version']=$newest['version'];
- $arr['revid']=$newest['revid'];
- $delaids=array_diff($oldattachs,$attachs);
- C::t('attachment')->addcopy_by_aid($delaids,-1);
- $insertaids=array_diff($attachs,$oldattachs);
- C::t('attachment')->addcopy_by_aid($insertaids);
- }
- }
- }else{
- $arr['version']=1;
- $arr['dateline']=TIMESTAMP;
- $attachs=array();
- if($arr['attachs']) {
- $attachs=$arr['attachs'];
- $arr['attachs']=implode(',',$arr['attachs']);
- }else{
- $arr['attachs']='';
- }
- if($arr['revid']=parent::insert($arr,1)){
- $attachs[]=$arr['aid'];
- C::t('attachment')->addcopy_by_aid($attachs);
- //插入事件
- $event=array('did'=>$arr['did'],
- 'action'=>'create',
- 'uid'=>$arr['uid'],
- 'username'=>$arr['username'],
- 'dateline'=>TIMESTAMP
- );
- C::t('document_event')->insert($event);
- }
- }
- if($arr['revid']) return $arr;
- else return false;
- }
- public function delete_by_version($did,$version){
- $vers=self::fetch_all_by_did($did);
- self::delete($vers[$version]['revid']);
- unset($vers[$version]);
- $vers1=array();
- $vers=array_values(array_reverse($vers));
- foreach($vers as $key=> $value){
- $value['version']=$key+1;
- parent::update($value['revid'],array('version'=>$value['version']));
- }
- //更新主文档表
- if($value['version']>0){
- $setarr=array('version'=>$value['version'],
- 'uid'=>$value['uid'],
- 'username'=>$value['username'],
- 'aid'=>$value['aid']
- );
- C::t('document')->update($did,$setarr);
- return $value['version'];
- }else{
- return false;
- }
- }
- public function delete($revid){
- $data=parent::fetch($revid);
- $attachs=array();
- if($data['attachs']) $attachs=explode(',',$data['attachs']);
- $attachs[]=$data['aid'];
- foreach($attachs as $aid){
- C::t('attachment')->delete_by_aid($aid);
- }
- return parent::delete($revid);
- }
- public function delete_by_did($dids){
- if(!is_array($dids)) $dids=array($dids);
- $attachs=array();
- foreach(DB::fetch_all("select revid,aid,attachs from %t where did IN (%n) ",array($this->_table,$dids)) as $value){
- if($value['attachs']) $attachs=array_merge($attachs,explode(',',$value['attachs']));
- $attachs[]=$value['aid'];
- $revids[]=$value['revid'];
- }
- foreach($attachs as $aid){
- C::t('attachment')->delete_by_aid($aid);
- }
- return parent::delete($revids);
- }
- public function fetch_all_by_did($did){
- $data=array();
- foreach(DB::fetch_all("select * from %t where did= %d order by version DESC",array($this->_table,$did)) as $value){
- $attach=C::t('attachment')->fetch($value['aid']);
- $data[$value['version']]=array_merge($value,$attach);
- }
- return $data;
- }
-}
-
-?>
diff --git a/core/class/table/table_failedlogin.php b/core/class/table/table_failedlogin.php
deleted file mode 100644
index 6ca2ee5..0000000
--- a/core/class/table/table_failedlogin.php
+++ /dev/null
@@ -1,38 +0,0 @@
-_table = 'failedlogin';
- $this->_pk = '';
-
- parent::__construct();
- }
-
- public function fetch_username($ip='', $username='') {
- return DB::fetch_first("SELECT * FROM %t WHERE ip=%s AND username=%s", array($this->_table, $ip, $username));
- }
- public function fetch_ip($ip='',$username='') {
- return DB::fetch_first("SELECT * FROM %t WHERE ip=%s AND username = %s", array($this->_table, $ip,$username));
- }
-
- public function delete_old($time) {
- DB::query("DELETE FROM %t WHERE lastupdate<%d", array($this->_table, TIMESTAMP - intval($time)), 'UNBUFFERED');
- }
-
- public function update_failed($ip='', $username='') {
- DB::query("UPDATE %t SET count=count+1, lastupdate=%d WHERE ip=%s AND username = %s", array($this->_table, TIMESTAMP, $ip,$username));
- }
-
-}
diff --git a/core/class/table/table_folder.php b/core/class/table/table_folder.php
deleted file mode 100644
index 09d3966..0000000
--- a/core/class/table/table_folder.php
+++ /dev/null
@@ -1,600 +0,0 @@
-_table = 'folder';
- $this->_pk = 'fid';
- $this->_pre_cache_key = 'folder_';
- $this->_cache_ttl = 60 * 60;
- parent::__construct();
- }
-
- public function update($fid, $data,$applytosub=false)
- {
- if (isset($data['perm'])) {
- $perm = intval($data['perm']);
- $data['perm_inherit'] = perm_check::getPerm1($fid, '', 0, $perm);
- }
- if ($ret = parent::update($fid, $data)) {
- if (!empty($data['perm_inherit'])) {//如果更新权限的话,需要单独处理子目录的继承权限
- $this->set_newperm_by_pfid($fid,$data['perm_inherit'],$applytosub);
- $indexdata = array('fid'=>$fid);
- Hook::listen('changepermafter_updateindex',$indexdata);
- /*$power = new perm_binPerm($perm);
- if ($power->isPower('flag')) {//不继承,更新下级继承权限
- $subfids = array();
- foreach (DB::fetch_all("select p.fid from %t p LEFT JOIN %t f ON p.fid=f.fid where p.pathkey regexp %s and f.perm='0'", array('resources_path', 'folder', '^_'.$fid.'_.+')) as $value) {
- $subfids[] = $value['fid'];
- }
- if ($subfids) parent::update($subfids, array('perm_inherit' => $perm));
- }*/
- }
- }
- return $ret;
- }
- //更改权限修改下级,$force==true,强制修改所有下级目录权限为继承(perm值设置为0)
- public function set_newperm_by_pfid($pfid,$perm,$force=false){
- $pfid = intval($pfid);
- foreach(DB::fetch_all("select fid,perm from %t where pfid = %d",array($this->_table,$pfid)) as $v){
- if(!$force && $v['perm']>0){
- continue;
- }else{
- parent::update($v['fid'],array('perm'=>0,'perm_inherit'=>$perm));
- $indexdata = array('fid'=>$v['fid']);
- Hook::listen('changepermafter_updateindex',$indexdata);
- $this->set_newperm_by_pfid($v['fid'],$perm,$force);
- }
- }
- return true;
- }
- public function update_by_pfids($pfids,$setarr){
- if(!is_array($pfids)) $pfids = (array)$pfids;
- $fids = array();
- foreach(DB::fetch_all("select fid from %t where pfid in(%n)",array($this->_table,$pfids)) as $v){
- $fids[] = $v['fid'];
- }
- foreach($fids as $v){
- self::update($v,$setarr);
- }
- return true;
- }
-
- //更改继承权限
- public function update_perm_inherit_by_fid($fids)
- {
- if (!is_array($fids)) $fids = (array)$fids;
- foreach ($fids as $value) {
- $perm_inherit = perm_check::getPerm1($value);
- parent::update($value,array('perm_inherit' => $perm_inherit));
- }
- }
-
- public function insert($data, $appid = 0)
- {
- if (empty($data)) {
- return false;
- }
- if ($path['fid'] = parent::insert($data, 1)) {
- $perm_inherit = perm_check::getPerm1($path['fid']);
- parent::update($path['fid'], array('perm_inherit' => $perm_inherit));
- if ($data['pfid']) {
- if (!$pdata = C::t('resources_path')->fetch_pathby_pfid($data['pfid'], true)) {
- //根据fid生成path和pathkey
- $pdata = self::create_pathinfo_by_fid($data['pfid'], $appid);
- }
- if (!$pdata) {
- return array('error' => lang('failure_newfolder'));
- }
- $path['path'] = $pdata['path'] . $data['fname'] . "/";
- $path['pathkey'] = ($pdata['pathkey']) ? $pdata['pathkey'] . '-_' . $path['fid'] . '_' : '_' . $path['fid'] . '_';
- } else {
- if ($appid) {
- $path['path'] = "dzz:app_" . $appid . ":" . $data['fname'] . "/";
- } else {
- $path['path'] = ($data['gid']) ? "dzz:gid_" . $data['gid'] . ":" . $data['fname'] . "/" : "dzz:uid_" . $data['uid'] . ":" . $data['fname'] . "/";
- }
- $path['pathkey'] = '_' . $path['fid'] . '_';
- }
- C::t('resources_path')->insert($path);
- self::check_sub_by_flag($path['fid'],$data['flag']);
- return $path['fid'];
- }
- return false;
- }
- public function check_sub_by_flag($pfid,$flag){//检查这个目录是否含有子目录,有就创建
- $subids=C::t('folder_sub')->fetch_all_by_flag($flag);
- foreach($subids as $value){
- $params=array(
- 'flag'=>$value['flag'],
- 'fsperm'=>$value['fsperm'],
- 'allow_exts'=>$value['allow_exts'],
- 'iconview'=>$value['iconview'],
- 'disp'=>$value['disp']
- );
- IO::CreateFolder($pfid, $value['fname'], $value['perm'], $params,'newcopy',true);
- }
- return true;
- }
- public function get_folder_pathinfo_by_fid($fid, $folderarr = array(), $i = 0)
- {
- if (!$folderinfo = parent::fetch($fid)) return;
-
- array_unshift($folderarr, array('fname' => $folderinfo['fname'], 'fid' => $folderinfo['fid'], 'gid' => $folderinfo['gid'], 'uid' => $folderinfo['uid']));
-
- if ($folderinfo['pfid'] > 0 && $i < 100) {
- $i++;
- $folderarr = self::get_folder_pathinfo_by_fid($folderinfo['pfid'], $folderarr, $i);
- }
- return $folderarr;
- }
-
- //根据fid生成path和pathkey
- public function create_pathinfo_by_fid($fid, $appid = 0)
- {
- $patharr = array();
- if (!$pathdata = self::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;
- }
-
- public function check_home_by_uid($uid = '')
- {
- global $_G;
- if (!$uid) $uid = $_G['uid'];
- else $uid = intval($uid);
- return DB::fetch_first("select f.*,p.path from %t f left join %t p on f.fid = p.fid where f.uid = %d and f.flag = %s", array($this->_table, 'resources_path', $uid, 'home'));
-
- }
-
- //查询个人文档目录以及路径
- public function fetch_home_by_uid($uid = '')
- {
- global $_G;
- if (!$uid) $uid = $_G['uid'];
- else $uid = intval($uid);
- if ($return = DB::fetch_first("select f.*,p.path from %t f left join %t p on f.fid = p.fid where f.uid = %d and f.flag = %s", array($this->_table, 'resources_path', $uid, 'home'))) {
- return $return;
- } else {
- $root = array(
- 'pfid' => 0,
- 'uid' => $uid,
- 'username' => $_G['username'],
- 'perm' => 0,
- 'fname' => lang('explorer_user_root_dirname'),
- 'flag' => 'home',
- 'innav' => 1,
- 'fsperm' => perm_FolderSPerm::flagPower('home')
- );
- if ($rootfid = DB::result_first("select fid from " . DB::table('folder') . " where uid='{$uid}' and flag='home' ")) {
- C::t('folder')->update($rootfid, array('fname' => $root['fname'], 'isdelete' => 0, 'pfid' => 0, 'fsperm' => $root['fsperm'], 'perm' => $root['perm']));
- } else {
- $rootfid = C::t('folder')->insert($root);
- C::t('folder')->update_perm_inherit_by_fid($rootfid);
- }
- $root['fid'] = $rootfid;
- $root['path'] = C::t('resources_path')->fetch_pathby_pfid($rootfid);
- return $root;
- }
- }
-
- //依文件名查询顶级目录
- public function fetch_topby_fname($fname)
- {
- $fid = DB::result_first("select fid from %t where fname = %s and pfid = 0", array($this->_table, $fname));
- return self::fetch_by_fid($fid);
- }
-
- //返回一条数据及附件表数据
- public function fetch_by_fid($fid, $gid = '')
- {
- global $_G;
- $fid = intval($fid);
- if (!$data = self::fetch($fid)) array('error' => lang('file_not_exist'));
- //获取目录的附加信息
- if($attr=C::t('folder_attr')->fetch_all_by_fid($fid)){
- $data=array_merge($data,$attr);
- }
- $data['title'] = $data['fname'];
- //统计文件数
- if ($data['gid'] > 0) {//如果是群组
- //文件数
- $data['iconum'] = DB::result_first("select COUNT(*) from " . DB::table('resources') . " where pfid='{$fid}' and gid='{$gid}' and isdelete<1");
- //文件夹数
- $data['foldernum'] = DB::result_first("select COUNT(*) from " . DB::table('resources') . " where pfid='{$fid}' and gid='{$gid}' and type='folder' and isdelete<1");
- } else {
- //文件数
- $data['iconum'] = DB::result_first("select COUNT(*) from " . DB::table('resources') . " where pfid='{$fid}' and isdelete < 1");
- //文件夹数
- $data['foldernum'] = DB::result_first("select COUNT(*) from " . DB::table('resources') . " where pfid='{$fid}' and type='folder' and isdelete < 1");
- }
- $data['perm'] = perm_check::getPerm($fid);
- $data['perm1'] = $data['perm_inherit'];
- if ($data['gid'] > 0) {
- $data['isadmin'] = $data['ismoderator'] = C::t('organization_admin')->is_admin_by_orgid($data['gid'], $_G['uid']);
- $permtitle = perm_binPerm::getGroupTitleByPower($data['perm1']);
- if (file_exists('dzz/images/default/system/folder-' . $permtitle['flag'] . '.png')) {
- $data['icon'] = './dzz/images/default/system/folder-' . $permtitle['flag'] . '.png';
- } else {
- $data['icon'] = './dzz/images/default/system/folder-read.png';
- }
- }
- $data['realpath'] = C::t('resources_path')->fetch_pathby_pfid($fid);
- $data['relativepath'] = preg_replace('/dzz:(.+?):/', '', $data['realpath']);
- $data['path'] = $data['fid'];
- $data['oid'] = $data['fid'];
- $data['bz'] = '';
- Hook::listen('filter_folder_fid', $data);//数据过滤挂载点
- return $data;
- }
-
- //过滤文件名称
- public function name_filter($name)
- {
- return str_replace(array('/', '\\', ':', '*', '?', '<', '>', '|', '"', "\n"), '', $name);
- }
-
- public function getFolderName($name, $pfid, $fid)
- {
- static $i = 0;
- $name = self::name_filter($name);
- //echo("select COUNT(*) from ".DB::table('folder')." where fname='{$name}' and pfid='{$pfid}'");
- if (DB::result_first("select COUNT(*) from %t where fname=%s and pfid=%d and fid != %d and isdelete<1", array('folder', $name, $pfid, $fid))) {
- $name = preg_replace("/\(\d+\)/i", '', $name) . '(' . ($i + 1) . ')';
- $i += 1;
- return self::getFolderName($name, $pfid, $fid);
- } else {
- return $name;
- }
- }
-
- //更改文件夹名称
- public function rename_by_fid($fid, $name)
- {
- if (!$folder = parent::fetch($fid)) return false;
- //如果文件夹有对应的rid
- if ($rid = C::t('resources')->fetch_rid_by_fid($fid)) {
- $return = C::t('resources')->rename_by_rid($rid);
- if ($return['error']) {
- return false;
- } else {
- return true;
- }
- } else {
- $name = self::getFolderName($name, $folder['pfid'], $fid);
- //更改路径表数据
- if (C::t('resources_path')->update_path_by_fid($fid, $name)) {
- //增加统计数
- $statisdata = array(
- 'uid' => getglobal('uid'),
- 'edits' => 1,
- 'editdateline' => TIMESTAMP
- );
- C::t('resources_statis')->add_statis_by_fid($fid, $statisdata);
- //更改folder数据
- return parent::update($fid, array('fname' => $name));
- } else {
- return false;
- }
- }
-
- }
-
- //查询组织id
- public function fetch_gid_by_fid($fid, $i = 0)
- {
-
- if (!$folder = parent::fetch($fid)) return 0;
- if ($folder['flag'] == 'organization') return $folder['gid'];
- elseif ($folder['pfid'] > 0) {
- $i++;
- if ($i > 100) {
- return $folder['gid'];
- }
- return self::fetch_gid_by_fid($folder['pfid'], $i);
- }
- }
-
- //查询路径
- public function fetch_path_by_fid($fid, $fids = array())
- {
- if (!$folder = parent::fetch($fid)) return;
- $fids[] = $folder['fid'];
- if ($folder['pfid'] > 0) {
- $fids = self::fetch_path_by_fid($folder['pfid'], $fids);
- }
- return $fids;
- }
-
- /*
- 此函数不会删除 $fid对应的 rid数据,正常调用是作为C::t('resources')->deletesourcedata()的内部调用;
- 如果单独调用,请注意这个fid应该没有对应的rid;
- 我的网盘 应用主目录 群组和部门主目录 都是没有对应的rid的特殊目录;
- */
- public function delete_by_fid($fid, $force = false)
- { //清空目录
- $folder = self::fetch($fid);
- //默认只允许删除文件夹和群组根目录,暂时不允许删除应用根目录
- if (!$force && $folder['flag'] =='app') {
- return false;
- }
- //判断删除权限
- /* if (!perm_check::checkperm_container($fid, 'delete')) {
- return array('error' => lang('no_privilege'));
- }*/
- $rids = array();
- $isdelrids = array();
- $nodelrids = array();
- //获取当前文件夹包含的删除状态数据,及非删除状态数据
- foreach (DB::fetch_all("select rid,oid,isdelete from %t where pfid = %d", array('resources', $fid, $fid)) as $v) {
- if ($v['isdelete'] > 0) {
- $isdelrids[] = $v['rid'];
- } else {
- $nodelrids[] = $v['rid'];
- }
- $rids[] = $v['rid'];
- }
- $delrids = array();
- if (!$force) {//如果非强制彻底删除,只删除删除状态项
- $delrids = $isdelrids;
- } else {//如果是强制删除,删除所有文件,包括非删除状态和删除状态文件
- $delrids = $rids;
- //获取当前目录中在回收站中的数据
- foreach (DB::fetch_all("select rid from %t where pfid = %d", array('resources_recyle', $fid)) as $v) {
- $delrids[] = $v['rid'];
- }
- }
- //执行删除
- foreach ($delrids as $value) {
- C::t('resources')->delete_by_rid($value, $force);
- }
- //如果当前目录是非删除状态或者下级有不能彻底删除文件(未删除文件),则跳过当前目录删除,只清空回收站表数据
- if (!$force && count($nodelrids) > 0) {
- return 2;
- }
- return self::delete($fid);
- }
-
- //删除目录
- public function delete($fid)
- {
- //删除路径表数据
- C::t('resources_path')->delete_by_fid($fid);
- //删除文件夹属性表数据
- C::t('folder_attr')->delete_by_fid($fid);
- //删除文件夹动态(只限于文件夹)
- C::t('resources_event')->delete_by_pfid_and_notrid($fid);
- return parent::delete($fid);
- }
-
- public function fetch_all_default_by_uid($uid)
- {
- return DB::fetch_all("SELECT * FROM %t WHERE `default`!= '' and uid=%d ", array($this->_table, $uid), 'fid');
- }
-
- public function fetch_typefid_by_uid($uid)
- {
- $data = array();
- foreach (DB::fetch_all("SELECT * FROM %t WHERE `flag`!= 'folder' and uid='{$uid}' and gid<1 ", array($this->_table), 'fid') as $value) {
- $data[$value['flag']] = $value['fid'];
- }
- return $data;
- }
-
- public function fetch_all_by_pfid($pfid, $count)
- {
- global $_G;
- $wheresql = 'pfid = %d and isdelete<1';
- if ($folder = C::t('folder')->fetch_by_fid($pfid)) {
- $where1 = array();
- if (!$this->noperm && $folder['gid'] > 0) {
- $folder['perm'] = perm_check::getPerm($folder['fid']);
-
- if ($folder['perm'] > 0) {
- if (perm_binPerm::havePower('read1', $folder['perm'])) {
- $where1[] = "uid ='{$_G[uid]}'";
- }
- if (perm_binPerm::havePower('read2', $folder['perm'])) {
- $where1[] = "uid!='{$_G[uid]}'";
- }
- }
- if ($where1) $wheresql .= " and (" . implode(' OR ', $where1) . ")";
- else $wheresql .= " and 0";
- }
- }
- if ($count) return DB::result_first("SELECT COUNT(*) FROM %t WHERE $wheresql", array($this->_table, $pfid));
- else return DB::fetch_all("SELECT * FROM %t WHERE $wheresql", array($this->_table, $pfid), 'fid');
- }
-
- public function fetch_folderinfo_by_gid($gid)
- {//查询群组目录及文件基本信息
- $gid = intval($gid);
- if ($info = DB::fetch_first("select f.*,p.path from %t f left join %t p on f.fid = p.fid where gid = %d and flag = %s", array($this->_table, 'resources_path', $gid, 'organization'))) {
- return $info;
- }
- return false;
- }
-
- public function fetch_fid_by_flag($flag)
- {
- $uid = getglobal('uid');
- return DB::result_first("select fid from %t where uid = %d and flag = %s", array($this->_table, $uid, $flag));
- }
-
- public function fetch_fid_by_flags($flags)
- {
- if (!is_array($flags)) $flags = (array)$flags;
- $fids = array();
- foreach (DB::fetch_all("select fid from %t where flag in(%n)", array($this->_table, $flags)) as $v) {
- $fids[] = $v['fid'];
- }
- return $fids;
- }
-
- public function fetch_folderinfo_by_fid($fid)
- {//查询群组目录及文件基本信息
- $fid = intval($fid);
- if (!$folderinfo = self::fetch($fid)) {
- return false;
- }
- $pathinfo = C::t('resources_path')->fetch_pathby_pfid($fid, true);
- $info = array_merge($folderinfo, $pathinfo);
- return $info;
-
- }
-
- //获取文件夹权限
- public function fetch_perm_by_fid($fid)
- {
- $perms = DB::fetch_first("select perm,perm_inherit from %t where fid = %d", array($this->_table, $fid));
- if ($perms['perm']) {
- return $perms['perm'];
- } else {
- return $perms['perm_inherit'];
- }
- }
-
- public function fetch_folder_by_pfid($pfid, $field = array())
- {//查询群组目录及文件夹基本信息
- global $_G;
- $fielddata = '*';
- if (!empty($field)) {
- $fielddata = implode(',', $field);
- }
- $pfid = intval($pfid);
- $infoarr = array();
- if ($folder = C::t('folder')->fetch($pfid)) {
- $where1 = array();
- if (!$this->noperm && $folder['gid'] > 0) {
- if (perm_check::checkperm_Container($folder['fid'], 'read2')) {
- $where1[] = "1";
- } elseif (perm_check::checkperm_Container($folder['fid'], 'read1')) {
- $where1[] = "uid='{$_G[uid]}'";
- }
- $where1 = array_filter($where1);
- if (!empty($where1)) $temp[] = "(" . implode(' OR ', $where1) . ")";
- else $temp[] = "0";
- } else {
- $temp[] = " uid='{$_G[uid]}'";
- }
- $where[] = '(' . implode(' and ', $temp) . ')';
- unset($temp);
- }
- $wheresql = "where pfid = %d and flag != %s and ";
- if ($where) $wheresql .= implode(' AND ', $where);
- else return false;
- $infoarr = DB::fetch_all("select $fielddata from %t $wheresql and isdelete < 1 order by
- convert(fname,UNSIGNED)" .
- ",SUBSTRING_INDEX(fname,'-',1)" .
- ",convert(replace(replace(SUBSTRING_INDEX(fname,'-',2),SUBSTRING_INDEX(fname,'-',1),''),'-','') , UNSIGNED) " .
- ",convert(replace(replace(SUBSTRING_INDEX(fname,'-',3),SUBSTRING_INDEX(fname,'-',2),''),'-','') , UNSIGNED) ", array($this->_table, $pfid, 'organization'));
- return $infoarr;
- }
-
- //查询子文件夹fid
- public function fetch_fid_by_pfid($pfid)
- {
- global $_G;
- $pfid = intval($pfid);
- $infoarr = array();
- if ($folder = C::t('folder')->fetch($pfid)) {
- $where1 = array();
- if (!$this->noperm && $folder['gid'] > 0) {
- $folder['perm'] = perm_check::getPerm($folder['fid']);
-
- if ($folder['perm'] > 0) {
- if (perm_binPerm::havePower('read2', $folder['perm'])) {
- $where1[] = "1";
- } elseif (perm_binPerm::havePower('read1', $folder['perm'])) {
- $where1[] = "uid='{$_G[uid]}'";
- }
- }
- $where1 = array_filter($where1);
- if (!empty($where1)) $temp[] = "(" . implode(' OR ', $where1) . ")";
- else $temp[] = "0";
- } else {
- $temp[] = " uid='{$_G[uid]}'";
- }
- $where[] = '(' . implode(' and ', $temp) . ')';
- unset($temp);
- }
- $wheresql = "where pfid = %d and ";
- if ($where) $wheresql .= implode(' AND ', $where);
- else return false;
- $infoarr = DB::fetch_all("select fid from %t $wheresql", array($this->_table, $pfid));
-
- return $infoarr;
- }
-
- /* //查询所有有权限文件夹
- public function fetch_all_fid()
- {
- global $_G;
- $uid = $_G['uid'];
- $fids = array();
- //个人根目录
- $personfid = DB::result_first("select fid from %t where uid = %d and flag = %s", array($this->_table, $uid, 'home'));
- $fids[] = $personfid;
- foreach ($this->fetch_all_folderfid_by_pfid($personfid) as $v) {
- $fids[] = $v;
- }
- //群组部门顶级目录
- $orgs = C::t('organization')->fetch_all_orgid();
- $orgids = $orgs['orgids'];
- $fidarr = DB::fetch_all("select fid from %t where orgid in(%n)", array('organization', $orgids));
-
- //群组目录及下级所有目录fid
- foreach ($fidarr as $v) {
- $fids[] = $v['fid'];
- foreach ($this->fetch_all_folderfid_by_pfid($v['fid']) as $val) {
- $fids[] = $val;
- }
- }
- return $fids;
-
- }*/
-
-
- //查询目录下所有文件夹的fid
- public function fetch_all_folderfid_by_pfid($pfid)
- {
- static $fids = array();
- foreach ($this->fetch_fid_by_pfid($pfid) as $v) {
- $fids[] = $v['fid'];
- $this->fetch_fid_by_pfid($v['fid']);
- }
- return $fids;
- }
-
- //获取目录的所有上级目录
- public function fetch_all_parent_by_fid($fid, $ret = array())
- {
- if (!$folder = parent::fetch($fid)) {
- return $ret;
- }
- $ret[] = $folder;
- if ($folder['pfid'] > 0) {
- $ret = self::fetch_all_parent_by_fid($folder['pfid'], $ret);
- }
- return $ret;
- }
-
-}
\ No newline at end of file
diff --git a/core/class/table/table_folder_attr.php b/core/class/table/table_folder_attr.php
deleted file mode 100644
index ae425c5..0000000
--- a/core/class/table/table_folder_attr.php
+++ /dev/null
@@ -1,129 +0,0 @@
-_table = 'folder_attr';
- $this->_pk = 'id';
- $this->_pre_cache_key = 'folder_attr_';
- $this->_cache_ttl = 60*60;
- //$this->noperm = (getglobal('appGreenChannel'))?getglobal('appGreenChannel'):false;
- parent::__construct();
- }
- public function delete_by_id($id){
- if(!$data=parent::fetch($id)) return false;
- if($ret=parent::delete($id)){
- if($data['skey']=='icon' && $data['svalue']>0){
- C::t('attachment')->delete_by_aid($data['svalue']);
- }
- }
- return $ret;
- }
- public function update($id,$setarr){
- if(!$data=parent::fetch($id)) return false;
- if($ret=parent::update($id,$setarr)){
- if($setarr['skey']=='icon'){
- if($data['svalue']) C::t('attachment')->delete_by_aid($data['svalue']);
- if($setarr['svalue']) C::t('attachment')->addcopy_by_aid($setarr['svalue']);
- }
- }
- return $ret;
- }
- public function insert($setarr){
- if($id=DB::result_first("select id from %t where fid=%d and skey=%s",array($this->_table,$setarr['fid'],$setarr['skey']))){
- if($setarr['skey']=='icon'){
- $o=parent::fetch($id);
- }
- $ret=parent::update($id,$setarr);
- }else{
- $id=parent::insert($setarr,1);
- }
- //处理图标
- if($id && $setarr['skey']=='icon'){
- if($o['svalue']) C::t('attachment')->delete_by_aid($o['svalue']);
- if($setarr['svalue']) C::t('attachment')->addcopy_by_aid($setarr['svalue']);
- }
- return $id;
- }
- public function insert_data_by_fid($fid,$skeyarr){//插入文件夹设置值
- foreach($skeyarr as $key=>$value){
- $setarr=array(
- 'fid'=>$fid,
- 'skey'=>$key,
- 'svalue'=>$value
- );
- self::insert($setarr);
- }
- return true;
- }
- public function update_by_fid($fid,$skeyarr){//更新文件设置
- foreach($skeyarr as $key=>$value){
- $setarr=array(
- 'fid'=>$fid,
- 'skey'=>$key,
- 'svalue'=>$value,
- );
- self::insert($setarr);
- }
- return true;
- }
- public function update_by_skey_fid($fid,$skey,$val){
- $setarr=array(
- 'fid'=>$fid,
- 'skey'=>$skey,
- 'svalue'=>$val,
- );
- return self::insert($searr);
-
- }
- public function insert_by_skey_fid($fid,$skey,$val){
- $setarr = array(
- 'fid'=>$fid,
- 'skey'=>$skey,
- 'svalue'=>$val
- );
- return self::insert($setarr);
- }
- public function fetch_by_skey_fid($fid,$skey){ //获取文件夹某项设置值
- return DB::result_first("select svalue from %t where fid=%d and skey=%s",array($this->_table,$fid,$skey));
- }
- public function delete_by_field_fid($fid,$skeys){ //删除文件夹某项设置值
- $skeys=(array)$skeys;
- $i=0;
- foreach(DB::fetch_all("select id from %t where fid=%d and skeys IN (%n)",array($this->_table,$fid,$skeys)) as $value){
- if(self::delete_by_id($value['id'])) $i++;
- }
- return $i;
- }
- public function delete_by_fid($fid){ //删除设置
- $fid=(array)$fid;
- $i=0;
- foreach(DB::fetch_all("select id from %t where fid=%d",array($this->_table,$fid)) as $value){
- if(self::delete_by_id($value['id'])) $i++;
- }
- return $i;
- }
- //获取当前文件夹所有附属信息
- public function fetch_all_folder_setting_by_fid($fid){
- $settings = array();
- foreach(DB::fetch_all("select * from %t where fid = %d",array($this->_table,$fid)) as $v){
- $settings[$v['skey']] = $v['svalue'];
- }
- return $settings;
- }
- //获取当前文件夹所有附属信息
- public function fetch_all_by_fid($fid){
- $settings = array();
- foreach(DB::fetch_all("select * from %t where fid = %d",array($this->_table,$fid)) as $v){
- if($v['skey']=='icon'){
- $v['svalue']=C::t('attachment')->getThumbByAid($value['svalue']);
- }
- $settings[$v['skey']] = $v['svalue'];
- }
- return $settings;
- }
-}
\ No newline at end of file
diff --git a/core/class/table/table_folder_default.php b/core/class/table/table_folder_default.php
deleted file mode 100644
index d6e6dd0..0000000
--- a/core/class/table/table_folder_default.php
+++ /dev/null
@@ -1,39 +0,0 @@
-_table = 'folder_default';
- $this->_pk = 'fid';
- $this->_pre_cache_key = 'folder_default_';
- $this->_cache_ttl = 0;
- parent::__construct();
- }
- public function fetch_all(){
- if(($data=$this->fetch_cache('all'))===false){
- $data=DB::fetch_all("SELECT * FROM %t WHERE 1 ORDER BY display", array($this->_table));
- }
- return $data;
- }
- public function fetch_all_by_default(){
- if(($data=$this->fetch_cache('all'))===false){
- $data=DB::fetch_all("SELECT * FROM %t WHERE `default`!='' ORDER BY display DESC", array($this->_table));
- }
- return $data;
- }
-
-}
-
-?>
diff --git a/core/class/table/table_folder_flag.php b/core/class/table/table_folder_flag.php
deleted file mode 100644
index b990742..0000000
--- a/core/class/table/table_folder_flag.php
+++ /dev/null
@@ -1,32 +0,0 @@
-_table = 'folder_flag';
- $this->_pk = 'flag';
- $this->_pre_cache_key = 'folder_flag_';
- $this->_cache_ttl = 60*60;
- parent::__construct();
- }
- public function insert_by_flag($setarr){
- if(!$flag=$setarr['flag']) return false;
-
- if(parent::fetch($flag)){
- unset($setarr['flag']);
- if($ret=parent::update($flag,$setarr)){
- unset($setarr['system']);
- foreach(DB::fetch_all("select fid from %t where flag=%s",array('folder',$flag)) as $value){
- C::t('folder')->update($value['fid'],$setarr);
- }
- }
- return $ret;
- }else{
- return parent::insert($setarr,1);
- }
- }
-}
\ No newline at end of file
diff --git a/core/class/table/table_folder_flag_formlist.php b/core/class/table/table_folder_flag_formlist.php
deleted file mode 100644
index 678dd34..0000000
--- a/core/class/table/table_folder_flag_formlist.php
+++ /dev/null
@@ -1,48 +0,0 @@
-_table = 'folder_flag_formlist';
- $this->_pk = 'flag';
- $this->_pre_cache_key = 'folder_flag_formlist_';
- $this->_cache_ttl = 60*60;
- parent::__construct();
- }
- public function insert_by_flag($setarr){
- if(!$flag=$setarr['flag']) return false;
- if(parent::fetch($flag)){
- unset($setarr['flag']);
- parent::update($flag,$setarr);
- }else{
- return parent::insert($setarr,1);
- }
- }
- public function fetch_by_flag($flag,$system=0){
- if(!$data=parent::fetch($flag)){
- $data['formlist']='name,fsize,ftype,fdateline';
- }
- $flags=explode(',',$data['formlist']);
- $temp=array();
- foreach(C::t('form_setting')->fetch_all($flags) as $value){
- if($system){
- if($system==1){
- if($value['system']) $temp[$value['flag']]=$value;
- }elseif($system==2){
- if(!$value['system']) $temp[$value['flag']]=$value;
- }
- }else{
- $temp[$value['flag']]=$value;
- }
- }
- //排序
- foreach($flags as $v){
- $ret[$v]=$temp[$v];
- }
- return $ret;
- }
-}
\ No newline at end of file
diff --git a/core/class/table/table_folder_sub.php b/core/class/table/table_folder_sub.php
deleted file mode 100644
index a55ba1f..0000000
--- a/core/class/table/table_folder_sub.php
+++ /dev/null
@@ -1,52 +0,0 @@
-_table = 'folder_sub';
- $this->_pk = 'subid';
- $this->_pre_cache_key = 'folder_sub_';
- $this->_cache_ttl = 60*60;
- parent::__construct();
- }
- //获取默认子目录信息
- public function fetch_all_by_flag($flag){
- return DB::fetch_all("select * from %t where pflag=%s",array($this->_table,$flag));
- }
- public function insert_by_subid($setarr){
- if(!$flag=$setarr['flag']) return false;
- if(self::check_flag($setarr['flag'])) return false;
- if(empty($setarr['fname'])) return false;
- return parent::insert($setarr,1);
-
- }
- public function update($subid,$setarr){
- if($ret=parent::update($subid,$setarr)){
- $flag=$setarr['flag'];
- $allow_exts=isset($setarr['allow_exts'])?$setarr['allow_exts']:null;
- unset($setarr['pflag']);
- unset($setarr['flag']);
- unset($setarr['allow_exts']);
- foreach(DB::fetch_all("select fid from %t where flag=%s",array('folder',$flag)) as $value){
- C::t('folder')->update($value['fid'],$setarr);
- if(isset($allow_exts)){
- $arr=array(
- 'fid'=>$value['fid'],
- 'skey'=>'allow_exts',
- 'svalue'=>$allow_exts
- );
- C::t('folder_attr')->insert($arr);
- }
- }
- }
- }
- //检查flag不能和主flag同名
- public function check_flag($flag){
- return DB::result_first("select COUNT(*) from %t where flag=%s",array('folder_flag',$flag));
- }
-
-}
\ No newline at end of file
diff --git a/core/class/table/table_form_setting.php b/core/class/table/table_form_setting.php
deleted file mode 100644
index 8770d33..0000000
--- a/core/class/table/table_form_setting.php
+++ /dev/null
@@ -1,131 +0,0 @@
-_table = 'form_setting';
- $this->_pk = 'flag';
- parent::__construct();
- }
-
- public function fetch($flag){
- $data=parent::fetch($flag);
-
- if($data['options']) $data['options']=unserialize($data['options']);
- if($data['extra']) $data['extra']=unserialize($data['extra']);
-
- if($data['extra']['mindate']){
- $data['extra']['mindate'] = dgmdate($data['extra']['mindate'],$data['extra']['dateformat']);
- }
- if($data['extra']['maxdate']){
- $data['extra']['maxdate'] = dgmdate($data['extra']['maxdate'],$data['extra']['dateformat']);
- }
-
- return $data;
- }
- //插入表单数据;
- public function insert_by_flag($flag,$form){
- if(empty($flag)) return false;
- if(!in_array($form['type'],$this->type)) return false;
- if(empty($form['labelname'])) return false;
-
- $setarr['labelname']=getstr($form['labelname'],60);
- $setarr['required']=intval($form['required']);
- $setarr['multiple']=intval($form['multiple']);
- $setarr['type']=$form['type'];
- $setarr['disp']=intval($form['disp']);
- $setarr['system']=intval($form['system']);
- switch($form['type']){
- case 'input':case 'textarea':
- $setarr['length']=intval($form['length']);
- $setarr['regex']=trim($form['regex']);
- $extra=array(
- 'hint'=>getstr($form['hint']),
- );
- $setarr['extra'] = serialize($extra);
- break;
- case 'select':
- $setarr['options']=is_array($form['options'])?serialize($form['options']):'';
- $setarr['multiple']=0;
- break;
- case 'multiselect':
- $setarr['options']=is_array($form['options'])?serialize($form['options']):'';
- break;
- case 'time':
- $setarr['multiple']=0;
- $extra=array(
- 'maxdate'=>$form['maxdate']?strtotime($form['maxdate']):0,
- 'mindate'=>$form['mindate']?strtotime($form['mindate']):0,
- 'dateformat'=>trim($form['dateformat'])
- );
- $setarr['extra'] = serialize($extra);
- break;
-
- case 'user':
-
- break;
-
- }
- if(parent::fetch($flag)){
- parent::update($flag,$setarr);
- $setarr['flag'] = $flag;
- }else{
- $setarr['flag'] = $flag;
- parent::insert($setarr,1);
- }
- $setarr['extra']=unserialize($setarr['extra']);
- if($setarr['extra']['mindate']){
- $setarr['extra']['mindate'] = dgmdate($setarr['extra']['mindate'],$setarr['extra']['dateformat']);
- }
- if($setarr['extra']['maxdate']){
- $setarr['extra']['maxdate'] = dgmdate($setarr['extra']['maxdate'],$setarr['extra']['dateformat']);
- }
- $setarr['options']=unserialize($setarr['options']);
- return $setarr;
- }
-
- /*获取所有表单项*/
- public function fetch_all($flags=array()){
- $data=array();
- $sql = 1;
- $param = array($this->_table);
- if($flags){
- $sql.=" and flag in (%n)";
- $param[] = $flags;
- }
- foreach(DB::fetch_all("select * from %t where $sql order by disp",$param) as $value){
- if($value['extra']){
- $value['extra']=unserialize($value['extra']);
- if($value['extra']['mindate']){
- $value['extra']['mindate'] = dgmdate($value['extra']['mindate'],$value['extra']['dateformat']);
- }
- if($value['extra']['maxdate']){
- $value['extra']['maxdate'] = dgmdate($value['extra']['maxdate'],$value['extra']['dateformat']);
- }
-
- }
- if($value['options']){
- $value['options']=unserialize($value['options']);
- }
- $data[]=$value;
- }
- return $data;
- }
- public function delete_by_flag($flag){
- return parent::delete($flag);
- }
-
-}
\ No newline at end of file
diff --git a/core/class/table/table_hooks.php b/core/class/table/table_hooks.php
deleted file mode 100644
index 47b9416..0000000
--- a/core/class/table/table_hooks.php
+++ /dev/null
@@ -1,86 +0,0 @@
-_table = 'hooks';
- $this->_pk = 'id';
- $this->_pre_cache_key = 'hooks_';
- $this->_cache_ttl =0;
- parent::__construct();
- }
-
- public function update_by_appid($appid,$setarr){
- if(empty($appid)) return false;
- $appid=(array)$appid;
- $ids=array();
- foreach(DB::fetch_all("select id from %t where app_market_id IN(%n)",array('hooks',$appid)) as $value){
- $ids[]=$value['id'];
- }
- if($ret=parent::update($ids,$setarr)){
- self::clear_cache_tags();
- }
- return $ret;
- }
- public function delete_by_appid($appid){
- if(empty($appid)) return false;
- $appid=(array)$appid;
- $ids=array();
- foreach(DB::fetch_all("select id from %t where app_market_id IN(%n)",array('hooks',$appid)) as $value){
- $ids[]=$value['id'];
- }
- if($ret=parent::delete($ids)){
- self::clear_cache_tags();
- }
- return $ret;
- }
- public function insert_by_appid($appid,$hooks,$attributes=array()){
- if(!$appid) return false;
- $ret=0;
- foreach($hooks as $name =>$addons){
- $priority=0;
- $description="";
- if( $attributes ){//xml导入时附带其他属性,如优先级,描述等信息
- if(isset($attributes[$name]["_attributes"]) ) {
- $priority = isset($attributes[$name]["_attributes"]["priority"])?$attributes[$name]["_attributes"]["priority"]:$priority;
- $description = isset($attributes[$name]["_attributes"]["description"])?$attributes[$name]["_attributes"]["description"]:$description;
- }
- }
-
- if($hid=DB::result_first("select id from %t where name=%s and addons=%s",array($this->_table,$name,$addons))){
- if(parent::update($hid,array('app_market_id'=>$appid,'priority'=>$priority,'description'=>$description,'status'=>0))){
- $ret+=1;
- }
- }else{
- $data=array(
- 'app_market_id'=>$appid,
- 'name'=>$name,
- 'priority'=>$priority,
- 'description'=>$description,
- 'type'=>'1',
- 'addons'=>$addons,
- 'status'=>0
- );
- if(parent::insert($data,1,1)){
- $ret+=1;
- }
- }
- }
- if($ret) self::clear_cache_tags();
- return $ret;
- }
- public function clear_cache_tags(){
- @unlink(DZZ_ROOT.'./data/cache/tags.php');
- }
-}
-?>
diff --git a/core/class/table/table_icon.php b/core/class/table/table_icon.php
deleted file mode 100644
index c1807e0..0000000
--- a/core/class/table/table_icon.php
+++ /dev/null
@@ -1,64 +0,0 @@
-_table = 'icon';
- $this->_pk = 'did';
- $this->_pre_cache_key = 'icon_';
- $this->_cache_ttl = 60*60;
- parent::__construct();
- }
- public function delete_by_did($did){
- global $_G;
- $icon=self::fetch($did);
- @unlink($_G['setting']['attachdir'].$icon['pic']);
- return self::delete($did);
- }
- public function update_copys_by_did($did,$ceof=1){
- global $_G;
- if($icon=self::fetch($did)){
- if($icon['check']<2 && ($icon['copys']+$ceof)<1 && $icon['check']<1){
- @unlink($_G['setting']['attachdir'].$icon['pic']);
- C::t('icon')->delete($did);
- }else{
- C::t('icon')->update($did,array('copys'=>$icon['copys']+$ceof));
- }
- }
- }
- public function fetch_by_link($link){//根据连接判断icon
-
- $data = array();
- $parse_url=parse_url($link);
- $host=$parse_url['host'];
- $host=preg_replace("/^www./",'',$host);//strstr('.',$host);
- if($_SERVER['HTTP_HOST']==$host || $_SERVER['HTTP_HOST']=='www.'.$host) $host='localhost';
- foreach(DB::fetch_all("select * from %t where domain=%s order by disp DESC,dateline DESC",array($this->_table,$host)) as $value){
- if($value['reg']){
- if(preg_match("/^\/.+?\/\w+$/i",$value['reg']) && preg_match($value['reg'],$link)){
- return $value;
- }elseif(strpos($link,$value['reg'])!==false){
- return $value;
- }
- }else{
- $data[]=$value;
- }
- }
- return $data?$data[0]:array();
- }
-
-
-}
-
-?>
diff --git a/core/class/table/table_iconview.php b/core/class/table/table_iconview.php
deleted file mode 100644
index 9a5ceaa..0000000
--- a/core/class/table/table_iconview.php
+++ /dev/null
@@ -1,28 +0,0 @@
-_table = 'iconview';
- $this->_pk = 'id';
- /*$this->_pre_cache_key = 'iconview_';
- $this->_cache_ttl = 0;*/
- parent::__construct();
- }
- public function fetch_all(){
- return DB::fetch_all("select * from %t where 1",array($this->_table),'id');
- }
-}
-
-?>
diff --git a/core/class/table/table_imagetype.php b/core/class/table/table_imagetype.php
deleted file mode 100644
index e33c818..0000000
--- a/core/class/table/table_imagetype.php
+++ /dev/null
@@ -1,33 +0,0 @@
-_table = 'imagetype';
- $this->_pk = 'typeid';
-
- parent::__construct();
- }
-
- public function fetch_all_by_type($type, $available = null) {
- $available = $available !== null ? ($available ? ' AND available=1' : ' AND available=0') : '';
- return DB::fetch_all("SELECT * FROM %t WHERE type=%s %i ORDER BY displayorder", array($this->_table, $type, $available));
- }
-
- public function fetch_all_available() {
- return DB::fetch_all("SELECT * FROM %t WHERE available=1", array($this->_table));
- }
-
- public function count_by_name($type, $name) {
- return DB::result_first("SELECT COUNT(*) FROM %t WHERE type=%s AND name=%s", array($this->_table, $type, $name));
- }
-
-}
-
-?>
\ No newline at end of file
diff --git a/core/class/table/table_local_router.php b/core/class/table/table_local_router.php
deleted file mode 100644
index c3d207c..0000000
--- a/core/class/table/table_local_router.php
+++ /dev/null
@@ -1,102 +0,0 @@
-_table = 'local_router';
- $this->_pk = 'routerid';
- //$this->_pre_cache_key = 'local_router_';
- //$this->_cache_ttl = 0;
- parent::__construct();
- }
- public function fetch_by_routerid($routerid){
- $data=self::fetch($routerid);
- $data['router']=unserialize($data['router']);
- $data['drouter']=self::getRouterDetail($data['router']);
- return $data;
- }
- public function fetch_all_orderby_priority($available=false){
- $data=array();
- $where='1';
- if($available){
- $where.=' and `available`>0';
- }
- foreach(DB::fetch_all("SELECT * FROM %t WHERE $where ORDER BY priority DESC ",array($this->_table)) as $value){
- $value['router']=unserialize($value['router']);
- $value['drouter']=self::getRouterDetail($value['router']);
- $data[$value['routerid']]=$value;
- }
- return $data;
- }
- public function getRouterDetail($router){
- $html='';
- foreach($router as $type =>$value){
-
- switch($type){
- case 'exts':
- if($value) $html.="文件后缀:".implode(',',$value);
- else $html.="文件后缀:不限制";
- break;
- case 'size':
- $sizearr=array();
- if(is_numeric($value['lt'])) $sizearr[]="大于".formatsize($value['lt']*1024*1024);
- if(is_numeric($value['gt'])) $sizearr[]="小于".formatsize($value['gt']*1024*1024);
- if($sizearr) $html.='
文件大小:'.implode(' and ',$sizearr);
- else $html.='
文件大小:不限制';
- break;
- }
- }
-
- return $html;
- }
- public function insert($setarr){
- $setarr['router']=serialize($setarr['router']);
- return parent::insert($setarr,1);
- }
- public function update($routerid,$setarr){
- if($setarr['router']) $setarr['router']=serialize($setarr['router']);
- return parent::update($routerid,$setarr);
- }
- public function delete_by_remoteid($remoteid){
- return DB::delete($this->_table,"remoteid='{$remoteid}'");
- }
- //根据路由规则筛选出存储位置
- public function getRemoteId($data){
- $remoteid=0;
- $guize=self::fetch_all_orderby_priority(true);
- foreach($guize as $value){
- //没有此存储位置
- if(!$ldata = C::t('local_storage')->fetch($value['remoteid'])){
- continue;
- }else{
- $available = DB::result_first("select available from %t where bz = %s", array('connect',$ldata['bz']));
- if($available <1) continue;
- }
- //云停用跳转
- if($available<1) continue;
- if($value['router']['exts']){
- if(!in_array(strtolower($data['filetype']),$value['router']['exts'])) continue;
- }
- if(is_numeric($value['router']['size']['lt']) && $data['filesize']<$value['router']['size']['lt']*1024*1024) continue;
- if(is_numeric($value['router']['size']['gt']) && $data['filesize']>$value['router']['size']['gt']*1024*1024) continue;
- return $value['remoteid'];
- }
-
- return $remoteid;
- }
-}
-
-?>
diff --git a/core/class/table/table_local_storage.php b/core/class/table/table_local_storage.php
deleted file mode 100644
index 76d7d1b..0000000
--- a/core/class/table/table_local_storage.php
+++ /dev/null
@@ -1,119 +0,0 @@
-_table = 'local_storage';
- $this->_pk = 'remoteid';
- /*$this->_pre_cache_key = 'local_storage_';
- $this->_cache_ttl = 300;*/
- parent::__construct();
- }
-
- public function fetch_by_remoteid($remoteid){
- $remoteid=intval($remoteid);
- if(!$data=self::fetch($remoteid)){
- return array();
- }
- if($connect=C::t('connect')->fetch($data['bz'])){
- $data=array_merge($connect,$data);
- }
- if($data['dname'] && $data['did']){
- if($pan=C::t($data['dname'])->fetch($data['did'])) $data=array_merge($pan,$data);
- }
- return $data;
- }
- public function getBzByRemoteid($remoteid){ //通过remoteid获取bz,默认返回dzz
- if(!($data=self::fetch_by_remoteid($remoteid))){
- return 'dzz';
- }
- if($data['type']=='pan') $bz=$data['bz'].':'.$data['id'].':'.$data['root'];
- elseif($data['type']=='storage') $bz=$data['bz'].':'.$data['id'].':'.$data['bucket'];
- elseif($data['type']=='ftp') $bz=$data['bz'].':'.$data['id'].':'.$data['root'];
- elseif($data['type']=='disk') $bz=$data['bz'].':'.$data['id'].':'.$data['root'];
- else $bz='dzz';
- return $bz;
- }
- public function fetch_all_orderby_disp(){
- $data=array();
- foreach(DB::fetch_all("SELECT s.*,c.available FROM %t s LEFT JOIN %t c ON c.bz=s.bz WHERE 1 ORDER BY s.disp ",array($this->_table,'connect')) as $value){
- $data[$value['remoteid']]=$value;
- }
- return $data;
- }
- public function update_usesize_by_remoteid($remoteid,$ceof){
- if(!$remoteid) $remoteid=DB::result_first("select remoteid from %t where bz='dzz' limit 1",array($this->_table));
- $ceof=intval($ceof);
- try{
- if($ceof>0){
- DB::query("update %t set usesize=usesize+%d where remoteid=%d",array($this->_table,$ceof,$remoteid));
- }else{
- DB::query("update %t set usesize=usesize-%d where remoteid=%d",array($this->_table,abs($ceof),$remoteid));
- }
- $this->clear_cache($remoteid);
- }catch(Exception $e){}
- return true;
- }
- public function update_sizecount_by_remoteid($remoteid){
- if($arr=self::getQuota($remoteid)){
- self::update($remoteid,$arr);
- return $arr;
- }
- return false;
- }
-
- public function getQuota($remoteid){
- global $_G;
- $data=self::fetch_by_remoteid($remoteid);
- $return=array();
- if($data['type']=='local'){
- $return['usesize']=C::t('attachment')->getSizeByRemote($remoteid);
- $return['totalsize']=disk_free_space($_G['setting']['attachdir']);
- }elseif($data['type']=='pan'){
- $bz=$data['bz'].':'.$data['id'].':';
- $arr=IO::getQuota($bz);
- $return['usesize']=C::t('attachment')->getSizeByRemote($remoteid);
- if(is_numeric($arr['quota']) && is_numeric($arr['used'])) $return['totalsize']=($arr['quota'])-($arr['used']);
- }elseif($data['type']=='storage'){
- $return['usesize']=C::t('attachment')->getSizeByRemote($remoteid);
- $return['totalsize']=0;
- }elseif($data['type']=='ftp'){
- $bz=$data['bz'].':'.$data['id'].':';
- $return['usesize']=C::t('attachment')->getSizeByRemote($remoteid);
- $return['totalsize']=0;
- }elseif($data['type']=='disk'){
- $bz=$data['bz'].':'.$data['id'].':';
- $return['usesize']=C::t('attachment')->getSizeByRemote($remoteid);
- $return['totalsize']=disk_free_space($data['attachdir']);
- }else{
- $return['usesize']=C::t('attachment')->getSizeByRemote($remoteid);
- $return['totalsize']=0;
- }
- return $return;
- }
- public function delete_by_remoteid($remoteid){
- $data=self::fetch($remoteid);
- if($data['bz']=='dzz') return array('error'=>'内置,不能删除');
- if(C::t('attachment')->getSizeByRemote($remoteid)>0) return array('error'=>'有文件未迁移,不能删除');
- C::t('local_router')->delete_by_remoteid($remoteid);
- if($data['dname'] && $data['did']) C::t($data['dname'])->delete_by_id($data['did']);//删除链接
- return self::delete($remoteid);
- }
- public function getRemoteId(){
- return DB::result_first("select s.remoteid from ".DB::table('local_storage')." s LEFT JOIN ".DB::table('connect')." c ON s.bz=c.bz where c.available>0 order by s.isdefault DESC, s.disp ASC");
- }
-
-}
-
-?>
diff --git a/core/class/table/table_mailcron.php b/core/class/table/table_mailcron.php
deleted file mode 100644
index cb41a54..0000000
--- a/core/class/table/table_mailcron.php
+++ /dev/null
@@ -1,45 +0,0 @@
-_table = 'mailcron';
- $this->_pk = 'cid';
-
- parent::__construct();
- }
-
- public function delete_by_touid($touids) {
- if(empty($touids)) {
- return false;
- }
- return DB::query('DELETE FROM mc, mq USING %t AS mc, %t AS mq WHERE mc.'.DB::field('touid', $touids).' AND mc.cid=mq.cid',
- array($this->_table, 'mailqueue'), false, true);
- }
-
- public function fetch_all_by_email($email, $start, $limit) {
- return DB::fetch_all('SELECT * FROM %t WHERE email=%s '.DB::limit($start, $limit), array($this->_table, $email));
- }
-
- public function fetch_all_by_touid($touid, $start, $limit) {
- return DB::fetch_all('SELECT * FROM %t WHERE touid=%d '.DB::limit($start, $limit), array($this->_table, $touid));
- }
-
- public function fetch_all_by_sendtime($sendtime, $start, $limit) {
- return DB::fetch_all('SELECT * FROM %t WHERE sendtime<=%d ORDER BY sendtime '.DB::limit($start, $limit), array($this->_table, $sendtime));
- }
-}
-
-?>
diff --git a/core/class/table/table_mailqueue.php b/core/class/table/table_mailqueue.php
deleted file mode 100644
index 75f02a1..0000000
--- a/core/class/table/table_mailqueue.php
+++ /dev/null
@@ -1,38 +0,0 @@
-_table = 'mailqueue';
- $this->_pk = 'qid';
-
- parent::__construct();
- }
-
- public function fetch_all_by_cid($cids) {
- if(empty($cids)) {
- return array();
- }
- return DB::fetch_all('SELECT * FROM %t WHERE '.DB::field('cid', $cids), array($this->_table));
- }
-
- public function delete_by_cid($cids) {
- if(empty($cids)) {
- return false;
- }
- return DB::query('DELETE FROM %t WHERE '.DB::field('cid', $cids), array($this->_table));
- }
-}
-
-?>
diff --git a/core/class/table/table_notification.php b/core/class/table/table_notification.php
deleted file mode 100644
index afc4e22..0000000
--- a/core/class/table/table_notification.php
+++ /dev/null
@@ -1,91 +0,0 @@
-_table = 'notification';
- $this->_pk = 'id';
-
- parent::__construct();
- }
-
- public function delete_clear($new, $days) {
- $days = TIMESTAMP - intval($days) * 86400;
- DB::query("DELETE FROM %t WHERE new=%d AND dateline<%d", array($this->_table, $new, $days));
- }
- public function delete_by_type($type, $uid = 0) {
- if(!$type) {
- return;
- }
- $uid = $uid ? ' AND '.DB::field('uid', $uid) : '';
- return DB::query("DELETE FROM %t WHERE type=%s %i", array($this->_table, $type, $uid));
- }
-
- public function optimize() {
- DB::query("OPTIMIZE TABLE %t", array($this->_table), true);
- }
-
- public function fetch_by_fromid_uid($id, $idtype, $uid) {
- return DB::fetch_first("SELECT * FROM %t WHERE from_id=%d AND from_idtype=%s AND uid=%d", array($this->_table, $id, $idtype, $uid));
- }
- public function fetch_by_fromid_uid_type($id, $idtype, $uid,$type) {
- return DB::fetch_first("SELECT * FROM %t WHERE from_id=%d AND from_idtype=%s AND uid=%d AND type=%s", array($this->_table, $id, $idtype, $uid,$type));
- }
-
- public function delete_by_id_uid($id, $uid) {
- DB::query("DELETE FROM %t WHERE id=%d AND uid=%d", array($this->_table, $id, $uid));
- }
-
- public function delete_by_uid($uid) {
- DB::query("DELETE FROM %t WHERE uid IN (%n) OR authorid IN (%n)", array($this->_table, $uid, $uid));
- }
-
- public function fetch_all_by_authorid_fromid($authorid, $fromid, $type) {
- return DB::fetch_all("SELECT * FROM %t WHERE authorid=%d AND from_id=%d AND type=%s", array($this->_table, $authorid, $fromid, $type));
- }
-
- public function ignore($uid, $new = true, $from_num = true) {
- $uid = intval($uid);
- $update = array();
- if($new) {
- $update['new'] = 0;
- }
- if($from_num) {
- $update['from_num'] = 0;
- }
- $where = array('uid' => $uid, 'new' => 1);
-
- if($update) {
- DB::update($this->_table, $update, $where);
- }
- }
-
- public function count_by_uid($uid, $new, $type = '') {
- $new = intval($new);
- $type = $type ? ' AND '.DB::field('type', $type) : '';
-
- $new = $new != '-1' ? ' AND '.DB::field('new', $new) : '';
- return DB::result_first("SELECT COUNT(*) FROM %t WHERE uid=%d %i %i %i", array($this->_table, $uid, $new, $category, $type));
- }
-
- public function fetch_all_by_uid($uid, $new, $type, $start, $perpage) {
- $new = intval($new);
- $type = $type ? ' AND '.DB::field('type', $type) : '';
-
- $new = $new != '-1' ? ' AND '.DB::field('new', $new) : '';
- return DB::fetch_all("SELECT * FROM %t WHERE uid=%d %i %i ORDER BY dateline DESC %i", array($this->_table, $uid, $new, $type, DB::limit($start, $perpage)));
- }
-}
-
-?>
diff --git a/core/class/table/table_onlinetime.php b/core/class/table/table_onlinetime.php
deleted file mode 100644
index 96c6927..0000000
--- a/core/class/table/table_onlinetime.php
+++ /dev/null
@@ -1,37 +0,0 @@
-_table = 'onlinetime';
- $this->_pk = 'uid';
-
- parent::__construct();
- }
-
- public function update_onlinetime($uid, $total, $thismonth, $lastupdate) {
- if(($uid = intval($uid))) {
- DB::query("UPDATE ".DB::table('onlinetime')."
- SET total=total+'$total', thismonth=thismonth+'$thismonth', lastupdate='".$lastupdate."' WHERE ".DB::field($this->_pk, $uid));
- return DB::affected_rows();
- }
- return false;
- }
-
- public function range_by_field($start = 0, $limit = 0, $orderby = '', $sort = '') {
- $orderby = in_array($orderby, array('thismonth', 'total', 'lastupdate'), true) ? $orderby : '';
- return DB::fetch_all('SELECT * FROM '.DB::table($this->_table).($orderby ? ' WHERE '.$orderby.' >0 ORDER BY '.DB::order($orderby, $sort) : '').' '.DB::limit($start, $limit), null, $this->_pk);
- }
-
- public function update_thismonth() {
- return DB::update($this->_table, array('thismonth'=>0));
- }
-
-}
-
-?>
\ No newline at end of file
diff --git a/core/class/table/table_organization.php b/core/class/table/table_organization.php
deleted file mode 100644
index f71a094..0000000
--- a/core/class/table/table_organization.php
+++ /dev/null
@@ -1,1065 +0,0 @@
-_table = 'organization';
- $this->_pk = 'orgid';
- $this->_pre_cache_key = 'organization_';
- // $this->_cache_ttl = 60*60;
-
- parent::__construct();
- }
- /*获取所有下级部门
- $count: >0 仅返回数量
- $type: -1:全部部门或群组;1:仅群组;0;仅机构或部门
- $forgid: 上级orgid,当$forgid=0时,获取所有一级
- */
- public function fetch_all_by_forgid($forgid, $count = 0, $type = 0)
- {
- if ($count) $sql = 'SELECT COUNT(*) FROM %t WHERE forgid= %d';
- else $sql = 'SELECT * FROM %t WHERE forgid= %d';
- $param = array($this->_table, $forgid);
- if ($type > -1) {
- $sql .= ' and `type`=%d';
- $param[] = $type;
- }
- if ($count) return DB::result_first($sql, $param);
- return DB::fetch_all($sql . ' ORDER BY disp', $param, 'orgid');
- }
-
- /*
- 获取用户参与的部门或群组信息
- $uid: 参与人,为空时为当前用户
- $type: -1:全部部门或群组;1:仅群组;0;仅机构或部门
- return array();
- */
- public function fetch_all_by_uid($uid,$type=-1){
- if(empty($uid)) $uid=getglobal('uid');
- if(!$uid) return array();
- if($orgids=C::t('organization_user')->fetch_orgids_by_uid($uid,$type)){
- parent::fetch_all($orgids);
- }
- return array();
- }
- //插入数据
- public function insert($arr){
- if($orgid=parent::insert($arr)){
- if(intval($arr['aid'])){//如果有头像图片,增加copys
- C::t('attachment')->add_by_aid(intval($arr['aid']));
- }
- }
- return $orgid;
- }
-
- //查询机构群组信息
- public function fetch_all_orggroup($uid,$getmember = true)
- {
- global $_G;
- $groups = array();
- if($_G['adminid'] == 1){
- $orgids = DB::fetch_all("select orgid from %t where `type`=%d and forgid = %d",array($this->_table,0,0));
- foreach($orgids as $v){
- $groups['org'][]= parent::fetch($v['orgid']);
- }
- }else{
- if ($uid) {
- $orgids = C::t('organization_user')->fetch_org_by_uid($uid);
- $orgids = array_unique($orgids);
- $toporgids = array();
- foreach (parent::fetch_all($orgids) as $v) {
- if ($v['type'] == 0) {
- $patharr = explode('-', $v['pathkey']);
- $toporgid = intval(str_replace('_', '', $patharr[0]));
- if (in_array($toporgid, $toporgids)) {
- continue;
- }
- $orginfo=parent::fetch($toporgid);
- if (C::t('organization_admin')->chk_memberperm($toporgid, $uid) > 0) {
- if($orginfo['syatemon'] == 1){
- if($getmember){
- $orginfo['usernum'] = C::t('organization_user')->fetch_num_by_toporgid($toporgid);
- $orginfo['adminer'] = C::t('organization_admin')->fetch_adminer_by_orgid($toporgid);
- }
- $groups['org'][] = $orginfo;
- }
- //$orginfo = DB::fetch_first("select * from %t where `orgid` = %d and syatemon = %d ORDER BY disp", array($this->_table, $toporgid, 1));
-
- } else {
- if ($orginfo['syatemon'] == 1 && $orginfo['manageon'] == 1 && $orginfo['diron'] == 1) {
- if($getmember){
- $orginfo['usernum'] = C::t('organization_user')->fetch_num_by_toporgid($toporgid);
- $orginfo['adminer'] = C::t('organization_admin')->fetch_adminer_by_orgid($toporgid);
- }
- $groups['org'][] = $orginfo;
- }
- }
- $toporgids[] = $toporgid;
- }
- }
-
- }
- }
- return $groups;
- }
-
- public function fetch_group_by_uid($uid, $foreces = false)
- {//查询自定义群组,$foreces=true为jstree加载内容,进行群组开启判断
- global $_G;
- if (!$uid) return false;
- $groups = array();
- $orgids = C::t('organization_user')->fetch_orgids_by_uid($uid,1);
- foreach (DB::fetch_all("select * from %t where `orgid` IN(%n) order by disp", array($this->_table, $orgids)) as $orginfo) {
-
- if ($foreces) {
- if ($orginfo['syatemon'] == 0) {//系统管理员关闭群组
- continue;
- //如果是普通成员,判断群组是否关闭,暂时用diron来进行判断
- } elseif ($orginfo['diron'] == 0 && C::t('organization_admin')->chk_memberperm($orginfo['orgid'], $uid) == 0) {//管理员关闭群组,当前用户不具备管理员权限
- continue;
- }
- }
- //jstree加载不需获取成员数和创建者
- if(!$foreces){
- $orginfo['usernum'] = C::t('organization_user')->fetch_usernums_by_orgid($orginfo['orgid']);
- $orginfo['creater'] = C::t('organization_admin')->fetch_group_creater($orginfo['orgid']);
- }
-
- if ($orginfo['aid'] > 0) {
- //群组图
- $orginfo['imgs'] = 'index.php?mod=io&op=thumbnail&width=24&height=24&path=' . dzzencode('attach::' . $orginfo['aid']);
- }
- /* $contaions = C::t('resources')->get_contains_by_fid($orginfo['fid'],true);
- $orginfo['ffsize'] = lang('property_info_size', array('fsize' => formatsize($contaions['size']), 'size' => $contaions['size']));
- $orginfo['contain'] = lang('property_info_contain', array('filenum' => $contaions['contain'][0], 'foldernum' => $contaions['contain'][1]));*/
- $groups[] = $orginfo;
- }
- return $groups;
- }
-
- public function delete_by_orgid($orgid)
- {
- if (!$org = parent::fetch($orgid)) {
- return array('error' => lang('remove_error_object_inexistence'));
- }
- if (self::fetch_all_by_forgid($org['orgid'], true) || ($org['fid'] && DB::result_first("select count(*) from %t where pfid = %d and isdelete < 1", array('resources', $org['fid'])))) {
- return array('error' => lang('remove_error_check_the_content'));
- }
- //删除对应目录
- if ($org['fid']) {
- C::t('folder')->delete_by_fid($org['fid'],true);
- }
- //删除对应事件
- C::t('resources_event')->delete_by_gid($orgid);
- //删除对应用户
- C::t('organization_user')->delete_by_orgid($orgid);
- //删除对应管理员
- C::t('organization_admin')->delete_by_orgid($orgid);
- if (parent::delete($orgid)) {
- if (intval($org['aid']) != 0) {
- C::t('attachment')->addcopy_by_aid($org['aid'], -1);
- }
- if( $org["type"]==0){//非群主才同步
- self::syn_organization($org['orgid'],'delete');
- }
- return $org;
- } else {
- return array('error' => lang('delete_error'));
- }
- }
-
-
- //判断用户是否是该部门或机构下级成员
- public function ismember($orgid,$uid=0,$onlychild = false)
- {
- if(!$uid) $uid=getglobal('uid');
- $pathkey = '_' . $orgid . '_';
- $orgids = array();
- if($onlychild){
- $pathkey = $pathkey . '.+';
- }else{
- $pathkey = $pathkey . '.*';
- }
- foreach (DB::fetch_all("select orgid from %t where pathkey regexp %s", array($this->_table, $pathkey)) as $v) {
- $orgids[] = $v['orgid'];
- }
- if (DB::result_first("select count(*) from %t where uid = %d and orgid in (%n) ", array('organization_user', $uid, $orgids)) > 0) {
- return true;
- }
- return false;
- }
-
- //获取机构群组下级
- public function fetch_org_by_uidorgid($uid, $orgid)
- {
-
- $resultarr = array();
- //如果该用户是当前部门普通成员则不获取下级机构信息,如果是下级机构成员或当前机构管理员则获取下级部门信息
- if (C::t('organization_admin')->chk_memberperm($orgid, $uid)) {//如果是管理员
- $resultarr = self::fetch_all_by_forgid($orgid,0,0);
-
- } elseif ($this->ismember($orgid,$uid,true)) {//如果是当前机构或部门下级的成员
- $orgids = C::t('organization_user')->fetch_orgids_by_uid($uid,0);
- $pathkeyarr = DB::fetch_all("select pathkey from %t where orgid in (%n) ", array($this->_table, $orgids));
- $porgids = array();
- foreach ($pathkeyarr as $v) {
- $vs = str_replace('_', '', $v['pathkey']);
- $varr = explode('-', $vs);
- $porgids = array_merge($porgids,$varr);
- }
-
- $orgsarr = self::fetch_all_by_forgid($orgid,0,0);
- $orgidarr = array();
- foreach ($orgsarr as $v) {
-
- if (!in_array($v['orgid'], $orgidarr) && in_array($v['orgid'], $porgids)) {
-
- if (C::t('organization_admin')->chk_memberperm($v['orgid'], $uid) > 0 && $v['syatemon'] == 1) {
- $resultarr[] = $v;
- } elseif ($v['syatemon'] && $v['manageon'] && $v['diron']) {
- $resultarr[] = $v;
- }
- $orgidarr[] = $v['orgid'];
- }
- }
-
- }
- //print_r($resultarr);
- return $resultarr;
- }
-
- //获取包含当前机构或部门包含下级的orgid
- public function get_all_contaionchild_orgid($orgid, $uid)
- {
- $orgids = array();
- if (!$org = self::fetch($orgid)) {
- return $orgids;
- }
- if ($org['type'] > 0) {
- $orgids[] = $orgid;
- return $orgids;
- }
- if (C::t('organization_admin')->chk_memberperm($orgid, $uid)) {//如果是管理员
- $orgids = self::get_childorg_by_orgid($orgid);
- } elseif ($this->ismember($uid, $orgid,true)) {//如果不是管理员,判断是否是下级成员
- $orgidarrs = array();
- //获取当前用户所在的所有群组id
- foreach (DB::fetch_all("select o.orgid,o.pathkey,o.manageon,o.diron from %t u left join %t o on o.orgid = u.orgid where u.uid = %d and o.type = 0", array('organization_user', 'organization', $uid)) as $v) {
- $pathkey = $v['pathkey'];
- $orgidarr = explode('-', str_replace('_', '', $pathkey));
- if (in_array($orgid, $orgidarr)) {
- foreach ($orgidarr as $v) {
- $orgidarrs[] = $v;
- }
- }
- }
- $orgids = array_unique($orgidarrs);
- }
- return $orgids;
- }
-
- //获取当前部门或机构的下级
- public function get_childorg_by_orgid($orgid)
- {
- $orgidarr = array();
- if (!$orgid) return $orgidarr;
- $pathkey = DB::result_first("select pathkey from %t where orgid = %d", array($this->_table, $orgid));
- $orgids = DB::fetch_all("select orgid from %t where pathkey regexp %s ", array($this->_table, '^' . $pathkey . '.*'));
- foreach ($orgids as $v) {
- $orgidarr[] = $v['orgid'];
- }
- return $orgidarr;
- }
-
- //获取机构群组的上级id
- public function fetch_parent_by_orgid($orgid,$onlyid=true)
- {
- $pathkey = DB::result_first("select pathkey from %t where orgid = %d", array($this->_table, $orgid));
- $path = str_replace('_', '', $pathkey);
- $patharr = explode('-', $path);
- if($onlyid){
- return $patharr;
- }else{
- return parent::fetch_all($patharr);
- }
- }
-
- //将available修改为diron,后期将调整
- public function setFolderAvailableByOrgid($orgid, $available=0)
- {
- if (!$org = parent::fetch($orgid)) return false;
- if ($available > 0 && $org['forgid'] > 0) {//上级没有开启目录共享,下级无法开启
- $parent = parent::fetch($org['forgid']);
- if ($parent['diron'] < 1) return false;
- }
- if (parent::update($orgid, array('diron' => $available))) {
- //self::setFolderByOrgid($orgid);
- //include_once libfile('function/cache');
- //updatecache('organization');
- return true;
- }
- return false;
- }
-
- //暂时将syatemon调整为manageon
- public function setgroupByOrgid($orgid, $groupon=0)
- {
- if (!$org = parent::fetch($orgid)) return false;
- /*if ($groupon > 0 && $org['forgid'] > 0) {
- $toporgid = self::getTopOrgid($orgid);
- $top = parent::fetch($toporgid);
- if ($top['manageon'] < 1) return false;
- }*/
- if (parent::update($orgid, array('manageon' => $groupon))) {
- return true;
- }
- return false;
- }
-
- public function setIndeskByOrgid($orgid, $indesk)
- {
- if (!$org = parent::fetch($orgid)) return false;
- if ($indesk > 0) {
- if ($org['available'] < 1) return false;
- }
- if (parent::update($orgid, array('indesk' => $indesk))) {
- /*include_once libfile('function/cache');
- updatecache('organization');*/
- return true;
- }
- return false;
- }
-
- public function setFolderByOrgid($orgid)
- {
- if (!$org = parent::fetch($orgid)) return false;
- if ($org['forgid'] == 0) {
- $pfid = 0;
- } else {
- $pfid = DB::result_first("select fid from " . DB::table($this->_table) . " where orgid='{$org['forgid']}'");
- }
-
- if ($fid = DB::result_first("select fid from " . DB::table('folder') . " where gid='{$orgid}' and flag='organization'")) {
- if(C::t('folder')->rename_by_fid($fid,$org['orgname'])){
- self::update($orgid, array('fid' => $fid));
- }
- } else {
- $folder = array('fname' => C::t('folder')->getFolderName($org['orgname'],$pfid,$org['fid']),
- 'pfid' => $pfid,
- 'display' => $org['disp'],
- 'flag' => 'organization',
- 'gid' => $org['orgid'],
- 'innav' => $org['available'],
- 'uid' => getglobal('uid'),
- 'username' => getglobal('username'),
- 'perm' => perm_binPerm::getGroupPower('read')
- );
- $fid = C::t('folder')->insert($folder, 0);
- }
- if ($fid) {
- self::update($org['orgid'], array('fid' => $fid));
- return $fid;
- }
- return false;
- }
-
- public function setDispByOrgid($orgid, $disp, $forgid = 0)
- {
- if (!$org = parent::fetch($orgid)) return false;
-
- if ($torg = DB::fetch_first("select disp,orgid from %t where forgid=%d and orgid!=%d order by disp limit %d,1", array($this->_table, $forgid, $orgid, $disp))) {
- $disp = $torg['disp'];
-
- foreach (DB::fetch_all("select orgid,disp from %t where disp>%d and forgid=%d", array($this->_table, $disp, $forgid)) as $value) {
- parent::update($value['orgid'],array('disp'=>$value['disp']+1));
- //self::wx_update($value['orgid']);
- }
-
- } else {
- $disp = DB::result_first("select max(disp) from %t where forgid=%d", array($this->_table, $forgid)) + 1;
- }
- if ($return = parent::update($orgid, array('disp' => $disp, 'forgid' => $forgid))) {
-
- if ($org['forgid'] != $forgid) {
- //检查重名
- $orgname = self::get_uniqueName_by_forgid($forgid, $org['orgname'], $org['orgid']);
- if ($orgname != $org['orgname']) {//有重名
- self::update_by_orgid($org['orgid'], array('orgname' => $orgname));
- }
- //重新设置所有下级机构的共享目录
- if ($pathkey = self::setPathkeyByOrgid($orgid)) {
- $like = '^' . $pathkey;
- foreach (DB::fetch_all("select orgid from %t where pathkey REGEXP %s", array($this->_table, $like)) as $value) {
- self::setFolderByOrgid($value['orgid']);
- }
- }
- }
- if ($disp > 10000) {
- foreach (DB::fetch_all("select orgid ,disp from %t where forgid=%d", array($this->_table, $forgid)) as $value) {
- parent::update($value['orgid'],array('disp'=>$value['disp']-9000));
- }
- }
- return $return;
- } else {
- return false;
- }
- }
-
- public function getDispByOrgid($borgid)
- {
- $data = parent::fetch($borgid);
- $disp = $data['disp'] + 1;
- // DB::query("update %t SET disp=disp+1 where disp>=%d and forgid=%d", array($this->_table, $disp, $data['forgid']));
- return $disp;
- }
-
- public function chk_by_orgname($orgname,$type = 0,$forgid=0)
- {
- if (DB::result_first("select count(*) from %t where orgname = %s and `type` = %d and forgid = %d", array($this->_table, $orgname,$type,$forgid)) > 0) {
- return false;
- }
- return true;
- }
-
- public function insert_by_orgid($setarr, $synwx = 1)
- {
- $setarr['orgname'] = self::get_uniqueName_by_forgid($setarr['forgid'], $setarr['orgname']);
- if ($setarr['orgid'] = parent::insert($setarr, true)) {
- //self::setFolderByOrgid($org['orgid']);
- //include_once libfile('function/cache');
- //updatecache('organization');
- $uid = getglobal('uid');
- $username = getglobal('username');
- $fid = self::setFolderByOrgid($setarr['orgid']);//添加对应群组目录,默认未启用
- //添加自定义群组时,添加对应创始人
- if ($setarr['type'] !=0) {
- C::t('organization_user')->insert_by_orgid($setarr['orgid'],$uid);
- C::t('organization_admin')->insert($uid, $setarr['orgid'], 2);
- }
- //添加对应动态
- $eventdata = array('groupname' => $setarr['orgname'], 'uid' => getglobal('uid'), 'username' => getglobal('username'));
- C::t('resources_event')->addevent_by_pfid($fid, 'create_group', 'create', $eventdata, $setarr['orgid']);
- self::setPathkeyByOrgid($setarr['orgid']);
- return $setarr['orgid'];
- }
- return false;
- }
-
- public function insert_by_forgid($setarr, $borgid)
- {
- if ($borgid) {
- $setarr['disp'] = self::getDispByOrgid($borgid);
- }
- $setarr['orgname'] = self::get_uniqueName_by_forgid($setarr['forgid'], $setarr['orgname']);
- if ($setarr['orgid'] = parent::insert($setarr, true)) {
- self::setFolderByOrgid($setarr['orgid']);
- //include_once libfile('function/cache');
- //updatecache('organization');
- if (isset($setarr['type']) && $setarr['type'] != 0) {
- $uid = getglobal('uid');
- C::t('organization_admin')->insert($uid, $setarr['orgid'], 1);
- }
-
- self::setPathkeyByOrgid($setarr['orgid']);
- if(isset($setarr['type']) && $setarr['type'] == 0 ) self::syn_organization($setarr['orgid']);
- return $setarr;
- }
-
- return false;
- }
-
- public function syn_organization( $data=array(),$type="update" ){
- if( $type=="update"){
- Hook::listen('syntoline_department',$data);//注册绑定到三方部门表
- }else if( $type=="delete"){
- Hook::listen('syntoline_department',$data,"del");//删除对应到三方部门表
- }
- }
-
- public function update_by_orgid($orgid, $setarr, $synwx = 1)
- {
- if (!$org = self::fetch($orgid)) return false;
- if (isset($setarr['orgname'])) {
- $fid = $org['fid'];
- $name = self::get_uniqueName_by_forgid($org['forgid'], getstr($setarr['orgname']), $orgid);
- if (C::t('folder')->rename_by_fid($fid, $name)) {
- if (parent::update($orgid, array('orgname' => $name))) {
- $body_data = array('username' => getglobal('username'), 'oldname' => $org['orgname'], 'newname' => $name);
- $event_body = 'update_group_name';
- C::t('resources_event')->addevent_by_pfid($org['fid'], $event_body, 'update_groupname', $body_data, $orgid, '', $org['orgname']);//记录事件
- if( $synwx && $org['type']==0) self::syn_organization($orgid);
- }
- unset($setarr['orgname']);
- }
-
- }
-
- if (isset($setarr['perm']) && $setarr['perm']) {
- $fid = $org['fid'];
- C::t('folder')->update($fid, array('perm' => $setarr['perm']));
- unset($setarr['perm']);
- }
- if (isset($setarr['desc'])) {
- $setarr['desc'] = htmlspecialchars($setarr['desc']);
- }
- if (empty($setarr)) return true;
- if (parent::update($orgid, $setarr)) {
- //处理图标copys数
- if(isset($setarr['aid'])){
- $oaid=intval($org['aid']);
- $aid=intval($setarr['aid']);
- if($oaid){
- C::t('attachment')->addcopy_by_aid($oaid,-1);
- }
- if($aid){
- C::t('attachment')->addcopy_by_aid($aid);
- }
- }
- $org = array_merge($org, $setarr);
- self::setFolderByOrgid($org['orgid']);
- $body_data = array('username' => getglobal('username'));
- $event_body = 'update_group_setting';
- C::t('resources_event')->addevent_by_pfid($org['fid'], $event_body, 'update_setting', $body_data, $orgid, '', $org['orgname']);//记录事件
- self::setPathkeyByOrgid($orgid);
- if( $synwx && $org['type']==0 ) self::syn_organization($orgid);
- return true;
- }
- return true;
- }
-
- public function getTopOrgid($orgid)
- {
- include_once libfile('function/organization');
- $ids = self::fetch_parent_by_orgid($orgid);
- return $ids[0];
- }
- public function getUpOrgidTree($orgid,$pids=array()){
- global $_G;
- if($org=C::t('organization')->fetch($orgid)){
- //$pids[]=$orgid;
- array_unshift($pids,$orgid);
- $pids=self::getUpOrgidTree($org['forgid'],$pids);
- }
- return ($pids);
- }
-
- public function setPathkeyByOrgid($orgid, $force = 0)
- { //设置此机构的pathkey的值,$force>0 重设此部门的pathkey
- @set_time_limit(0);
- if (!$org = parent::fetch($orgid)) return false;
- if($org['type'] > 0){
- $pathkey = '_'.$orgid.'_';
- if (parent::update($org['orgid'], array('pathkey' => $pathkey))) return $pathkey;
- return false;
- }else{
- if ($force || empty($org['pathkey'])) {//没有pathkey,
- // include_once libfile('function/organization');
- if($ids=self::getUpOrgidTree($org['orgid'])){
- $pathkey='_'.implode('_-_',$ids).'_';
- if( parent::update($org['orgid'],array('pathkey'=>$pathkey))) return $pathkey;
- }
- return false;
- }
- //设置所有子部门的pathkey;
- if ($org['forgid'] && ($porg = parent::fetch($org['forgid']))) {
- $npathkey = $porg['pathkey'] . '-' . '_' . $orgid . '_';
- } else {
- $npathkey = '_' . $orgid . '_';
- }
- if ($org['pathkey'] == $npathkey) return $npathkey; //没有改变;
- $like = '^' . $org['pathkey'];
- foreach(DB::fetch_all("select orgid,pathkey from %t where pathkey REGEXP %s", array($this->_table, $like)) as $value){
- parent::update($value['orgid'],array('pathkey'=>str_replace($org['pathkey'],$npathkey,$value['pathkey'])));
- }
- /*if (DB::query("update %t set pathkey=REPLACE(pathkey,%s,%s) where pathkey REGEXP %s", array($this->_table, $org['pathkey'], $npathkey, $like))) {
- return $npathkey;
- }*/
- }
- }
-
-
- public function wx_update($orgid)
- {
- global $_G;
- if (!$this->_wxbind) return;
- if (!$org = parent::fetch($orgid)) return false;
- if ($org['type'] > 0) {//群主类型不同步至微信
- return false;
- }
- $wx = new qyWechat(array('appid' => $_G['setting']['CorpID'], 'appsecret' => $_G['setting']['CorpSecret'], 'agentid' => 0));
- $wd = array();
- if ($wxdepart = $wx->getDepartment()) {
- foreach ($wxdepart['department'] as $value) {
- $wd[$value['id']] = $value;
- }
- } else {
- return false;
- }
- if ($org['forgid']) {
- if (($forg = parent::fetch($org['forgid'])) && !$forg['worgid']) {
- if ($worgid = self::wx_update($forg['orgid'])) {
- $forg['worgid'] = $worgid;
- } else {
- return;
- }
- }
- }
- $parentid = ($org['forgid'] == 0 ? 1 : $forg['worgid']);
- if ($org['worgid'] && $wd[$org['worgid']] && $parentid == $wd[$org['worgid']]['parentid']) {//更新机构信息
- $data = array("id" => $org['worgid']);
-
- if ($wd[$org['worgid']]['name'] != $org['orgname']) $data['name'] = $org['orgname'];
- if ($wd[$org['worgid']]['parentid'] != $parentid) $data['parentid'] = $parentid;
- if ($wd[$org['worgid']]['order'] != $org['order']) $data['order'] = $org['order'];
- if ($data) $data['id'] = $org['worgid'];
- if ($data) {
- if (!$wx->updateDepartment($data)) {
- $message = 'updateDepartment:errCode:' . $wx->errCode . ';errMsg:' . $wx->errMsg;
- runlog('wxlog', $message);
- return false;
- }
- }
- return $org['worgid'];
-
- } else {
- $data = array(
- "name" => $org['orgname'], //部门名称
- "parentid" => $org['forgid'] == 0 ? 1 : $forg['worgid'], //父部门id
- "order" => $org['disp'] + 1, //(非必须)在父部门中的次序。从1开始,数字越大排序越靠后
- );
- if ($ret = $wx->createDepartment($data)) {
- parent::update($orgid, array('worgid' => $ret['id']));
- return $ret['id'];
- } else {
- if ($wx->errCode == '60008') {//部门的worgid不正确导致的问题
- foreach ($wd as $value) {
- if ($value['name'] == $data['name'] && $value['parentid'] = $data['parentid']) {
- C::t('organization')->update($org['orgid'], array('worgid' => $value['id']));
- return $value['id'];
- }
- }
- }
- $message = 'createDepartment:errCode:' . $wx->errCode . ';errMsg:' . $wx->errMsg;
- runlog('wxlog', $message);
- return false;
- }
- }
- return false;
- }
-
- public function getPathByOrgid($orgid,$space='-')
- {
- $ret = array();
- if ($org = parent::fetch($orgid)) {
- $ids = explode('-', str_replace('_', '', $org['pathkey']));
- $arr = parent::fetch_all($ids);
- foreach ($ids as $id) {
- if ($arr[$id]) $ret[] = $arr[$id]['orgname'];
- }
- }
- if($space) $ret=implode($space,$ret);
- return $ret;
- }
-
- //获取用户有权限的机构orgid
- public function fetch_all_orgid()
- {
- global $_G;
- $uid = $_G['uid'];
- //获取当前用户参与的机构和群组
- $orgids = array();
- $orgids_admin = array();
- $orgids_member = array();
- $explorer_setting = get_resources_some_setting();
- if($_G['adminid'] == 1){
- $orgdatas = DB::fetch_all("select orgid,`type` from %t where 1", array('organization'));
- }else{
- $orgdatas = DB::fetch_all("select u.orgid,o.`type` from %t u left join %t o on u.orgid=o.orgid where uid = %d", array('organization_user', 'organization', $uid));
- }
- foreach ($orgdatas as $v) {
- if (!$explorer_setting['grouponperm'] && $v['type'] == 1) {
- continue;
- }
- if (!$explorer_setting['orgonperm'] && $v['type'] == 0) {
- continue;
- }
- $orgids[] = $v['orgid'];
- }
- //获取对应权限的机构orgid
- foreach ($orgids as $val) {
- //当前机构或部门管理员,查询所有下级和上级
- if (C::t('organization_admin')->chk_memberperm($val, $uid)) {
- $path = DB::result_first("select pathkey from %t where orgid = %d", array($this->_table, $val));
- $patharr = DB::fetch_all("select pathkey from %t where pathkey regexp %s and available = %d", array($this->_table, '^' . $path . '.*', 1));
- foreach ($patharr as $v) {
- $pathstr = str_replace('_', '', $v['pathkey']);
- if ($orgidarr = explode('-', $pathstr)) $orgids_admin = array_merge($orgids_admin, $orgidarr);
- }
-
- } else {//当前部门成员查询所有上级机构
- $path = DB::result_first("select pathkey from %t where orgid = %d and available = %d and diron = %d", array($this->_table, $val, 1, 1));
- $pathstr = str_replace('_', '', $path);
- if ($orgidarr = explode('-', $pathstr)) $orgids_member = array_merge($orgids_member, $orgidarr);
-
- }
- }
- $member_orgids = array();
- //判断参与群组的群组开启和文件开启
- foreach (DB::fetch_all('select manageon,diron,orgid from %t where orgid in(%n)', array($this->_table, $orgids_member)) as $v) {
- if ($v['manageon'] && $v['diron']) {
- $member_orgids[] = $v['orgid'];
- }
- }
- return array('orgids' => array_unique(array_merge($orgids_admin, $member_orgids)), 'orgids_admin' => array_unique($orgids_admin), 'orgids_member' => array_unique(array_diff($member_orgids, $orgids_admin)));
- }
-
- //获取用户管理的所有群组orgid
- public function fetch_all_manage_orgid()
- {
- global $_G;
- $uid = $_G['uid'];
- $explorer_setting = get_resources_some_setting();
- $manageorgid = DB::fetch_all("select orgid from %t where uid = %d", array('organization_admin', $uid));
- $orgids = array();
- $orgarr = array();
- foreach ($manageorgid as $v) {
- if (!in_array($v['orgid'], $orgarr)) {
- $info = DB::fetch_first("select pathkey,type from %t where orgid = %d", array($this->_table, $v['orgid']));
- if (!$explorer_setting['grouponperm'] && $info['type'] == 1) {
- continue;
- }
- if (!$explorer_setting['orgonperm'] && $info['type'] == 0) {
- continue;
- }
- $pathkey = $info['pathkey'];
- $orgidarr = DB::fetch_all("select orgid,orgname from %t where pathkey regexp %s ", array($this->_table, '^' . $pathkey . '.*'));
- foreach ($orgidarr as $val) {
- $orgids[$val['orgid']] = array('orgid' => $val['orgid'], 'orgname' => $val['orgname']);
- $orgarr[] = $val['orgid'];
- }
- }
- }
- return $orgids;
- }
-
- //我参与的所有群组和机构
- public function fetch_all_part_org()
- {
- $uid = getglobal('uid');
- $orgid = array();
- foreach (DB::fetch_all("select orgid from %t where uid = %d", array('organization_user', $uid)) as $v) {
- $orgid[] = $v['orgid'];
- }
- $orgid = array_unique($orgid);
- $explorer_setting = get_resources_some_setting();
- $orgarr = array();
- foreach (DB::fetch_all("select * from %t where orgid in(%n)", array($this->_table, $orgid)) as $v) {
- if (!$explorer_setting['grouponperm'] && $v['type'] == 1) {
- continue;
- }
- if (!$explorer_setting['orgonperm'] && $v['type'] == 0) {
- continue;
- }
- $org = array('orgid' => $v['orgid'], 'orgname' => $v['orgname']);
- $orgarr[] = $org;
- }
- return $orgarr;
- }
-
- //获取群组类型
- public function get_grouptype_by_orgid($orgid)
- {
- if (!is_array($orgid)) {
- return DB::result_first("select `type` from %t where orgid = %d", array($this->_table, $orgid));
- } else {
- $orgtypes = array();
- foreach (DB::fetch_all("select orgid,`type` from %t where orgid in(%n)", array($this->_table, $orgid)) as $v) {
- if ($v['type'] == 0) {
- $orgtypes['org'][] = $v['orgid'];
- } else {
- $orgtypes['group'][] = $v['orgid'];
- }
-
- }
- return $orgtypes;
- }
-
- }
-
- public function get_uniqueName_by_forgid($forgid, $orgname = '', $orgid = 0)
- {
- static $i = 0;
- if (empty($orgname)) $orgname = lang('new_department');
-
- if (DB::result_first("select COUNT(*) from %t where orgname=%s and forgid=%d and orgid!=%d", array($this->_table, $orgname, $forgid, $orgid))) {
- $orgname = preg_replace("/\(\d+\)/i", '', $orgname) . '(' . ($i + 1) . ')';
- $i += 1;
- return self::get_uniqueName_by_forgid($forgid, $orgname);
- } else {
- return $orgname;
- }
- }
-
- /*空间相关*/
-
- /* 获取当前部门机构空间含有的空间限制值(从上向下)
- * 包含未分配空间的机构或部门已使用空间(单位为B)
- * $owner参数,默认为true即包含自身空间限制占用,设为false,不包含自身空间限制占用
- * */
- public function get_orgallotspace_by_orgid($orgid, $allotspace = 0, $owner = true)
- {
- $org = self::fetch($orgid);
-
- //如果当前部门有空间限制值,则返回该值
- if ($org['maxspacesize'] > 0 && $owner) {
-
- $allotspace += $org['maxspacesize'] * 1024 * 1024;
-
- } else {//如果当前部门没有分配空间,寻找下级分配空间之和
-
- //当前机构或部门已使用空间大小
- $allotspace += intval($org['usesize']);
- //下级部门分配空间大小
- foreach (DB::fetch_all("select orgid from %t where forgid = %d", array($this->_table, $orgid)) as $val) {
- $allotspace += self::get_orgallotspace_by_orgid($val['orgid']);
- }
- }
- return $allotspace;
- }
-
-
- /* *
- * 获取系统可分配空间大小
- * 如果系统无空间限制,返回0
- * 如果系统空间设置为-1,返回-1
- * 如果系统空间有设置,且空间使用量超出或等于分配和,返回-2,否则返回剩余可分配值(单位为B)
- * */
- public function get_system_allowallot_space()
- {
- global $_G;
-
- //获取系统空间设置值
- $systemspace = isset($_G['setting']['systemSpace']) ? intval($_G['setting']['systemSpace']) : 0;
-
- //系统空间无限制时
- if ($systemspace == 0) {
-
- $allowallotspace = 0;
-
- } elseif ($systemspace < 0) {//系统空间关闭时
-
- $allowallotspace = -1;
-
- } elseif ($systemspace > 0) {//设置系统空间限制时
-
- //获取所有顶级机构和群组空间限制值
- $fpathkey = DB::fetch_all("select maxspacesize,orgid from %t where forgid = 0", array($this->_table));
-
- $allotspace = 0;
- foreach ($fpathkey as $v) {
-
- //如果顶级机构有限制值,计算入限制值当中
- if ($v['maxspacesize'] > 0) {
-
- $allotspace += intval($v['maxspacesize']) * 1024 * 1024;
- } else {//如果当前顶级机构没有限制值,获取当前机构已使用空间值+下层机构限制值之和(包含下层机构无限制的已使用空间)
- $allotspace += self::get_orgallotspace_by_orgid($v['orgid']);
- }
- }
- //用户分配空间值
- $allotspace += C::t('user')->get_allotspace();
- $allowallotspace = $systemspace * 1024 * 1024 - $allotspace;
-
-
- if ($allowallotspace <= 0) {
- $allowallotspace = -2;
- }
- }
- return $allowallotspace;
-
- }
-
- /*
- * 获取当前部门空间限制值
- *从下到上依次查找,如果未找到空间限制,则获取系统空间限制,返回值单位为B
- * */
- public function get_parent_maxspacesize_by_pathkey($pathkey, $currentorgid)
- {
- $arr = array('orgid' => '', 'maxspacesize' => '');
- $pathkeys = explode('-', $pathkey);
- $pathkeys = array_reverse($pathkeys);
- foreach ($pathkeys as $v) {
- $orgid = intval(str_replace('_', '', $v));
-
- //排除当前部门
- if ($orgid == $currentorgid) {
-
- continue;
-
- } else {
-
- /*//判断是否有该层的管理权限
- if(!C::t('organization_admin')->chk_memberperm($orgid)){
- exit(json_encode(array('error'=>'没有权限')));
- }*/
- //获取当前层分配空间大小
- $result = DB::result_first("select maxspacesize from %t where orgid = %d", array($this->_table, $orgid));
-
- if ($result > 0 || $result == -1) {
-
- $arr['maxspacesize'] = $result * 1024 * 1024;
- $arr['orgid'] = $orgid;
- break;
- }
- }
-
- }
- //如果没有获取到上层限制,获取系统空间限制
- if ($arr['maxspacesize'] == '') {
- $arr['maxspacesize'] = self::get_system_allowallot_space();
- }
- return $arr;
- }
-
-
- /*
- * 获取当前机构或部门已分配空间大小
- * 包含已使用空间大小
- * 单位为B
- * */
- /* public function get_current_occupysize_byorgid($orgid, $return = array())
- {
- $org = self::fetch($orgid);
- if($org['maxspacesize'] > 0){
- return
- }
- $return['usesize'] += $org['usesize'];
- //获取当前机构子级空间信息
- foreach (DB::fetch_all("select maxspacesize,usesize,orgid from %t where forgid = %d ", array('organization', $orgid)) as $v) {
- if ($v['maxspacesize'] > 0) {
- $return['maxsize'] += $v['maxspacesize'] * 1024 * 1024;
- } elseif ($v['maxspacesize'] == 0) {
- $return['maxsize'] += $v['usesize'];
- $return = $this->get_current_occupysize_byorgid($v['orgid']);
- }
- }
- return $return;
- }*/
-
- /* *
- * 获取当前机构可分配空间大小
- * 上级限制-上级已占用+当前原值
- * */
- public function get_allowallotspacesize_by_orgid($orgid)
- {
- $currentallowsetsize = 0;
- $org = C::t('organization')->fetch($orgid);
- if (!$org) return;
- //获取父级可分配空间大小
- $topmaxspacesizeinfo = $this->get_parent_maxspacesize_by_pathkey($org['pathkey'], $orgid);
-
- //如果当前部门之前有分配空间设置
- if ($org['maxspacesize'] > 0) {
-
- $oldmaxspacesize = $org['maxspacesize'] * 1024 * 1024;
-
- } else {//如果当前部门之前无分配空间设置,获取其下级部门分配空间设置与当前部门未分配已使用之和
-
- $oldmaxspacesize = $this->get_orgallotspace_by_orgid($orgid);
- }
- if ($topmaxspacesizeinfo['maxspacesize'] > 0) {
-
- if ($topmaxspacesizeinfo['orgid']) {//有上级限制
-
- //含限制上级空间占用
- $topallotapce = $this->get_orgallotspace_by_orgid($topmaxspacesizeinfo['orgid'], 0, false);
-
- //计算当前部门可设置空间大小:有限制上级限制空间-有限制上级已占用空间+当前部门原空间
- $currentallowsetsize = $topmaxspacesizeinfo['maxspacesize'] - $topallotapce + $oldmaxspacesize;
-
- } else {//无上级限制(即使用系统空间限制)
-
- $currentallowsetsize = $topmaxspacesizeinfo['maxspacesize'] + $oldmaxspacesize;
- }
-
- } else {//返回值为0,-1,-2的特殊情形
-
- $currentallowsetsize = $topmaxspacesizeinfo['maxspacesize'];
- }
- return $currentallowsetsize;
- }
-
- //获取可使用空间大小
- public function get_usespace_size_by_orgid($orgid)
- {
- $allowusespace = 0;
- if (!$org = C::t('organization')->fetch($orgid)) {
- return -1;
- }
- //如果当前机构或部门已设置分配空间
- if ($org['maxspacesize'] > 0) {
-
- //获取当前机构或部门已占用空间大小
- $currentallotspace = $this->get_orgallotspace_by_orgid($orgid, 0, false);
-
- //获取当前机构或部门可使用空间大小
- $allowusespace = $org['maxspacesize'] * 1024 * 1024 - $currentallotspace;
-
- //如果当前机构或部门可使用空间大小不足
- if ($allowusespace <= 0) {
-
- $allowusespace = -2;
-
- }
-
- } elseif ($org['maxspacesize'] < 0) {//如果当前机构或部门已分配空间为-1
-
- $allowusespace = -1;
-
- } elseif ($org['maxspacesize'] == 0) {//如果当前机构或部门未分配空间
-
- //获取当前机构或部门可分配空间大小即其可用空间
- $allowusespace = self::get_allowallotspacesize_by_orgid($orgid);
-
- }
- return $allowusespace;
- }
-
-
- //获取我有管理权限的机构和部门(包括下级部门)orgids
- public function fetch_all_manage_orgids_by_uid($uids,$sub=true){
- if(!is_array($uids)) $uids=(array)$uids;
- if(!$orgids=C::t('organization_admin')->fetch_orgids_by_uid($uids)) return array();
- $sql="1";
- $param=array($this->_table);
- $sqlarr=array();
- if($sub){
- foreach(parent::fetch_all($orgids) as $value){
- $sqlarr[]='pathkey regexp %s';
- $param[]='^'.$value['pathkey'].'.*';
- }
- if($sqlarr){
- $sql.=' and (' . implode(' OR ',$sqlarr).')';
- foreach(DB::fetch_all("select orgid from %t where $sql",$param) as $value){
- $orgids[]=$value['orgid'];
- }
- }
- }
- return array_unique($orgids);
- }
-}
diff --git a/core/class/table/table_organization_admin.php b/core/class/table/table_organization_admin.php
deleted file mode 100644
index a94ca9a..0000000
--- a/core/class/table/table_organization_admin.php
+++ /dev/null
@@ -1,208 +0,0 @@
-_table = 'organization_admin';
- $this->_pk = 'id';
-
- parent::__construct();
- }
- public function insert($uid, $orgid,$admintype = 1) {
- if(!$uid || !$orgid) return 0;
- if(!C::t('organization_user')->fetch_num_by_orgid_uid($orgid,$uid)){
- $ret = C::t('organization_user')->insert_by_orgid($orgid,$uid);
- }
- $id=parent::insert(array("orgid"=>$orgid,'uid'=>$uid,'opuid'=>getglobal('uid'),'dateline'=>TIMESTAMP,'admintype'=>$admintype),1,1);
- self::update_groupid_by_uid($uid);
-
-
- return DB::result_first('select id from %t where uid=%d and orgid=%d',array($this->_table,$uid,$orgid));
- }
- public function update_perm($uid,$orgid,$admintype){
- if(DB::result_first("select count(*) from %t where orgid = %d and uid = %d",array($this->_table,$orgid,$uid))){
- if($admintype == 0){
- return DB::delete($this->_table,array('orgid'=>$orgid,'uid'=>$uid));
- }else{
- return DB::update($this->_table,array('admintype'=>$admintype),array('orgid'=>$orgid,'uid'=>$uid));
- }
- }else{
- return self::insert($uid,$orgid,$admintype);
- }
-
- }
- public function delete_by_id($id){
- $data=self::fetch($id);
- if($data['admintye'] == 2) return false;
- if($return=parent::delete($id)){
- self::update_groupid_by_uid($data['uid']);
- }
- return $return;
- }
- //判断是否具有当前部门或机构管理员权限
- public function is_admin_by_orgid($orgid,$uid){
- $currentpathkey = DB::result_first("select pathkey from %t where orgid = %d",array('organization',$orgid));
- $orgids = explode('-',str_replace('_','',$currentpathkey));
- if(DB::result_first("select count(*) from %t where orgid in (%n) and uid = %d",array($this->_table,$orgids,$uid)) > 0){
- return true;
- }
- return false;
- }
- /*//判断用户是否是当前机构或部门管理员,或者是下级部门成员
- public function is_curentadmin_or_childmember($orgid,$uid){
- if($this->chk_memberperm($orgid,$uid)) return true;
- $currentpathkey = DB::result_first("select pathkey from %t where orgid = %d",array('organization',$orgid));
- $like = $currentpathkey.'.+';
- foreach (DB::fetch_all("select orgid from %t where pathkey REGEXP %s", array('organization', $like)) as $value) {
- $gids[] = $value['orgid'];
- }
- if(count($gids) > 0){
- return DB::result_first("select count(*) from %t where orgid in(%n)",array('organization_user',$gids));
- }
- }*/
- public function fetch_group_creater($orgid){
- if(!$orgid) return false;
- $uid = DB::result_first("select uid from %t where orgid = %d and admintype = %d",array($this->_table,$orgid,2));
- $username = DB::result_first("select username from %t where uid = %d ",array('user',$uid));
- return $username;
- }
- public function update_groupid_by_uid($uid){
- return true;
- $user=getuserbyuid($uid);
- if($user['groupid']==1) return ;
- //判断当前用户是否仍为机构和部门管理员
- if(DB::result_first("select COUNT(*) from %t a left join %t o on o.orgid = a.orgid where a.uid=%d and o.type = 0 ",array($this->_table,'organization',$uid))){
- $groupid=2;
- }else{
- $groupid=9;
- }
- return C::t('user')->update($uid,array('groupid'=>$groupid));
- }
- public function delete_by_uid($uid) {
- if($return=DB::delete($this->_table, "uid='{$uid}'")){
- self::update_groupid_by_uid($uid);
- return $return;
- }else return false;
- }
- public function delete_by_orgid($orgids) {
- $orgids=(array)$orgids;
- $uids=array();
- foreach(DB::fetch_all("select uid from %t where orgid IN (%n) ",array($this->_table,$orgids)) as $value){
- $uids[$value['uid']]=$value['uid'];
- }
- if($return=DB::delete($this->_table, "orgid IN (".dimplode($orgids).")")){
- foreach($uids as $uid){
- self::update_groupid_by_uid($uid);
- }
- return $return;
- }
- return false;
- }
- public function delete_by_uid_orgid($uid,$orgid) {
-
- if($return=DB::delete($this->_table, "uid='{$uid}' and orgid='{$orgid}'")){
- self::update_groupid_by_uid($uid);
- return $return;
- }else return false;
- }
-
- public function fetch_uids_by_orgid($orgids){
- $uids=array();
- if(!is_array($orgids)) $orgids=array($orgids);
- $query=DB::query("select uid from %t where orgid IN(%n)",array($this->_table,$orgids));
- while($value=DB::fetch($query)){
- $uids[]=$value['uid'];
- }
- return $uids;
- }
-
- public function fetch_moderators_by_orgid($orgids,$count=false){
- if(!is_array($orgids)) $orgids=array($orgids);
- if($count) return DB::result_first("select COUNT(*) from %t where orgid IN (%n)",array($this->_table,$orgids));
- return DB::fetch_all("select o.* ,u.username,u.email,u.uid from ".DB::table($this->_table). " o LEFT JOIN ".DB::table('user')." u ON o.uid=u.uid where o.orgid IN(".dimplode($orgids).") order by o.dateline DESC");
- }
- public function fetch_orgids_by_uid($uids,$orgtype = 0){
- $uids=(array)$uids;
- $orgids=array();
-
- $param=array($this->_table);
- if($orgtype>-1){
- $sql = "select u.orgid from %t u LEFT JOIN %t o ON u.orgid=o.orgid where u.uid IN(%n) and o.type=%d";
- $param[]='organization';
- $param[]=$uids;
- $param[]=$orgtype;
- }else{
- $sql = "select orgid from %t where uid IN(%n)";
- $param[]=$uids;
- }
- foreach(DB::fetch_all($sql,$param) as $value){
- $orgids[$value['orgid']]=$value['orgid'];
- }
- return $orgids;
- }
-
- public function ismoderator_by_uid_orgid($orgid,$uid,$up=1){
- global $_G;
- include_once libfile('function/organization');
- if($_G['adminid']==1) return true;
- if($up) $orgids=C::t('organization')->fetch_parent_by_orgid($orgid);
- else $orgids=array($orgid);
- return DB::result_first("select COUNT(*) from %t where orgid IN (%n) and uid=%d ",array($this->_table,$orgids,$uid));
- }
-
- public function fetch_toporgids_by_uid($uid){
- $ret=array();
- $orgids=self::fetch_orgids_by_uid($uid);
- foreach(C::t('organization')->fetch_all($orgids) as $value){
- $topids=explode('-',$value['pathkey']);
- $topid=intval(str_replace('_','',$topids[0]));
- $ret[$topid]=$topid;
- }
- return $ret;
- }
- public function chk_memberperm($orgid,$uid = 0){
- global $_G;
- $perm = 0;
- if(!$org=C::t('organization')->fetch($orgid)) return $perm;
- if(!$uid) $uid = $_G['uid'];
- if($_G['adminid'] == 1 && $uid == $_G['uid']) {
- $perm = 2;
- return $perm;
- }
-
- //判断是否有上级,如果有上级并且当前用户为上级管理员,则给予类似创始人权限
- if($org['forgid']){
- $orgids = C::t('organization')->fetch_parent_by_orgid($orgid);
- $key = array_search($orgid,$orgids);
- unset($orgids[$key]);
- if(DB::result_first("select count(*) from %t where orgid in(%n) and uid = %d",array($this->_table,$orgids,$uid)) > 0){
- $perm = 2;
- return $perm;
- }
- }
- if($admintype = DB::result_first("select admintype from %t where orgid = %d and uid = %d",array($this->_table,$orgid,$uid))){
- $perm = $admintype;
- }
- return $perm;
- }
-
- public function fetch_adminer_by_orgid($orgid){
- $admindata = '';
- foreach(DB::fetch_all("select u.username from %t a left join %t u on a.uid = u.uid where orgid = %d ",array($this->_table,'user',$orgid)) as $v){
- $admindata .= $v['username'].',';
- }
- $admindata = substr($admindata,0,-1);
- return $admindata;
- }
-}
diff --git a/core/class/table/table_organization_job.php b/core/class/table/table_organization_job.php
deleted file mode 100644
index 06a6266..0000000
--- a/core/class/table/table_organization_job.php
+++ /dev/null
@@ -1,54 +0,0 @@
-_table = 'organization_job';
- $this->_pk = 'jobid';
- parent::__construct();
- }
- public function fetch_all_by_orgid($orgid,$up=0){
- $data=array();
- foreach(DB::fetch_all("select * from %t where orgid = %d order by orgid",array($this->_table,$orgid)) as $value){
- $data[$value['jobid']]=$value;
- }
- return $data;
- }
- function fetch_by_jobid($jobid){
- include_once libfile('function/organization');
- $data=parent::fetch($jobid);
- $data['orgtree']=getTreeByOrgid($data['orgid']);
- return $data;
- }
-
- function insert_job_by_name($orgid=0, $name="" ){
- if (!$orgid || !$name ) return 0;
- if( !$jobid = DB::result_first("select jobid from %t where orgid = %d and name=%s", array('organization_job',$orgid,$name)) ) {
- $data=array(
- "orgid" => $orgid,
- 'name' => $name,
- 'jobid' => 0,
- 'dateline' => TIMESTAMP
- );
- if($jobid = DB::insert('organization_job',$data,1)){//插入版本数据
- return $jobid;
- }
- }else{
- return $jobid;
- }
- return 0;
- }
-}
-
-?>
diff --git a/core/class/table/table_organization_upjob.php b/core/class/table/table_organization_upjob.php
deleted file mode 100644
index 108120d..0000000
--- a/core/class/table/table_organization_upjob.php
+++ /dev/null
@@ -1,45 +0,0 @@
-_table = 'organization_upjob';
- $this->_pk = 'id';
- parent::__construct();
- }
- public function fetch_by_uid($uid){
- if(!$data=DB::fetch_first("select * from %t where uid=%d ",array($this->_table,$uid))) return array();
- if(!$job=C::t('organization_job')->fetch_by_jobid($data['jobid'])) return array();
- $job['depart']=array();
- foreach($job['orgtree'] as $value){
- $job['depart'][]=$value['orgname'];
- }
- $job['depart']=implode(' - ',$job['depart']);
- return array_merge($data,$job);
- }
- public function insert_by_uid($uid,$jobid){
- if(!$jobid ) return self::delete_by_uid($uid);
- $setarr=array('uid'=>$uid,
- 'jobid'=>$jobid,
- 'dateline'=>TIMESTAMP,
- 'opuid'=>getglobal('uid')
- );
- return parent::insert($setarr,1,1);
- }
- public function delete_by_uid($uid){
- return DB::query("delete from %t where uid=%d",array($this->_table,$uid));
- }
-}
-
-?>
diff --git a/core/class/table/table_organization_user.php b/core/class/table/table_organization_user.php
deleted file mode 100644
index bee876b..0000000
--- a/core/class/table/table_organization_user.php
+++ /dev/null
@@ -1,428 +0,0 @@
-_table = 'organization_user';
- $this->_pk = '';
- parent::__construct();
- }
-
- public function insert_by_orgid($orgid,$uids,$jobid = 0)
- {
- if (!$uids || !$orgid) return array();
- if(!$org = C::t('organization')->fetch($orgid)) {
- return array();
- }
- if (!is_array($uids)) $uids=array($uids);
- $ret=array();
- foreach ($uids as $v) {
- if(parent::insert(array("orgid" => $orgid, 'uid' => $v, 'jobid' => $jobid, 'dateline' => TIMESTAMP), 1, 1)){
- $ret[$v]=$v;
- }
- }
- if( $org["type"]==0){//非群组才同步
- self::syn_user( $ret );
- }
- return $ret;
- }
-
- public function fetch_by_uid_orgid($uid, $orgid)
- {
- return DB::fetch_first("select * from %t where uid=%d and orgid=%d", array($this->_table, $uid, $orgid));
- }
-
- public function replace_orgid_by_uid($uid, $orgarr)
- {
- $orgids = array();
- foreach ($orgarr as $key => $value) {
- $orgids[] = $key;
- }
-
- $Oorgids = self::fetch_orgids_by_uid($uid);
- if (!is_array($orgids)) $orgids = array($orgids);
- $insertids = array_diff($orgids, $Oorgids);
- $delids = array_diff($Oorgids, $orgids);
- $updateids = array_diff($orgids, $delids, $insertids);
- if ($delids) DB::delete($this->_table, "uid='{$uid}' and orgid IN (" . dimplode($delids) . ")");
- foreach ($insertids as $orgid) {
- if ($orgid > 0) self::insert_by_orgid($orgid,$uid,$orgarr[$orgid]);
- }
- foreach ($updateids as $orgid) {
- if ($orgid > 0) DB::update($this->_table, array('jobid' => $orgarr[$orgid]), "orgid='{$orgid}' and uid='{$uid}'");
- }
- return true;
- }
-
- public function bind_uid_and_orgid($uid, $orgarr){
- $orgids = array();
- foreach ($orgarr as $key => $value) {
- $orgids[] = $key;
- }
-
- $Oorgids = self::fetch_orgids_by_uid($uid);
- if (!is_array($orgids)) $orgids = array($orgids);
- $insertids = array_diff($orgids, $Oorgids);
- $delids = array_diff($Oorgids, $orgids);
- $updateids = array_diff($orgids, $delids, $insertids);
- //if ($delids) DB::delete($this->_table, "uid='{$uid}' and orgid IN (" . dimplode($delids) . ")");
-
- foreach ($insertids as $orgid) {
- if ($orgid > 0) self::insert_by_orgid($orgid,$uid,$orgarr[$orgid]);
- }
- foreach ($updateids as $orgid) {
- if ($orgid > 0) DB::update($this->_table, array('jobid' => $orgarr[$orgid]), "orgid='{$orgid}' and uid='{$uid}'");
- }
-
- return true;
- }
-
- public function delete_by_uid($uid, $wxupdate = 1)
- {
- if ($return = DB::delete($this->_table, "uid='{$uid}'")) {
-
- self::syn_user( $uid );
- return $return;
- } else return false;
- }
-
- public function delete_by_uid_orgid($uids, $orgid, $wxupdate = 1)
- {
- $uids = (array)$uids;
- $uidarr = array();
- //获取管理员用户
- foreach (DB::fetch_all("select uid,admintype from %t where uid in(%n) and orgid = %d ", array('organization_admin', $uids, $orgid)) as $v) {
- $uidarr[] = array('uid' => $v['uid'], 'perm' => $v['admintype']);
- $key = array_search($v['uid'], $uids);
- unset($uids[$key]);
- }
- //如果有管理员用户,忽略无权限删除的用户
- if (count($uidarr) > 0) {
- //获取当前操作用户权限
- $perm = C::t('organization_admin')->chk_memberperm($orgid, getglobal('uid'));
- foreach ($uidarr as $val) {
- if ($perm > $val['perm']) {
- $uids[] = $val['uid'];
- }
- }
- }
- if ($return = DB::delete($this->_table, "uid IN (" . dimplode($uids) . ") and orgid='{$orgid}'")) {
- //删除管理员表数据
- DB::delete('organization_admin', "uid IN (" . dimplode($uids) . ") and orgid='{$orgid}'");
- include_once libfile('function/cache');
- updatecache('organization');
- self::syn_user( $uids );
- return $uids;
- } else return false;
- }
-
- public function delete_by_orgid($orgids)
- {
- if (!$orgids) return;
- $orgids = (array)$orgids;
- //$uids = self::fetch_uids_by_orgid($orgids);
- $syn_uid =array();
- foreach ($orgids as $orgid) {
- $org = DB::fetch_first("select orgid,type from %t where orgid=%d", array('organization', $orgid));
- if( $org ){
- $query = DB::query("select uid from %t where orgid=%d", array($this->_table, $orgid));
- while ($value = DB::fetch($query)) {
- if( $org["type"]==0 ) $syn_uid[]=$value['uid'];
- }
- }
- }
-
- if( $syn_uid ) $syn_uid = array_unique($syn_uid);
-
- if ($return = DB::delete($this->_table, "orgid IN (" . dimplode($orgids) . ")")) {
- if ($syn_uid) self::syn_user( $syn_uid );
- return $return;
- } else return false;
- }
-
- public function fetch_org_by_uid($uids,$orgtype=0)
- {
- $uids=(array)$uids;
- $orgids=array();
-
- $param=array($this->_table);
- if($orgtype>-1){
- $sql = "select u.orgid from %t u LEFT JOIN %t o ON u.orgid=o.orgid where u.uid IN(%n) and o.type=%d";
- $param[]='organization';
- $param[]=$uids;
- $param[]=$orgtype;
- }else{
- $sql = "select orgid from %t where uid IN(%n)";
- $param[]=$uids;
- }
- foreach(DB::fetch_all($sql,$param) as $value){
- $orgids[$value['orgid']]=$value['orgid'];
- }
- return $orgids;
- }
-
- public function fetch_uids_by_orgid($orgids)
- {
- $uids = array();
- if (!is_array($orgids)) $orgids = array($orgids);
- $query = DB::query("select uid from %t where orgid IN(%n)", array($this->_table, $orgids));
- while ($value = DB::fetch($query)) {
- $uids[] = $value['uid'];
- }
- unset($query);
- return $uids;
- }
-
- public function fetch_user_not_in_orgid($limit = 10000)
- {
- $limitsql='';
- if($limit) $limitsql="limit $limit";
- //获取属于机构和部门的用户
- $uids_org=array();
- foreach(DB::fetch_all("SELECT u.uid from %t u LEFT JOIN %t o ON u.orgid=o.orgid where o.type='0'",array($this->_table,'organization')) as $value){
- $uids_org[$value['uid']]=$value['uid'];
- }
- //获取不属于所有机构和部门的用户
- return DB::fetch_all("select username,uid,email,groupid from %t where uid NOT IN(%n) order by username $limitsql ",array('user',$uids_org),'uid');
- }
-
- public function fetch_user_by_orgid($orgids, $limit = 0, $count = false)
- {
- if (!is_array($orgids)) $orgids = array($orgids);
- $limitsql = '';
- if ($limit) $limitsql = "limit $limit";
-
- if ($count) return DB::result_first("select COUNT(*) %t where orgid IN(%n)", array($this->_table, $orgids));
- return DB::fetch_all("select o.* ,u.username,u.email,u.groupid from " . DB::table('organization_user') . " o LEFT JOIN " . DB::table('user') . " u ON o.uid=u.uid where o.orgid IN(" . dimplode($orgids) . ") order by dateline DESC $limitsql ");
- }
-
- public function fetch_orgids_by_uid($uids,$orgtype = 0){
- $uids=(array)$uids;
- $orgids=array();
-
- $param=array($this->_table);
- if($orgtype>-1){
- $sql = "select u.orgid from %t u LEFT JOIN %t o ON u.orgid=o.orgid where u.uid IN(%n) and o.type=%d";
- $param[]='organization';
- $param[]=$uids;
- $param[]=$orgtype;
- }else{
- $sql = "select orgid from %t where uid IN(%n)";
- $param[]=$uids;
- }
- foreach(DB::fetch_all($sql,$param) as $value){
- $orgids[$value['orgid']]=$value['orgid'];
- }
- return $orgids;
- }
-
- //判断用户是否为当前部门成员
- public function fetch_num_by_orgid_uid($orgid, $uid)
- {
- if (!$orgid || !$uid) return false;
- if (DB::result_first("select count(*) from %t where uid = %d and orgid = %d", array($this->_table, $uid, $orgid))) {
- return true;
- } else {
- return false;
- }
-
- }
-
- public function fetch_usernums_by_orgid($orgid)
- {
- if (!$orgid) return '';
- $numbers = DB::result_first("select count(*) from %t where orgid = %d", array($this->_table, $orgid));
- return $numbers;
- }
-
- public function fetch_usernum_by_orgid($orgid)
- {
- if (!$orgid) return false;
- $orgid = intval($orgid);
- if ($result = DB::result_first("select count(*) from %t where orgid = %d", array($this->_table, $orgid))) {
- return $result;
- }
- return false;
- }
-
- public function fetch_all_by_uid($uids)
- {
- $uids = (array)$uids;
- return DB::fetch_all("select * from %t where uid IN(%n) ", array($this->_table, $uids));
- }
-
-
- public function move_to_forgid_by_orgid($forgid, $orgid)
- {//移动用户到上级部门
- if (!$org = C::t('organization')->fetch($forgid)) return false;
- if (!$org['forgid']) {
- foreach (DB::fetch_all("select * from %t where orgid=%d", array($this->_table, $orgid)) as $value) {
- C::t('organization_admin')->delete_by_uid_orgid($value['uid'], $orgid);
- }
-
- return self::delete_by_orgid($orgid);
- }
- foreach (DB::fetch_all("select * from %t where orgid=%d", array($this->_table, $orgid)) as $value) {
- if (DB::result_first("select COUNT(*) from %t where orgid=%d and uid=%d", array($this->_table, $org['forgid'], $value['uid']))) {
- C::t('organization_admin')->delete_by_uid_orgid($value['uid'], $orgid);
- DB::delete($this->_table, "orgid='{$org[forgid]}' and uid='{$value[uid]}'");
- } else {
- $value['orgid'] = $org['forgid'];
- parent::insert($value);
- }
- }
-
- return true;
- }
-
- public function move_to_by_uid_orgid($uid, $orgid, $torgid, $copy)
- {
- if ($orgid == $torgid) return true;
- if ($torgid == 0) {
- C::t('organization_admin')->delete_by_uid_orgid($uid, $orgid);
- return self::delete_by_uid_orgid($uid, $orgid);
- }
- if (!$copy && DB::result_first("select COUNT(*) from %t where orgid=%d and uid=%d", array($this->_table, $torgid, $uid))) {
- C::t('organization_admin')->delete_by_uid_orgid($uid, $orgid);
- return self::delete_by_uid_orgid($uid, $orgid, 0);
- } else {
- self::insert_by_orgid($torgid,$uid);
- if (!$copy) self::delete_by_uid_orgid($uid, $orgid, 0);
- return true;
- }
- }
- //查询成员
- public function fetch_user_byorgid($orgid, $username = '')
- {
- $where = " and 1=1";
- $params = array($this->_table, 'user', $orgid);
- if ($username) {
- $uid = DB::result_first("select uid from %t where username like %s", array('user', '%' . $username . '%'));
- $where .= " and o.uid = %d";
- $params[] = $uid;
- }
- $userinfo = array();
- foreach (DB::fetch_all("select o.*,u.username,u.email from %t o left join %t u on o.uid = u.uid where o.orgid = %d $where", $params) as $v) {
- $admintype = DB::result_first("select admintype from %t where orgid = %d and uid = %d", array('organization_admin', $orgid, $v['uid']));
- if (!$admintype) {
- $v['perm'] = 0;
- } else {
- $v['perm'] = $admintype;
- }
- $userinfo[] = $v;
- }
- return $userinfo;
- }
- //获取当前机构或部门及下级所有的用户
- public function get_all_user_byorgid($orgid){
- $pathkey = DB::result_first("select pathkey from %t where orgid = %d",array('organization',$orgid));
- $params = array('organization','organization_user','user','^'.$pathkey.'.*');
- $userinfo = array();
- foreach (DB::fetch_all("select o.orgid,ou.*,u.username,u.email from %t o
- left join %t ou on ou.orgid = o.orgid
- left join %t u on ou.uid = u.uid where o.pathkey regexp %s", $params) as $v) {
- $admintype = DB::result_first("select admintype from %t where orgid = %d and uid = %d", array('organization_admin', $orgid, $v['uid']));
- if (!$admintype) {
- $v['perm'] = 0;
- } else {
- $v['perm'] = $admintype;
- }
- $userinfo[] = $v;
- }
- return $userinfo;
- }
-
- //设置成员权限
- public function set_admin_by_giduid($uid, $gid, $perm = 0)//perm,0为协作成员,1为管理员,2为创始人
- {
- global $_G;
- $uid = intval($uid);
- $gid = intval($gid);
- if (!$group = C::t('organization')->fetch($gid)) array('error' => lang('group_not_exists'));
-
- //获取操作用户权限
- $doperm = C::t('organization_admin')->chk_memberperm($gid, $_G['uid']);
- if ($perm == 2 && $doperm != 2) return array('error' => lang('no_privilege'));//检查权限
-
- $permtitle = lang('explorer_gropuperm');
- //查詢用戶是否存在
- if ($result = DB::fetch_first("select ou.*,u.username from %t ou
- left join %t u on ou.uid=u.uid where ou.orgid=%d and ou.uid = %d", array($this->_table, 'user', $gid, $uid))) {
- //转让创始人
- if ($perm == 2) {
- $olduser = DB::fetch_first("select u.uid,u.username from %t ou
- left join %t u on ou.uid = u.uid where ou.orgid = %d and ou.admintype = %d", array('organization_admin', 'user', $gid, 2));
- if (C::t('organization_admin')->update_perm($uid, $gid, $perm) && DB::delete('organization_admin', array('orgid' => $gid, 'uid' => $olduser['uid']))) {
- return array('success' => lang('change_creater_succeed'), 'perm' => $perm, 'olduid' => $olduser['uid'],'olduser'=>$olduser,'member'=>$result['username']);
- }
- } elseif (C::t('organization_admin')->update_perm($uid, $gid, $perm)) {//设置管理员
- return array('success' => true, 'perm' => $perm,'member'=>$result['username']);
- }
- }
- return array('error' => lang('explorer_do_failed'));
- }
-
- //查询机构下成员数
- public function fetch_num_by_toporgid($orgid)
- {
- $pathkey = DB::result_first("select pathkey from %t where orgid = %d", array('organization', $orgid));
- $orgidarr = array();
- foreach (DB::fetch_all("select orgid from %t where pathkey regexp %s", array('organization', '^' . $pathkey . '.*')) as $v) {
- $orgidarr[] = $v['orgid'];
- }
- $uidarr = array();
- foreach (DB::fetch_all("select uid from %t where orgid in (%n)", array($this->_table, $orgidarr)) as $v) {
- $uidarr[] = $v['uid'];
- }
- $uidarr = array_unique($uidarr);
- return count($uidarr);
- }
-
- public function fetch_parentadminer_andchild_uid_by_orgid($orgid,$partget=true)
- {
- $uid = getglobal('uid');
- $uids = array('adminer'=>array(),'partmember'=>array());
- $orgid = intval($orgid);
- $parentadminer = array();
- //获取具有管理员权限的用户
- $pathkey = DB::result_first("select pathkey from %t where orgid = %d", array('organization', $orgid));
- $gids = explode('-',str_replace('_','',$pathkey));
- foreach(DB::fetch_all("select uid from %t where orgid in(%n)",array('organization_admin',$gids)) as $v){
- $uids['adminer'][] = $v['uid'];
- }
- if($partget){
- //获取没有管理员权限的用户
- $childgids = array($orgid);
- $like = $pathkey.'.+';
- foreach (DB::fetch_all("select orgid from %t where pathkey REGEXP %s", array('organization', $like)) as $value) {
- $childgids[] = $value['orgid'];
- }
- $childuids = array();
- foreach(DB::fetch_all("select uid from %t where orgid in(%n)",array($this->_table,$childgids)) as $v){
- $childuids[] = $v['uid'];
- }
- $uids['partmember'] = array_diff(array_unique($childuids),$uids['adminer']);
- }
- $uids['all'] = array_merge($uids['partmember'],$uids['adminer']);
- return $uids;
- }
-
- public function syn_user( $data=array() ){
- Hook::listen('syntoline_user',$data);//注册绑定到钉钉用户表
- //Hook::listen('dzztowxwork_synuser',$data);//注册绑定到企业微信用户表
- }
-
-}
-
diff --git a/core/class/table/table_process.php b/core/class/table/table_process.php
deleted file mode 100644
index bdec969..0000000
--- a/core/class/table/table_process.php
+++ /dev/null
@@ -1,30 +0,0 @@
-_table = 'process';
- $this->_pk = 'processid';
-
- parent::__construct();
- }
-
- public function delete_process($name, $time) {
- $name = addslashes($name);
- return DB::delete('process', "processid='$name' OR expiry<".intval($time));
- }
-}
-
-?>
diff --git a/core/class/table/table_resources.php b/core/class/table/table_resources.php
deleted file mode 100644
index 3e375ff..0000000
--- a/core/class/table/table_resources.php
+++ /dev/null
@@ -1,1112 +0,0 @@
-_table = 'resources';
- $this->_pk = 'rid';
- $this->_pre_cache_key = 'resources_';
- $this->_cache_ttl = 60 * 60;
-
- parent::__construct();
- }
-
- public function insert_data($data, $rid = '')
- {
- $data['rid'] = ($rid) ? $rid : self::create_id();
- if (parent::insert($data)) {
- return $data['rid'];
- }
- return false;
- }
-
- //生成主键rid
- public function create_id()
- {
- $microtime = microtime();
- list($msec, $sec) = explode(' ', $microtime);
- $msec = $msec * 1000000;
- $idstr = md5($sec . $msec . random(6));
- return $idstr;
- }
-
- /* public function getparentsuri($pfid)
- {
- $path = array();
- if ($parent = DB::result_first('select pfid,fname from %t where fid = %d', array('folder', $pfid))) {
- if ($parent['pfid'] > 0 && $parent['pfid'] != $pfid) {
- $path[] = $parent['fname'];
- self::getparenturi($parent['pfid']);
- }
- }
- $path = array_reverse($path);
- $path = implode('/', $path);
- return $path;
- }*/
- public function update_by_pfids($pfids, $setarr)
- {
- if (!is_array($pfids)) $pfids = (array)$pfids;
- $rids = array();
- foreach (DB::fetch_all("select rid from %t where pfid in(%n)", array('resources', $pfids)) as $v) {
- $rids[] = $v['rid'];
- }
- return self::update_by_rid($rids, $setarr);
- }
-
- public function rename_by_rid($rid, $newname)
- {
- global $_G;
- $uid = $_G['uid'];
- if (!$infoarr = $this->fetch_info_by_rid($rid)) {
- return array('error' => lang('file_not_exist'));
- }
- $cachkey = 'resourcesdata_' . $rid;
- $updatepath = false;
- if ($infoarr['type'] == 'folder') {
- $updatepath = true;
- }
- $fid = $infoarr['pfid'];
- if (!perm_check::checkperm_Container($infoarr['pfid'], 'edit2') && !($_G['uid'] == $infoarr['uid'] && perm_check::checkperm_Container($infoarr['pfid'], 'edit1'))) {
- return array('error' => true);
- }
- $setarr = array(
- 'isdelete' => 1,
- 'deldateline' => time()
- );
- $position = C::t('resources_path')->fetch_pathby_pfid($fid);
- $position = preg_replace('/dzz:(.+?):/', '', $position);
- //DB::update($this->_table, array('name' => $newname, 'dateline' => TIMESTAMP), array('rid' => $rid))
- if (self::update_by_rid($rid, array('name' => $newname, 'dateline' => TIMESTAMP))) {
- if ($updatepath) {
- C::t('folder')->update($infoarr['oid'], array('fname' => $newname));
- C::t('resources_path')->update_path_by_fid($infoarr['oid'], $newname);
- }
- //更新属性表数据
- C::t('resources_attr')->update_by_skey($rid, $infoarr['vid'], array('title' => $newname));
- //更新缓存
- $cachkey = 'resourcesdata_' . $rid;
- $this->clear_cache($cachkey);
- $statisdata = array(
- 'uid' => getglobal('uid'),
- 'edits' => 1,
- 'editdateline' => TIMESTAMP
- );
- C::t('resources_statis')->add_statis_by_rid($rid, $statisdata);
- $hash = C::t('resources_event')->get_showtpl_hash_by_gpfid($infoarr['pfid'], $infoarr['gid']);
- $eventdata = array('username' => $_G['username'], 'position' => $position, 'filename' => $infoarr['name'], 'newfilename' => $newname, 'hash' => $hash);
- C::t('resources_event')->addevent_by_pfid($infoarr['pfid'], 'rename_file', 'rename', $eventdata, $infoarr['gid'], $rid, $infoarr['name']);
- $this->clear_cache($cachkey);
- $this->clear_cache($rid);
- return array('newname' => $newname);
- }
- return array('error' => true);
- }
-
- //查询文件表基础信息 $notisdelete是否是已删除
- public function fetch_info_by_rid($rid, $notisdelete = false)
- {
- if (!$data = parent::fetch($rid)) return false;
- if ($notisdelete) {
- if ($data['isdelete'] > 0) return false;
- }
- return $data;
- }
-
- //检查目录权限 如删除,复制,剪切
- public function check_folder_perm($icoarr, $action, $isdelete = false)
- {
- global $_G;
- if ($action == 'cut') $action = 'delete';
- //获取文件夹fid集合
- $fids = C::t('resources_path')->fetch_folder_containfid_by_pfid($icoarr['oid']);
- $rids = array();
- $resources = array();
- $extrasql = '';
- if (!$isdelete) {
- $extrasql = ' and isdelete < 1 ';
- }
- //获取当前文件下所有下级rid
- foreach (DB::fetch_all("select rid,pfid,oid,uid,sperm from %t where (oid in(%n) or pfid in(%n)) and rid != %s $extrasql", array($this->_table, $fids, $fids, $icoarr['rid'])) as $v) {
- $rids[] = $v['rid'];
- $resources[] = $v;
- }
- $index = array_search($icoarr['oid'], $fids);
- unset($fids[$index]);
- $ridnum = count($rids);
- $fidnum = count($fids);
- if ($icoarr['gid'] > 0) {
- $folderinfo = C::t('folder')->fetch($icoarr['oid']);
- if (!perm_FolderSPerm::isPower($folderinfo['fsperm'], $action)) return array('error' => lang('has_no_privilege_file'));
- //判断目录是否为空,为空则不判断当前目录权限
- if ($ridnum) {
- if (perm_check::checkperm_Container($icoarr['pfid'], $action . '2') || ($_G['uid'] == $folderinfo['uid'] && perm_check::checkperm_Container($icoarr['pfid'], $action . '1'))) {
- if (!perm_check::checkperm_Container($icoarr['oid'], $action . '2') && !($_G['uid'] == $folderinfo['uid'] && perm_check::checkperm_Container($icoarr['oid'], $action . '1'))) return array('error' => lang('has_no_privilege_file'));
- } else {
- return array('error' => lang('has_no_privilege_file'));
- }
- } else {
- //判断是否具有上级删除权限
- if (!perm_check::checkperm_Container($icoarr['pfid'], $action . '2') && !($_G['uid'] == $folderinfo['uid'] && perm_check::checkperm_Container($icoarr['pfid'], $action . '1'))) {
- return array('error' => lang('has_no_privilege_file'));
- }
- }
- if (count($resources)) {
- foreach ($resources as $v) {
- if (!perm_check::checkperm($action, $v)) {
- return array('error' => lang('has_no_privilege_file'));
- }
- }
- }
- }
- return array($icoarr['oid'], $ridnum, $fidnum, $fids, $rids);
- }
-
- //删除文件(移动文件到回收站)
- public function recyle_by_rid($rid)
- {
- global $_G;
- $uid = $_G['uid'];
- $rid = trim($rid);
- $dels = array();
- //判断文件是否存在
- if (!$infoarr = parent::fetch($rid)) {
- return false;
- }
- $parentfid = $infoarr['pfid'];//父级目录
- $setarr = array(
- 'pfid' => -1,
- 'isdelete' => 1,
- 'deldateline' => TIMESTAMP
- );
- $setarr1 = array(
- 'isdelete' => 1,
- 'deldateline' => TIMESTAMP
- );
- //如果删除的是文件夹
- if ($infoarr['type'] == 'folder') {
- $result = self::check_folder_perm($infoarr, 'delete');
- if ($result['error']) {
- return array('error' => $result['error']);
- } else {
- list($currentfid, $ridnum, $fidnum, $fids, $rids) = $result;
- }
- if (self::update_by_rid($rid, $setarr)) {
- $infoarr['deldateline'] = $setarr['deldateline'];
- $infoarr['isdelete'] = $setarr['isdelete'];
- //更改下级目录删除状态
- if ($ridnum) self::update_by_rid($rids, $setarr1);
- //查询回收站是否有相同数据,如果有合并回收站数据
- if ($recyledata = C::t('resources_recyle')->fetch_by_rid($infoarr['rid'])) {
-
- if (C::t('folder')->update($currentfid, $setarr)) {
- if ($fidnum) DB::update('folder', $setarr1, 'fid in(' . dimplode($rfids) . ')');
- DB::update('resources_recyle', array('deldateline' => $infoarr['deldateline'], 'uid' => $uid), array('id' => $recyledata['id']));
- } else {
- if ($ridnum) DB::update($this->table, array('isdelete' => 0, 'deldateline' => 0, 'pfid' => $infoarr['pfid']), 'rid in(' . dimplode($rids) . ')');
- self::update_by_rid($rid, array('isdelete' => 0, 'deldateline' => 0, 'pfid' => $infoarr['pfid']));
- return array('error' => lang('do_failed'));
- }
- } else {
- if (C::t('folder')->update($currentfid, $setarr)) {
- if ($fidnum) DB::update('folder', $setarr1, 'fid in(' . dimplode($rfids) . ')');
- C::t('resources_recyle')->insert_data($infoarr);
- } else {
- if ($ridnum) self::update_by_rid($rids, array('isdelete' => 0, 'deldateline' => 0, 'pfid' => $infoarr['pfid']));
- self::update_by_rid($rid, array('isdelete' => 0, 'deldateline' => 0, 'pfid' => $infoarr['pfid']));
- return array('error' => lang('do_failed'));
- }
- }
-
- }
- $dels[] = $rid;
- } else {
- //文件权限判断
- if (!perm_check::checkperm_Container($parentfid, 'delete2') && !($uid == $infoarr['uid'] && perm_check::checkperm_Container($parentfid, 'delete1'))) {
- return array('error' => lang('no_privilege'));
- }
- if (DB::result_first("select count(*) from %t where rid = %s", array('resources_recyle', $rid))) {
- return array('error' => lang('file_isdelete_in_recycle'));
- }
- //执行删除
- if (self::update_by_rid($rid, $setarr)) {
- //修改分享表状态
- C::t('shares')->change_by_rid($rid);
- $infoarr['deldateline'] = $setarr['deldateline'];
- $infoarr['isdelete'] = $setarr['isdelete'];
- //数据放入回收站表
- if (C::t('resources_recyle')->insert_data($infoarr)) {
- $dels[] = $rid;
- } else {//放入回收站失败处理
- self::update_by_rid($rid, array('isdelete' => 0, 'deldateline' => 0, 'pfid' => $infoarr['pfid']));
- }
- }
- }
-
- return $dels;
- }
-
- /*返回1,正常删除,需删除附属表数据,返回2,非删除状态内容,只删除回收站表数据,返回3删除失败
- *$force=>是否彻底删除(即是否强制删除非删除状态文件)
- * */
- public function deletesourcedata($resource, $force = false)
- {
- $type = $resource['type'];
- $oid = $resource['oid'];
- switch ($type) {
- case 'folder':
- return C::t('folder')->delete_by_fid($oid, $force);
- case 'link':
- C::t('collect')->delete_by_cid($oid);
- return 1;
- case 'app':
- return 1;
- case 'user':
- return 1;
- case 'pan':
- return 1;
- case 'storage':
- return 1;
- default :
- if (!$resource['vid']) {
- C::t('attachment')->delete_by_aid($resource['aid'], -1);
- }
- return 1;
- }
- }
-
- public function delete_by_rid($rid, $force = false)
- { //删除图标
- global $_G;
- $cachekey = 'resourcesdata_' . $rid;
- $data = self::getsourcedata($rid);
- $status = self::deletesourcedata($data, $force);
- //删除相关数据
- if ($status == 1) {
- //刪除属性表数据
- C::t('resources_attr')->delete_by_rid($rid);
- //删除事件表数据
- C::t('resources_event')->delete_by_rid($rid);
- //删除标签表数据
- C::t('resources_tag')->delete_by_rid($rid);
- //删除回收站数据
- C::t('resources_recyle')->delete_by_rid($rid);
- //删除版本表数据
- if ($data['vid']) {
- C::t('resources_version')->delete_by_rid($rid);
- }
- //删除收藏表数据
- C::t('resources_collect')->delete_by_rid($rid);
- //删除统计表数据
- C::t('resources_statis')->delete_by_rid($rid);
- //删除resources表数据
- if (parent::delete($rid)) {
- //记录删除事件
- $hash = C::t('resources_event')->get_showtpl_hash_by_gpfid($data['pfid'], $data['gid']);
- $eventdata = array('username' => $_G['username'], 'position' => $data['relpath'], 'filename' => $data['name'], 'hash' => $hash);
- C::t('resources_event')->addevent_by_pfid($data['pfid'], 'finallydel_file', 'finallydelete', $eventdata, $data['gid'], $rid, $data['name']);
- $this->clear_cache($cachekey);
- return true;
- } else {
- return false;
- }
- } elseif ($status == 2) {
- $this->clear_cache($rid);
- $this->clear_cache($cachekey);
- //删除回收站数据
- C::t('resources_recyle')->delete_by_rid($rid);
- } else {
- return false;
- }
-
- }
-
- public function getsourcedata($rid)
- {
- //查询索引表数据
- $resourcedata = array();
- if (!$resourcedata = self::fetch($rid)) {
- return array();
- }
- //查询文件夹信息
- if ($resourcedata['type'] == 'folder') {
- $folder = C::t('folder')->fetch_by_fid($resourcedata['oid']);
- $resourcedata = array_merge($resourcedata, $folder);
- $folderattr = C::t('folder_attr')->fetch_all_folder_setting_by_fid($resourcedata['oid']);
- $resourcedata = array_merge($resourcedata, $folderattr);
- }
- //查询文件路径
- if ($path = C::t('resources_path')->fetch_pathby_pfid($resourcedata['pfid'])) {
- $resourcedata['path'] = ($resourcedata['type'] == 'folder') ? $path . $resourcedata['name'] . '/' : $path . $resourcedata['name'];
- }
- $vdata = array();
- if ($resourcedata['vid'] > 0) {
- $vdata = C::t('resources_version')->fetch($resourcedata['vid']);
- }
- $versiondata = array();
- if ($vdata) {
- $versiondata = array(
- 'dateline' => $vdata['dateline'],//文件修改时间
- );
- }
- //查询文件属性信息
- $attrdata = C::t('resources_attr')->fetch_by_rid($rid, $resourcedata['vid']);
- $resourcedata = array_merge($resourcedata, $attrdata);
-
- $resourcedata = array_merge($resourcedata, $versiondata);
-
- if ($resourcedata['aid']) {//查询附件数据
- $attachment = C::t('attachment')->fetch($resourcedata['aid']);
- //附件表上传时间和文件创建时间字段名称冲突
- $attachment['olddateline'] = $attachment['dateline'];
- unset($attachment['dateline']);
- $resourcedata = array_merge($resourcedata, $attachment);
- }
- return $resourcedata;
- }
-
- public function fetch_by_rid($rid, $force_from_db = false)
- { //返回一条数据同时加载资源表数据
- global $_G;
- $cachekey = 'resourcesdata_' . $rid;
- if ($data = $this->fetch_cache($cachekey)) {
- return $data;
- }
- $data = array();
- if (!$data = self::getsourcedata($rid)) {
- return array();
- }
- $data['size'] = isset($data['size']) ? $data['size'] : 0;
- if ($data['type'] == 'image') {
- $data['img'] = DZZSCRIPT . '?mod=io&op=thumbnail&size=small&path=' . dzzencode('attach::' . $data['aid']);
- $data['url'] = DZZSCRIPT . '?mod=io&op=thumbnail&size=large&path=' . dzzencode('attach::' . $data['aid']);
- } elseif ($data['type'] == 'attach' || $data['type'] == 'document') {
- $data['img'] = isset($data['img']) ? $data['img'] :geticonfromext($data['ext'], $data['type']);
- $data['url'] = DZZSCRIPT . '?mod=io&op=getStream&path=' . dzzencode('attach::' . $data['aid']);
- } elseif ($data['type'] == 'shortcut') {
- $data['ttype'] = $data['tdata']['type'];
- $data['ext'] = $data['tdata']['ext'];
- } elseif ($data['type'] == 'dzzdoc') {
- $data['url'] = DZZSCRIPT . '?mod=document&icoid=' . dzzencode('attach::' . $data['aid']);
- $data['img'] = isset($data['img']) ? $data['img'] : geticonfromext($data['ext'], $data['type']);
- } elseif ($data['type'] == 'folder') {
- //$contaions = self::get_contains_by_fid($data['oid'], true);
- //$data['contaions'] = $contaions;
- $relativepath = str_replace(':', '', strrchr($data['path'], ':'));
- $data['position'] = substr($relativepath, 0, strlen($relativepath) - 1);
- $data['fsize'] = 0;//formatsize($contaions['size']);
- // $data['ffsize'] = lang('property_info_size', array('fsize' => formatsize($contaions['size']), 'size' => $contaions['size']));
- // $data['contain'] = lang('property_info_contain', array('filenum' => $contaions['contain'][0], 'foldernum' => $contaions['contain'][1]));
- $data['img'] = $data['img']?$data['img']:'dzz/images/default/system/'.$data['flag'].'.png';
- } else {
- $data['img'] = isset($data['img']) ? $data['img'] : geticonfromext($data['ext'], $data['type']);
- }
- if ($data['appid']) {
- $imgs = C::t('app_market')->fetch_appico_by_appid($data['appid']);
- $data['img'] = ($imgs) ? 'data/attachment/' . $imgs : geticonfromext($data['ext'], $data['type']);
- }
- if (empty($data['name'])) $data['name'] = $data['title'];
- $data['url'] = isset($data['url']) ? replace_canshu($data['url']) : '';
- $data['ftype'] = getFileTypeName($data['type'], $data['ext']);
- $data['fdateline'] = dgmdate($data['dateline'], 'Y-m-d H:i:s');
- $data['fsize'] = formatsize($data['size']);
- $data['ffsize'] = lang('property_info_size', array('fsize' => formatsize($data['size']), 'size' => $data['size']));
- $data['relativepath'] = $data['path'] ? $data['path'] : '';
- $data['relpath'] = dirname(preg_replace('/dzz:(.+?):/', '', $data['relativepath'])) . '/';
- $data['path'] = $data['rid'];
- $data['bz'] = '';
- $data['collect'] = C::t('resources_collect')->fetch_by_rid($rid);
- if ($data['remote'] > 1) $data['rbz'] = io_remote::getBzByRemoteid($data['remote']);
-
- //增加安全相关的路径
- $data['dpath'] = dzzencode($data['path']);
- $data['apath'] = $data['aid'] ? dzzencode('attach::' . $data['aid']) : $data['dpath'];
- if (!$data['sperm']) $data['sperm'] = perm_FileSPerm::typePower($data['type'], $data['ext']);
- Hook::listen('filter_resource_rid', $data);//数据过滤挂载点
- $this->store_cache($cachekey, $data);
- return $data;
- }
-
- /* //查询群组id
- public function fetch_gid_by_rid($rid)
- {
- return DB::result_first("select gid from %t where rid = %d", array($this->_table, $rid));
- }*/
-
- /* //查询多个文件右侧信息
- public function fetch_rightinfo_by_rid($rids)
- {
- if (!is_array($rids)) $rids = (array)$rids;
- $fileinfo = array();
- $contains = array('size' => 0, 'contain' => array(0, 0));
- foreach (DB::fetch_all("select * from %t where rid in(%n)", array($this->_table, $rids)) as $value) {
- $contains['size'] += $value['size'];
- if ($value['type'] == 'folder') {
- $contains['contain'][1] += 1;
- $containchild = '';
- $containchild = $this->get_contains_by_fid($value['oid'], true);
- if (!empty($containchild)) {
- $contains['contain'][1] += $containchild['contain'][1];
- $contains['contain'][0] += $containchild['contain'][0];
- $contains['size'] += $containchild['size'];
- }
-
- } else {
- $contains['contain'][0] += 1;
- }
- if (!isset($fileinfo['path'])) {
- $path = C::t('resources_path')->fetch_pathby_pfid($value['pfid']);
- $fileinfo['position'] = preg_replace('/dzz:(.+?):/', '', $path);
- }
-
- }
- $fileinfo['ffsize'] = lang('property_info_size', array('fsize' => formatsize($contains['size']), 'size' => $contains['size']));
- $fileinfo['contain'] = lang('property_info_contain', array('filenum' => $contains['contain'][0], 'foldernum' => $contains['contain'][1]));
- $fileinfo['filenum'] = count($rids);
- return $fileinfo;
- }*/
-
- //查询目录文件数,$getversion =>是否获取版本数据
- public function get_contains_by_fid($fid, $getversion = true)
- {
- $contains = array('size' => 0, 'contain' => array(0, 0));
- $pfids = C::t('resources_path')->fetch_folder_containfid_by_pfid($fid);
-
- foreach (DB::fetch_all("select r.rid,r.vid,r.size as primarysize,r.type,r.pfid,v.size from %t r
- left join %t v on r.rid=v.rid where r.pfid in (%n) and r.isdelete < 1", array($this->_table, 'resources_version', $pfids)) as $v) {
- if (!isset($resluts[$v['rid']])) {
- $resluts[$v['rid']] = $v;
- } else {
- $resluts[$v['rid']]['size'] += intval($v['size']);
- }
- }
- foreach ($resluts as $value) {
- if ($getversion) {
- $contains['size'] += ($value['size'] > 0) ? $value['size'] : $value['primarysize'];
- } else {
- $contains['size'] += $value['primarysize'];
- }
- if ($value['type'] == 'folder' && $fid != $value['oid']) {
- $contains['contain'][1] += 1;
- } else {
- $contains['contain'][0] += 1;
- }
- }
- return $contains;
- }
-
- //查询文件对应的rid
- public function fetch_rid_by_fid($fid)
- {
- return DB::result_first("select rid from %t where oid = %d and `type` = 'folder' ", array($this->_table, $fid));
- }
-
- /* //查询文件夹对应的fid
- public function fetch_fid_by_rid($rid)
- {
- return DB::result_first("select oid from %t where rid = %s and `type` = %s", array($this->_table, $rid, 'folder'));
- }*/
-
- //获取文件夹基本信息
- public function get_folderinfo_by_fid($fid)
- {
- if (!$folderinfo = C::t('folder')->fetch($fid)) return false;
- /*$contaions = self::get_contains_by_fid($fid, true);
- $folderinfo['ffsize'] = lang('property_info_size', array('fsize' => formatsize($contaions['size']), 'size' => $contaions['size']));
- $folderinfo['contain'] = lang('property_info_contain', array('filenum' => $contaions['contain'][0], 'foldernum' => $contaions['contain'][1]));*/
- $path = C::t('resources_path')->fetch_pathby_pfid($fid);
- $folderinfo['position'] = preg_replace('/dzz:(.+?):/', '', $path);
- $folderinfo['fdateline'] = dgmdate($folderinfo['dateline'], 'Y-m-d H:i:s');
- $folderinfo['isgroup'] = ($folderinfo['flag'] == 'organization') ? true : false;
- return $folderinfo;
- }
-
- //查詢文件夹下文件信息
- /*public function fetch_folderinfo_by_pfid($fid)
- {
- global $_G;
- if ($fid) {
- if ($folder = C::t('folder')->fetch($fid)) {
- $where1 = array();
- if ($folder['gid'] > 0) {
- $folder['perm'] = perm_check::getPerm($folder['fid']);
- if ($folder['perm'] > 0) {
- if (perm_binPerm::havePower('read2', $folder['perm'])) {
- $where1[] = "1";
- } elseif (perm_binPerm::havePower('read1', $folder['perm'])) {
- $where1[] = "uid='{$_G[uid]}'";
- }
-
- }
- $where1 = array_filter($where1);
- if (!empty($where1)) $temp[] = "(" . implode(' OR ', $where1) . ")";
- else $temp[] = "0";
- } else {
- $temp[] = " uid='{$_G[uid]}'";
- }
- $where[] = '(' . implode(' and ', $temp) . ')';
- unset($temp);
- }
- $wheresql = "";
- if ($where) $wheresql .= implode(' AND ', $where);
-
- return DB::fetch_all("select * from %t where pfid = %d and isdelete = 0 and $wheresql", array($this->_table, $fid));
- }
- }*/
-
- public function fetch_all_by_pfid($pfid, $conditions = array(), $limit = 0, $orderby = '', $order = '', $start = 0, $count = false)
- {
- global $_G;
- $limitsql = $limit ? DB::limit($start, $limit) : '';
- $data = array();
- $wheresql = ' 1 ';
- $where = array();
- $para = array($this->_table);
- $where[] = ' isdelete < 1 ';
- $mustdition = '';
- //解析搜索条件
- if ($conditions && is_string($conditions)) {//字符串条件语句
- $wheresql .= $conditions;
- } elseif (is_array($conditions)) {
- foreach ($conditions as $k => $v) {
- if (!is_array($v)) {
- if ($k == 'mustdition') {
- $mustdition = $v;
- } else {
- $connect = 'and';
- $wheresql .= $connect . ' `' . $k . "` = '" . $v . "' ";
- }
- } else {
- $relative = isset($v[1]) ? $v[1] : '=';
- $connect = isset($v[2]) ? $v[2] : 'and';
- if ($relative == 'in') {
- $wheresql .= $connect . " `" . $k . "` " . $relative . " (" . dimplode($v[0]) . ") ";
- }elseif ($relative == 'not in') {
- $wheresql .= $connect . " `" . $k . "` " . $relative . " (" . dimplode($v[0]) . ") ";
- } elseif ($relative == 'stringsql') {
- $wheresql .= $connect . " " . $v[0] . " ";
- } elseif ($relative == 'like') {
- $wheresql .= $connect . " " . $k . " like %s ";
- $para[] = '%' . $v[0] . '%';
- } else {
- $wheresql .= $connect . " `" . $k . "` " . $relative . " '" . $v[0] . "' ";
- }
- }
- }
- }
- if (is_array($pfid)) {
- $arr = array();
- foreach ($pfid as $fid) {
- $temp = array('pfid = %d');
- $para[] = $fid;
- if ($folder = C::t('folder')->fetch($fid)) {
- $where1 = array();
- if ($folder['gid'] > 0) {
- $folder['perm'] = perm_check::getPerm($folder['fid']);
- if ($folder['perm'] > 0) {
- if (perm_binPerm::havePower('read2', $folder['perm'])) {
- $where1[] = "1";
- } elseif (perm_binPerm::havePower('read1', $folder['perm'])) {
- $where1[] = "uid='{$_G[uid]}'";
- }
-
- }
- $where1 = array_filter($where1);
- if (!empty($where1)) $temp[] = "(" . implode(' OR ', $where1) . ")";
- else $temp[] = "0";
- } else {
- $temp[] = " uid='{$_G[uid]}'";
- }
- }
- $arr[] = '(' . implode(' and ', $temp) . ')';
- unset($temp);
- }
- if ($arr) $where[] = '(' . implode(' OR ', $arr) . ')';
- } elseif ($pfid) {
- $temp = array('pfid= %d');
- $para[] = $pfid;
- if ($folder = C::t('folder')->fetch($pfid)) {
- $where1 = array();
- if ($folder['gid'] > 0) {
- $folder['perm'] = perm_check::getPerm($folder['fid']);
- if ($folder['perm'] > 0) {
- if (perm_binPerm::havePower('read2', $folder['perm'])) {
- $where1[] = "1 = 1";
- } elseif (perm_binPerm::havePower('read1', $folder['perm'])) {
- $where1[] = "uid='{$_G[uid]}'";
- }
- }
- $where1 = array_filter($where1);
- if ($where1) $temp[] = "(" . implode(' OR ', $where1) . ")";
- else $temp[] = "0";
- } else {
- $temp[] = " uid='{$_G[uid]}'";
- }
- }
- $where[] = '(' . implode(' and ', $temp) . ')';
- unset($temp);
- }
- if ($mustdition) $wheresql = '(' . $wheresql . $mustdition . ')';
- if ($where) $wheresql .= ' and ' . implode(' AND ', $where);
- if ($count) return DB::result_first("SELECT COUNT(*) FROM %t $wheresql ", $para);
- $ordersql = '';
- if (is_array($orderby)) {
- foreach ($orderby as $key => $value) {
- $orderby[$key] = $value . ' ' . $order;
- }
- $ordersql = ' ORDER BY ' . implode(',', $orderby);
- } elseif ($orderby) {
- if ($orderby == 'name') {
- $ordersql = " ORDER BY convert(name,UNSIGNED) ".$order .
- ",SUBSTRING_INDEX(name,'-',1) " . $order . ",convert(replace(replace(SUBSTRING_INDEX(name,'-',2),SUBSTRING_INDEX(name,'-',1),''),'-','') , UNSIGNED) " . $order .
- ",convert(replace(replace(SUBSTRING_INDEX(name,'-',3),SUBSTRING_INDEX(name,'-',2),''),'-','') , UNSIGNED) " . $order;
- } else {
- $ordersql = ' ORDER BY ' . $orderby . ' ' . $order;
- }
- }
- foreach (DB::fetch_all("SELECT rid FROM %t where $wheresql $ordersql $limitsql", $para) as $value) {
- if ($arr = self::fetch_by_rid($value['rid'])) $data[$value['rid']] = $arr;
- }
- return $data;
- }
-
- //查询群组下的文件、文件夹信息
- /*public function fetch_all_by_gid($gid)
- {
- $gid = intval($gid);
- if ($folderinfo = C::t('folder')->fetch_folderinfo_by_gid($gid)) {
- return self::fetch_by_pfid($folderinfo['fid']);
- }
- }*/
-
- //查询目录下所有文件基本信息
- public function fetch_basicinfo_by_pfid($pfid)
- {
- $pfid = intval($pfid);
- return DB::fetch_all("select * from %t where pfid = %d", array($this->_table, $pfid));
- }
-
- //查询目录下的文件信息
- public function fetch_by_pfid($pfid, $uid = '', $checkperm = true)
- {
- $currentuid = getglobal('uid');
- $pfid = intval($pfid);
- $where = " pfid = %d";
- $param = array($this->_table, $pfid);
- $datainfo = array();
- if ($uid) {
- $where .= " and uid = %d";
- $param[] = $uid;
- }
- $path = C::t('resources_path')->fetch_pathby_pfid($pfid);
- foreach (DB::fetch_all("select * from %t where $where and isdelete < 1 order by dateline desc", $param) as $k => $value) {
- if ($value['type'] == 'folder') {
- $value['path'] = $path . $value['name'] . '/';//路径
- if ($checkperm) {
- if (!perm_check::checkperm_Container($value['oid'], 'read2') &&
- !($value['uid'] == $currentuid && perm_check::checkperm_Container($value['oid'], 'read1'))
- ) {
- continue;
- }
- }
- } else {
- if ($checkperm) {
- $value['path'] = $path . $value['name'];//路径
- if (!perm_check::checkperm_Container($value['oid'], 'read2') &&
- !($value['uid'] == $currentuid) && perm_check::checkperm_Container($value['oid'], 'read1')
- ) {
- continue;
- }
- }
- }
- $data = C::t('resources_attr')->fetch_by_rid($value['rid'], $value['vid']);
- $data['collect'] = C::t('resources_collect')->fetch_by_rid($value['rid']);
- $datainfo[$k] = $value;
- $datainfo[$k] = array_merge($datainfo[$k], $data);
- if (!isset($datainfo[$k]['img'])) {
- if ($datainfo[$k]['type'] == 'folder') {
- $datainfo[$k]['img'] = './dzz/images/extimg/folder.png';
- } elseif ($datainfo[$k]['type'] == 'image') {
- $datainfo[$k]['img'] = DZZSCRIPT . '?mod=io&op=thumbnail&size=small&path=' . dzzencode('attach::' . $datainfo[$k]['aid']);
- } else {
- $datainfo[$k]['img'] = './dzz/images/extimg/' . $datainfo[$k]['ext'] . '.png';
- }
- }
- $datainfo[$k]['taginfo'] = C::t('resources_tag')->fetch_tag_by_rid($value['rid']);
- $datainfo[$k]['dpath'] = dzzencode($value['rid']);
- $datainfo[$k]['fsize'] = formatsize($value['size']);
- }
- return $datainfo;
- }
-
- //通过rid更新数据
- public function update_by_rid($rid, $setarr)
- {
- if (!is_array($rid)) $rid = (array)$rid;
- if (parent::update($rid, $setarr)) {
- foreach ($rid as $v) {
- $cachekey = 'resourcesdata_' . $v;
- $this->clear_cache($cachekey);
- }
- }
- return true;
- }
-
- //查询某目录下的所有文件夹
- public function fetch_folder_by_pfid($fid, $numselect = false)
- {
-
- return DB::fetch_all("select * from %t where pfid = %d and `type` = %s and isdelete < 1 ", array($this->_table, $fid, 'folder'));
- }
-
- public function fetch_folder_num_by_pfid($fid)
- {
- return DB::result_first("select count(*) from %t where pfid = %d and `type` = %s and deldateline < 1", array($this->_table, $fid, 'folder'));
- }
-
- //通过rid获取属性信息
- public function get_property_by_rid($rids, $contains = true)
- {
- global $_G;
- $uid = $_G['uid'];
- $wheresql = " where r.rid in(%n) ";
- $param = array($this->_table, 'folder', 'resources_path', $rids);
- if (!is_array($rids)) $rids = (array)$rids;
- if (count($rids) > 1) {
- //获取文件基本信息
- $fileinfos = DB::fetch_all("select r.*,f.perm_inherit,p.path from %t r left join %t f on r.pfid = f.fid left join %t p on p.fid = r.pfid $wheresql", $param);
- if (!$fileinfos) {
- return array('error' => lang('no_privilege'));
- }
- $fileinfo = array();
- $tmpinfo = array();
- $infos = array();
- foreach ($fileinfos as $v) {
- $infos[$v['rid']] = $v;
- $tmpinfo['rids'][] = $v['rid'];
- $tmpinfo['names'][] = $v['name'];
- $tmpinfo['pfid'][] = $v['pfid'];
- $tmpinfo['ext'][] = ($v['ext']) ? $v['ext'] : $v['type'];
- $tmpinfo['type'][] = $v['type'];
- $tmpinfo['username'][] = $v['username'];
- $tnpinfo['hascontain'][$v['rid']] = ($v['type'] == 'folder') ? 1 : 0;
- $tmpinfo['realpath'][] = $v['path'];
- }
- $fileinfo['ismulti'] = count($rids);//是否是多选
- $fileinfo['name'] = getstr(implode(',', array_unique($tmpinfo['names'])), 60);
- //判断文件归属
- $fileinfo['username'] = (count(array_unique($tmpinfo['username'])) > 1) ? lang('more_member_owner') : $tmpinfo['username'][0];
-
- //判断是否在同一文件夹下
- if (count(array_unique($tmpinfo['pfid'])) > 1) {
- $fileinfo['realpath'] = lang('more_folder_position');
- $fileinfo['rid'] = implode(',', $tmpinfo['rids']);
- } else {
- $fileinfo['realpath'] = lang('all_positioned') . preg_replace('/dzz:(.+?):/', '', $tmpinfo['realpath'][0]);
- $fileinfo['rid'] = implode(',', $tmpinfo['rids']);
- }
- //判断文件类型是否相同
- $judgesecond = false;
- if (count(array_unique($tmpinfo['ext'])) > 1) {
- $fileinfo['type'] = lang('more_file_type');
- $judgesecond = true;
-
- } elseif ($tmpinfo['ext'][0]=='folder') {
- $fileinfo['type'] = lang('均为文件夹');
- } else {
- $fileinfo['type'] = lang('louis_vuitton') . $tmpinfo['ext'][0] . lang('type_of_file');
- }
- if (in_array('', $tmpinfo['ext']) || $judgesecond) {
- if (count(array_unique($tmpinfo['type'])) > 1) {
- $fileinfo['type'] = lang('more_file_type');
- } else {
- $fileinfo['type'] = lang('louis_vuitton') . $tmpinfo['type'][0] . lang('typename_attach');
- }
- }
-
- if ($contains) {
- //文件大小和文件个数信息
- $tmpinfo['contains'] = array('size' => 0, 'contain' => array(0, 0));
- foreach ($tnpinfo['hascontain'] as $k => $v) {
- if ($v) {
- $tmpinfo['contains']['contain'][1] += 1;
- $childcontains = self::get_contains_by_fid($infos[$k]['oid'], true);
- $tmpinfo['contains']['contain'][0] += $childcontains['contain'][0];
- $tmpinfo['contains']['contain'][1] += $childcontains['contain'][1];
- $tmpinfo['contains']['size'] += $childcontains['size'];
- } else {
- $tmpinfo['contains']['contain'][0] += 1;
- $tmpinfo['contains']['size'] += $infos[$k]['size'];
- }
- }
- $fileinfo['fsize'] = formatsize($tmpinfo['contains']['size']);
- $fileinfo['ffsize'] = lang('property_info_size', array('fsize' => formatsize($tmpinfo['contains']['size']), 'size' => $tmpinfo['contains']['size']));
- $fileinfo['contain'] = lang('property_info_contain', array('filenum' => $tmpinfo['contains']['contain'][0], 'foldernum' => $tmpinfo['contains']['contain'][1]));
- }
- $fileinfo['img'] = self::get_icosinfo_by_rid($fileinfo['rid']);
-
- unset($tmpinfo);
- } else {//单个文件信息
- //文件基本信息
- $fileinfo = DB::fetch_first("select r.*,f.perm_inherit,p.path from %t r
- left join %t f on r.pfid = f.fid left join %t p on r.pfid = p.fid $wheresql", $param);
-
- if (!$fileinfo) {
- return array('error' => lang('no_privilege'));
- }
- //文件统计信息
- $filestatis = C::t('resources_statis')->fetch_by_rid($rids[0]);
- //位置信息
- $fileinfo['realpath'] = preg_replace('/dzz:(.+?):/', '', $fileinfo['path']);
-
-
- //统计信息
- $fileinfo['opendateline'] = ($filestatis['opendateline']) ? dgmdate($filestatis['opendateline'], 'Y-m-d H:i:s') : dgmdate($fileinfo['dateline'], 'Y-m-d H:i:s');
- $fileinfo['editdateline'] = ($filestatis['editdateline']) ? dgmdate($filestatis['editdateline'], 'Y-m-d H:i:s') : dgmdate($fileinfo['dateline'], 'Y-m-d H:i:s');
- $fileinfo['fdateline'] = dgmdate($fileinfo['dateline'], 'Y-m-d H:i:s');
- //编辑权限信息
- $fileinfo['editperm'] = 1;
- if ($fileinfo['gid'] > 0) {
- $powerarr = perm_binPerm::getPowerArr();
- if (!(C::t('organization_admin')->chk_memberperm($fileinfo['gid'])) && !($uid == $fileinfo['uid'] && $fileinfo['perm_inherit'] & $powerarr['edit1']) && !($fileinfo['perm_inherit'] & $powerarr['edit2'])) {
- $fileinfo['editperm'] = 0;
- }
- }
-
- //文件图标信息
- $fileinfo['img'] = self::get_icosinfo_by_rid($fileinfo['rid']);
- if ($fileinfo['type'] == 'folder') {
- $fileinfo['type'] = '文件夹';
- if ($currentfolder = C::t('folder')->fetch($fileinfo['oid'])) {
- $fileinfo['isgroup'] = ($currentfolder['flag'] == 'organization') ? true : false;
- }
- } elseif ($fileinfo['ext']) {
- $fileinfo['type'] = $fileinfo['ext'] . lang('typename_attach');
- } else {
- $fileinfo['type'] = lang('undefined_file_type');
- }
- if ($contains) {
- //文件大小信息
- if ($fileinfo['type'] == 'folder') {
- $contaions = self::get_contains_by_fid($fileinfo['oid'], true);
- $contaions['contain'][1] += 1;
- $fileinfo['fsize'] = formatsize($contaions['size']);
- $fileinfo['ffsize'] = lang('property_info_size', array('fsize' => formatsize($contaions['size']), 'size' => $contaions['size']));
- $fileinfo['contain'] = lang('property_info_contain', array('filenum' => $contaions['contain'][0], 'foldernum' => $contaions['contain'][1]));
-
- } elseif ($fileinfo['ext']) {
- $fileinfo['fsize'] = formatsize($fileinfo['size']);
- } else {
- //获取文件基本信息
- $fileinfos = DB::fetch_all("select r.*,f.perm_inherit,p.path from %t r left join %t f on r.pfid = f.fid left join %t p on p.fid = r.pfid $wheresql", $param);
- $fileinfo = array();
- $tmpinfo = array();
- $infos = array();
- $fileinfo = DB::fetch_first("select r.*,f.perm_inherit,p.path from %t r left join %t f on r.pfid = f.fid left join %t p on r.pfid = p.fid $wheresql", $param);
- if (!$fileinfo) {
- return array('error' => lang('no_privilege'));
- }
- //位置信息
- $fileinfo['realpath'] = preg_replace('/dzz:(.+?):/', '', $fileinfo['path']);
- //统计信息
- $fileinfo['opendateline'] = ($filestatis['opendateline']) ? dgmdate($filestatis['opendateline'], 'Y-m-d H:i:s') : dgmdate($fileinfo['dateline'], 'Y-m-d H:i:s');
- $fileinfo['editdateline'] = ($filestatis['editdateline']) ? dgmdate($filestatis['editdateline'], 'Y-m-d H:i:s') : dgmdate($fileinfo['dateline'], 'Y-m-d H:i:s');
- $fileinfo['fdateline'] = dgmdate($fileinfo['dateline'], 'Y-m-d H:i:s');
- //编辑权限信息
- $fileinfo['editperm'] = 1;
- if ($fileinfo['gid'] > 0) {
- $powerarr = perm_binPerm::getPowerArr();
- if (!(C::t('organization_admin')->chk_memberperm($fileinfo['gid'])) && !($uid == $fileinfo['uid'] && $fileinfo['perm_inherit'] & $powerarr['edit1']) && !($fileinfo['perm_inherit'] & $powerarr['edit2'])) {
- $fileinfo['editperm'] = 0;
- }
- }
- foreach ($fileinfos as $v) {
- $infos[$v['rid']] = $v;
- $tmpinfo['rids'][] = $v['rid'];
- $tmpinfo['names'][] = $v['name'];
- $tmpinfo['pfid'][] = $v['pfid'];
- $tmpinfo['ext'][] = ($v['ext']) ? $v['ext'] : $v['type'];
- $tmpinfo['type'][] = $v['type'];
- $tmpinfo['username'][] = $v['username'];
- $tnpinfo['hascontain'][$v['rid']] = ($v['type'] == 'folder') ? 1 : 0;
- $tmpinfo['realpath'][] = $v['path'];
- }
- $fileinfo['name'] = getstr(implode(',', array_unique($tmpinfo['names'])), 60);
- //判断文件归属
- $fileinfo['username'] = (count(array_unique($tmpinfo['username'])) > 1) ? lang('more_member_owner') : $tmpinfo['username'][0];
- $fileinfo['type'] = lang('type_folder');
- //文件大小和文件个数信息
- $tmpinfo['contains'] = array('size' => 0, 'contain' => array(0, 0));
- foreach ($tnpinfo['hascontain'] as $k => $v) {
- if ($v) {
- $tmpinfo['contains']['contain'][1] += 1;
- $childcontains = self::get_contains_by_fid($infos[$k]['oid'], true);
- $tmpinfo['contains']['contain'][0] += $childcontains['contain'][0];
- $tmpinfo['contains']['contain'][1] += $childcontains['contain'][1];
- $tmpinfo['contains']['size'] += $childcontains['size'];
- } else {
- $tmpinfo['contains']['contain'][0] += 1;
- $tmpinfo['contains']['size'] += $infos[$k]['size'];
- }
- }
- $fileinfo['fsize'] = formatsize($tmpinfo['contains']['size']);
- $fileinfo['ffsize'] = lang('property_info_size', array('fsize' => formatsize($tmpinfo['contains']['size']), 'size' => $tmpinfo['contains']['size']));
- $fileinfo['contain'] = lang('property_info_contain', array('filenum' => $tmpinfo['contains']['contain'][0], 'foldernum' => $tmpinfo['contains']['contain'][1]));
- $fileinfo['img'] = self::get_icosinfo_by_rid($fileinfo['rid']);
- }
-
- }
- }
-
- return $fileinfo;
- }
-
- public function get_containsdata_by_rid($rids)
- {
- $fileinfo = array();
- if (!is_array($rids)) $rids = (array)$rids;
- if (count($rids) > 1) {
- $fileinfos = DB::fetch_all("select `type`,oid,rid,size from %t where rid in(%n)", array($this->_table, $rids));
- $fileinfo = array();
- $tmpinfo = array();
- $infos = array();
- foreach ($fileinfos as $v) {
- $infos[$v['rid']] = $v;
- $tnpinfo['hascontain'][$v['rid']] = ($v['type'] == 'folder') ? 1 : 0;
- }
- $tmpinfo['contains'] = array('size' => 0, 'contain' => array(0, 0));
- foreach ($tnpinfo['hascontain'] as $k => $v) {
- if ($v) {
- $tmpinfo['contains']['contain'][1] += 1;
- $childcontains = self::get_contains_by_fid($infos[$k]['oid'], true);
- $tmpinfo['contains']['contain'][0] += $childcontains['contain'][0];
- $tmpinfo['contains']['contain'][1] += $childcontains['contain'][1];
- $tmpinfo['contains']['size'] += $childcontains['size'];
- } else {
- $tmpinfo['contains']['contain'][0] += 1;
- $tmpinfo['contains']['size'] += $infos[$k]['size'];
- }
- }
- $fileinfo['fsize'] = formatsize($tmpinfo['contains']['size']);
- $fileinfo['ffsize'] = lang('property_info_size', array('fsize' => formatsize($tmpinfo['contains']['size']), 'size' => $tmpinfo['contains']['size']));
- $fileinfo['contain'] = lang('property_info_contain', array('filenum' => $tmpinfo['contains']['contain'][0], 'foldernum' => $tmpinfo['contains']['contain'][1]));
- }else{
- $fileinfo = $this->fetch($rids[0]);
- //文件类型和大小信息
- if ($fileinfo['type'] == 'folder') {
- $contaions = self::get_contains_by_fid($fileinfo['oid'], true);
- $contaions['contain'][1] += 1;
- $fileinfo['fsize'] = formatsize($contaions['size']);
- $fileinfo['ffsize'] = lang('property_info_size', array('fsize' => formatsize($contaions['size']), 'size' => $contaions['size']));
- $fileinfo['contain'] = lang('property_info_contain', array('filenum' => $contaions['contain'][0], 'foldernum' => $contaions['contain'][1]));
- } elseif ($fileinfo['ext']) {
- $fileinfo['fsize'] = formatsize($fileinfo['size']);
- $fileinfo['contain'] = lang('property_info_contain', array('filenum' => 1, 'foldernum' =>0));
- } else {
- $fileinfo['fsize'] = formatsize($fileinfo['size']);
- $fileinfo['contain'] = lang('property_info_contain', array('filenum' => 1, 'foldernum' =>0));
- }
- }
- return $fileinfo;
-
-
-}
- public function get_containsdata_by_fid($fid){
- $fileinfo = array();
- if($fid){
- $contaions = self::get_contains_by_fid($fid, true);
- $fileinfo['fsize'] = lang('property_info_size', array('fsize' => formatsize($contaions['size']), 'size' => $contaions['size']));
- $fileinfo['contain'] = lang('property_info_contain', array('filenum' => $contaions['contain'][0], 'foldernum' => $contaions['contain'][1]));
- }
- return $fileinfo;
- }
-
-//根据fid获取属性信息
-public function get_property_by_fid($fid, $contains = true)
-{
- global $_G;
- $uid = $_G['uid'];
- $fileinfo = array();
- $param = array('folder', 'resources_path', $fid);
- $folders = DB::fetch_first("select f.*,p.path from %t f left join %t p on f.fid = p.fid where f.fid = %d ", $param);
- if (!$folders) {
- return array('error' => lang('no_privilege'));
- }
- $fileinfo['realpath'] = preg_replace('/dzz:(.+?):/', '', $folders['path']);
- $fileinfo['name'] = $folders['fname'];
- $fileinfo['username'] = $folders['username'];
- if ($folders['gid'] > 0 && $folders['pfid'] == 0) {
- $fileinfo['type'] = lang('org_or_group');
- } else {
- $fileinfo['type'] = lang('type_folder');
- }
- if ($contains) {
- $contaions = self::get_contains_by_fid($fid, true);
- $fileinfo['fsize'] = lang('property_info_size', array('fsize' => formatsize($contaions['size']), 'size' => $contaions['size']));
- $fileinfo['contain'] = lang('property_info_contain', array('filenum' => $contaions['contain'][0], 'foldernum' => $contaions['contain'][1]));
- }
-
- //编辑权限信息
- if ($folders['gid'] > 0) {
- $powerarr = perm_binPerm::getPowerArr();
- if (!($uid == $folders['uid'] && $folders['perm_inherit'] & $powerarr['edit1']) && !($folders['perm_inherit'] & $powerarr['edit2'])) {
- $fileinfo['editperm'] = 0;
- } else {
- $fileinfo['editperm'] = 1;
- }
- } else {
- $fileinfo['editperm'] = 1;
- }
- $statis = C::t('resources_statis')->fetch_by_fid($fid);
- $fileinfo['opendateline'] = ($statis['opendateline']) ? dgmdate($statis['opendateline'], 'Y-m-d H:i:s') : '';
- $fileinfo['editdateline'] = ($statis['editdateline']) ? dgmdate($statis['editdateline'], 'Y-m-d H:i:s') : '';
- $fileinfo['fdateline'] = ($folders['dateline']) ? dgmdate($folders['dateline'], 'Y-m-d H:i:s') : '';
- return $fileinfo;
-
-}
-
-public
-function get_icosinfo_by_rid($rid)
-{
- $resourcedata = parent::fetch($rid);
- $attrdata = C::t('resources_attr')->fetch_by_rid($rid, $resourcedata['vid']);
- $data = array_merge($resourcedata, $attrdata);
- if ($data['type'] == 'image') {
- $data['img'] = DZZSCRIPT . '?mod=io&op=thumbnail&size=small&path=' . dzzencode('attach::' . $data['aid']);
- } elseif ($data['type'] == 'attach' || $data['type'] == 'document') {
- $data['img'] = geticonfromext($data['ext'], $data['type']);
- } elseif ($data['type'] == 'shortcut') {
- $data['img'] = isset($data['tdata']['img']) ? $data['tdata']['img'] : geticonfromext($data['tdata']['ext'], $data['tdata']['type']);
- } elseif ($data['type'] == 'dzzdoc') {
-
- $data['img'] = isset($data['img']) ? $data['img'] : geticonfromext($data['ext'], $data['type']);
- } elseif ($data['type'] == 'folder') {
- $data['img'] = $data['img']?$data['img']:'dzz/images/default/system/'.$data['flag'].'.png';
- } else {
- $data['img'] = isset($data['img']) ? $data['img'] : geticonfromext($data['ext'], $data['type']);
- }
- $img = $data['img'];
- unset($data);
- return $img;
-}
-
-//文件名获取文件信息
-public
-function get_resources_by_pfid_name($pfid, $name)
-{
- return DB::fetch_first("select * from %t where pfid=%d and name = %s and `type` = 'folder' ", array($this->_table, $pfid, $name));
-}
-
-//文件id获取文件信息
-public
-function get_resources_info_by_fid($fid)
-{
- return DB::fetch_first("select * from %t where oid = %d and `type` = 'folder' ", array($this->_table, $fid));
-}
-}
\ No newline at end of file
diff --git a/core/class/table/table_resources_attr.php b/core/class/table/table_resources_attr.php
deleted file mode 100644
index 139a80e..0000000
--- a/core/class/table/table_resources_attr.php
+++ /dev/null
@@ -1,123 +0,0 @@
-_table = 'resources_attr';
- $this->_pk = 'id';
- $this->_pre_cache_key = 'resources_attr_';
- $this->_cache_ttl = 60 * 60;
- parent::__construct();
- }
- public function delete_by_id($id){
- if(!$data=parent::fetch($id)) return false;
- if($ret=parent::delete($id)){
- if($data['skey']=='icon' && $data['sval']>0){
- C::t('attachment')->delete_by_aid($data['sval']);
- }
- $cachekey = 'resources_attr_data_'.$data['rid'].$data['vid'];
- $this->clear_cache($cachekey);
- }
- return $ret;
- }
- public function update($id,$setarr){
- if(!$data=parent::fetch($id)) return false;
- if($ret=parent::update($id,$setarr)){
- if($setarr['skey']=='icon'){
- if($data['sval']) C::t('attachment')->delete_by_aid($data['sval']);
- if($setarr['sval']) C::t('attachment')->addcopy_by_aid($setarr['sval']);
- $cachekey = 'resources_attr_data_'.$data['rid'].$data['vid'];
- $this->clear_cache($cachekey);
- }
- }
- return $ret;
- }
- public function insert($setarr){
- if($id=DB::result_first("select id from %t where rid=%s and skey=%s and vid=%d",array($this->_table,$setarr['rid'],$setarr['skey'],intval($setarr['vid'])))){
- if($setarr['skey']=='icon'){
- $o=parent::fetch($id);
- }
- $ret=self::update($id,$setarr);
- }else{
- if($id=parent::insert($setarr,1)){
- $cachekey = 'resources_attr_data_'.$setarr['rid'].$setarr['vid'];
- $this->clear_cache($cachekey);
- }
- }
- //处理图标
- if($id && $setarr['skey']=='icon'){
- if($o['sval']) C::t('attachment')->delete_by_aid($o['sval']);
- if($setarr['sval']) C::t('attachment')->addcopy_by_aid($setarr['sval']);
- }
- return $id;
- }
- public function fetch_by_rid($rid,$vid = 0){
- $cachekey = 'resources_attr_data_'.$rid.$vid;
- if($returndata = $this->fetch_cache($cachekey)){
- return $returndata;
- }
- $returndata = array();
- foreach(DB::fetch_all("select * from %t where rid = %s and vid = %d",array($this->_table,$rid,$vid)) as $val ){
- if($val['skey']=='icon'){
- $val['sval']=C::t('attachment')->getThumbByAid($val['sval'],0,0,1);
- $val['skey']='img';
- }
- $returndata[$val['skey']] = $val['sval'];
- }
- $this->store_cache($cachekey,$returndata);
- return $returndata;
- }
- public function insert_attr($rid,$vid=0,$attrs=array()){
- $i = 0;
- foreach($attrs as $k=>$v){
- $setarr=array('rid'=>$rid,'skey'=>$k,'vid'=>$vid,'sval'=>$v);
- if(self::insert($setarr)){
- $i++;
- }
- }
- return $i;
- }
- public function delete_by_rvid($rid,$vid){
- $i=0;
- foreach(DB::fetch_all("select id from %t where rid=%s and vid=%d",array($this->_table,$rid,$vid)) as $value){
- if(self::delete_by_id($value['id'])){
- $i++;
- }
- }
- return $i;
- }
- public function delete_by_rid($rid){
- if(!is_array($rid)) $rid = (array)$rid;
- $i=0;
- foreach(DB::fetch_all("select id from %t where rid IN(%n) ",array($this->_table,$rid)) as $value){
- if(self::delete_by_id($value['id'])){
- $i++;
- }
- }
- return $i;
- }
-
- public function update_by_skey($rid,$vid,$skeyarr){
- $i=0;
- foreach($skeyarr as $k=>$v){
- $setarr=array('rid'=>$rid,'skey'=>$k,'vid'=>$vid,'sval'=>$v);
- if(self::insert($setarr)){
- $i++;
- }
- }
- return $i;
- }
- public function update_vid_by_rvid($rid,$oldvid,$vid){
- $i=0;
- foreach(DB::fetch_all("select id from %t where rid=%s and vid = %d",array($this->_table,$rid,$oldvid)) as $value){
- if(self::update($value['id'],array('vid'=>$vid))){
- $i++;
- }
- }
- return $i;
- }
-}
\ No newline at end of file
diff --git a/core/class/table/table_resources_cat.php b/core/class/table/table_resources_cat.php
deleted file mode 100644
index 96e198f..0000000
--- a/core/class/table/table_resources_cat.php
+++ /dev/null
@@ -1,83 +0,0 @@
-_table = 'resources_cat';
- $this->_pk = 'id';
- parent::__construct();
- }
- //添加搜索类型
- public function insert_cat($setarr){
- //搜索类型同一用户不能重名
- if(DB::result_first("select count(*) from %t where catname = %s and uid = %d",array($this->_table,$setarr['catname'],$setarr['uid'])) > 0){
- return array('error'=>true,'msg'=>lang('exploder_name_repeat'));
- }
- //处理标签数据
- if(isset($setarr['tag'])){
- $setarr['tag'] = explode(',',$setarr['tag']);
- //将标签放入标签表,如果有并且为该应用下,则自动增加使用数
- $tagdata = C::t('tag')->insert_data($setarr['tag'],'explorer');
- $tags = '';
- foreach($tagdata as $v){
- $tags .= $v['tid'].',';
- }
- $setarr['tag'] = substr($tags,0,-1);
- }
- if($insertid = parent::insert($setarr,1)){
- return array('success'=>true,'insert'=>$insertid);
- }
- return array('error'=>true,'msg'=>lang('exploder_add_failed'));
- }
-
- public function update($catid,$setarr){
- if(!$catinfo = parent::fetch($catid)) return false;
- if(isset($setarr['tag'])){
- $oldtids = explode(',',$catinfo['tag']);
- $setarr['tag'] = array_filter(explode(',',$setarr['tag']));
- if(!empty($setarr['tag'])){
- //将标签放入标签表,如果有并且为该应用下,则自动增加使用数
- $tagdata = C::t('tag')->insert_data($setarr['tag'],'explorer');
- $tags = '';
- foreach($tagdata as $v){
- $tags .= $v['tid'].',';
- $newtids[] = $v['tid'];
- }
- $setarr['tag'] = substr($tags,0,-1);
- }else{
- $setarr['tag'] = '';
- }
- C::t('tag')->addhot_by_tid($oldtids,-1);
- }
- return parent::update($catid,$setarr);
- }
- //查询搜索类型
- public function fetch_by_id($id){
- $id = intval($id);
- return parent::fetch($id);
- }
- //删除搜索类型
- public function del_by_id($id){
- $id = intval($id);
- if(!$cat = parent::fetch($id)){
- return false;
- }
- if($cat['dafault'] == 1){//系统默认不能删除
- return false;
- }
- return parent::delete($id);
- }
- public function fetch_by_uid($uid){
- return DB::fetch_all("select * from %t where uid = %d order by `default` desc",array($this->_table,$uid));
- }
- //查询当前数据最近的一条
- public function fetch_rencent_id($id){
- global $_G;
- return DB::result_first("select id from %t where id < %d and uid = %d order by id desc",array($this->_table,$id,$_G['uid']));
- }
-
-}
\ No newline at end of file
diff --git a/core/class/table/table_resources_clipboard.php b/core/class/table/table_resources_clipboard.php
deleted file mode 100644
index 26a8795..0000000
--- a/core/class/table/table_resources_clipboard.php
+++ /dev/null
@@ -1,113 +0,0 @@
-_table = 'resources_clipboard';
- $this->_pk = 'id';
- parent::__construct();
- }
- //$copytype默认值为1,为1是复制,为2是剪切
- public function insert_data($paths,$copytype = 1){
- $uid = getglobal('uid');
- if(!is_array($paths)) $paths = (array)$paths;
- $rids = '';
- $typearr = array();
- foreach(DB::fetch_all("select rid,uid,pfid,gid,oid,`type` from %t where rid in (%n) and isdelete < 1",array('resources',$paths)) as $v){
- $pfid = $v['pfid'];
- if($copytype == 1){
- if($v['type'] == 'folder'){
- $return = C::t('resources')->check_folder_perm($v,'copy');
- if($return['error']) return array('error'=>$return['error']);
- $typearr[] = 1;
- }else{
- if (!perm_check::checkperm_Container($pfid, 'copy2') && !($uid == $v['uid'] && perm_check::checkperm_Container($pfid, 'copy1'))) {
- return array('error'=>lang('no_privilege'));
- }
- $typearr[] = 2;
- }
- }else{
- if($v['type'] == 'folder'){
- $return = C::t('resources')->check_folder_perm($v,'cut');
- if($return['error']) return array('error'=>$return['error']);
- $typearr[] = 1;
- }else{
- if (!perm_check::checkperm_Container($pfid, 'delete2') && !($uid == $v['uid'] && perm_check::checkperm_Container($pfid, 'delete1'))) {
- return array('error'=>lang('no_privilege'));
- }
- $typearr[] = 2;
- }
- }
- $rids .= $v['rid'].',';
- }
- $typearr = array_unique($typearr);
- if(count($typearr) > 1){
- $type = 3;
- }else{
- $type = $typearr[0];
- }
- if(!$rids) return array('error'=>lang('no_privilege'));
-
- $rids = substr($rids,0,-1);
- $setarr = array(
- 'uid'=>getglobal('uid'),
- 'username'=>getglobal('username'),
- 'dateline'=>time(),
- 'type'=>$type,
- 'files'=>$rids,
- 'copytype'=>$copytype
- );
- self::delete_by_uid();
- if($copyid = parent::insert($setarr,1)){
- return array('rid'=>$rids,'copyid'=>$copyid,'type'=>$type);
- }
- return array('error'=>lang('sysem_busy'));
- }
-
- public function delete_by_uid(){
- $uid = getglobal('uid');
- if(DB::result_first("select count(*) from %t where uid = %d",array($this->_table,$uid)) > 0){
- return DB::delete($this->_table,array('uid'=>$uid));
- }
- }
- public function fetch_by_uid(){
- $uid = getglobal('uid');
- if($return = DB::fetch_first("select * from %t where uid = %d",array($this->_table,$uid))){
- return $return;
- }
- return false;
- }
- public function fetch_user_paste_type(){
- $uid = getglobal('uid');
- return DB::result_first("select `type` from %t where uid = %d",array($this->_table,$uid));
- }
- //去掉粘贴板已删除的rid
- public function update_data_by_delrid($rids)
- {
- if (!is_array($rids)) $rids = (array)$rids;
- if(empty($rids)) return ;
- $datas = array();
- foreach ($rids as $v) {
- foreach (DB::fetch_all("select id,files from %t where find_in_set(%s,files)", array($this->table, $v)) as $val) {
- if($val['files']){
- $files = explode(',', $val['files']);
- $key = array_search($v,$files);
- unset($files[$key]);
- if(empty($files)){
- parent::delete($val['id']);
- }else{
- $files = implode(',', $files);
- parent::update($val['id'],array('files' => $files));
- }
- }
-
- }
-
- }
- return true;
- }
-}
\ No newline at end of file
diff --git a/core/class/table/table_resources_collect.php b/core/class/table/table_resources_collect.php
deleted file mode 100644
index 1b8ca0e..0000000
--- a/core/class/table/table_resources_collect.php
+++ /dev/null
@@ -1,138 +0,0 @@
-_table = 'resources_collect';
- $this->_pk = 'id';
- parent::__construct();
- }
- public function add_collect_by_rid($rids){
- global $_G;
- if(!is_array($rids)) $rids = (array)$rids;
- $i = 0;
- $arr = array();
- foreach($rids as $v){
- //获取收藏文件基本信息
- if($data = C::t('resources')->fetch_info_by_rid($v,true)){
- $setarr = array(
- 'rid'=>$v,
- 'uid'=>$_G['uid'],
- 'username'=>$_G['username'],
- 'dateline'=>time(),
- 'pfid'=>$data['pfid']
- );
- if (!perm_check::checkperm_Container($data['pfid'], 'read2') && !($_G['uid'] == $data['uid'] && perm_check::checkperm_Container($data['pfid'], 'read1'))) {
- continue;
- }
- if(self::add_collect($setarr)){
- //处理数据
- $arr['msg'][$v]='success';
- $ridarr[]= $v;
- $i++;
- }else{
- $arr['msg'][$v]=array('error'=>lang('explorer_do_failed'));
- }
- }else{
- continue;
- }
-
- }
- return $arr;
- }
- public function add_collect($setarr){
- //如果已经加入收藏,不允许重复收藏
- if(DB::result_first("select id from %t where rid = %s and uid = %d",array($this->_table,$setarr['rid'],$setarr['uid']))){
- return false;
- }
- //加入收藏
- if($insert = parent::insert($setarr,1)){
- return $insert;
- }else{
- return false;
- }
- }
- //取消当前用户收藏的某文件
- public function cancle_clooect_by_rid_uid($rid,$uid){
- if(!$collectinfo = DB::fetch_first("select * from %t where rid = %s",array($this->_table,$rid))){
- return array('error'=>lang('collect_file_not_exists'));
- }
- if($collectinfo['uid'] != $uid){
- return array('error'=>lang('no_privilege'));
- }
- if(DB::delete($this->_table,array('rid'=>$rid,'uid'=>$uid))){
- $fileinfo = C::t('resources')->fetch_info_by_rid($rid);
- return array('success'=>true,'rid'=>$rid,'name'=>$fileinfo['name']);
- }
- }
- //删除当前用户对某些文件的收藏
- public function delete_usercollect_by_rid($rids){
- if(!is_array($rids)) $rids = (array)$rids;
- $uid = getglobal('uid');
- $i=0;
- $return = array();
- foreach($rids as $v){
- $return = self::cancle_clooect_by_rid_uid($v,$uid);
- if(!isset($return['error'])){
- //处理数据
- $arr['msg'][$return['rid']]='success';
- $ridarr[]= $return['rid'];
- $i++;
- }else{
- $arr['msg'][$return['rid']]=$return['error'];
- }
- }
-
- return $arr;
- }
- //删除某文件的收藏
- public function delete_by_rid($rid){
- if(!is_array($rid)) $rid = (array)$rid;
- if(!$collectinfo = DB::fetch_first("select * from %t where rid in (%n)",array($this->_table,$rid))){
- return array('error'=>lang('collect_file_not_exists'));
- }
- if(DB::delete($this->_table,'rid in('.dimplode($rid).')')){
- return true;
- }
- return false;
- }
- //清空当前用户的所有收藏
- public function delete_by_uid(){
- $uid = getglobal('uid');
- if(DB::delete($this->_table,array('uid'=>$uid))){
- return true;
- }else{
- return false;
- }
- }
- //查询当前用户所有收藏
- public function fetch_by_uid($limitsql = '',$ordersql = ''){
- $uid = getglobal('uid');
- if($return = DB::fetch_all("select * from %t where uid = %d $ordersql $limitsql",array($this->_table,$uid))){
- return $return;
- }else{
- return false;
- }
- }
- public function fetch_rid_by_uid(){
- $uid = getglobal('uid');
- if($return = DB::fetch_all("select rid from %t where uid = %d",array($this->_table,$uid))){
- return $return;
- }else{
- return false;
- }
- }
- public function fetch_by_rid($rid){
- $rid = trim($rid);
- $uid = getglobal('uid');
- if(DB::result_first("select count(*) from %t where uid = %d and rid = %s",array($this->_table,$uid,$rid))){
- return true;
- }else{
- return false;
- }
- }
-}
\ No newline at end of file
diff --git a/core/class/table/table_resources_event.php b/core/class/table/table_resources_event.php
deleted file mode 100644
index 733e84a..0000000
--- a/core/class/table/table_resources_event.php
+++ /dev/null
@@ -1,469 +0,0 @@
-_table = 'resources_event';
- $this->_pk = 'id';
-
- parent::__construct();
- }
-
- //添加群组动态
- public function addevent_by_pfid($pfid, $event, $do, $eventdata, $gid = '', $rid = '', $do_obj = '', $type = 0)
- {
- if (!$pfid) return false;
- $eventArr = array(
- 'rid' => $rid,
- 'event_body' => $event,
- 'uid' => getglobal('uid'),
- 'username' => getglobal('username'),
- 'dateline' => time(),
- 'body_data' => serialize($eventdata),
- 'gid' => $gid,
- 'pfid' => $pfid,
- 'do' => $do,
- 'do_obj' => $do_obj,
- 'type' => $type
- );
- if ($insert = parent::insert($eventArr, 1)) {
- return $insert;
- } else {
- return false;
- }
- }
-
- public function delete_by_gid($gid)
- {
- DB::delete($this->table, array('gid' => $gid));
- }
-
- //删除文件夹动态,仅限于文件夹,其下文件动态不删除
- public function delete_by_pfid_and_notrid($fid)
- {
- return DB::delete($this->_table, array('rid' => '', 'pfid' => $fid));
- }
-
- //删除动态
- public function delete_by_rid($rid)
- {
- if (!is_array($rid)) $rid = (array)$rid;
- if (DB::delete($this->_table, 'rid in(' . dimplode($rid) . ')')) {
- return array('success' => lang('exploder_do_succeed'));
- }
- return array('error' => lang('exploder_do_failed'));
-
- }
-
- //更改动态归属位置信息(移动文件时使用)
- public function update_position_by_rid($rid, $pfid, $gid)
- {
- if (!is_array($rid)) $rid = (array)$rid;
- DB::update($this->_table, array('pfid' => $pfid, 'gid' => $gid), "rid IN(" . dimplode($rid) . ")");
- return true;
- }
-
- public function fetch_event_by_gid($gid)
- {
- $gid = intval($gid);
- $time = date('Y-m-d');
- $starttime = strtotime($time);
- $endtime = $starttime + 3600 * 24;
- $events = array();
- foreach (DB::fetch_all("select * from %t where gid = %d and dateline > %d and dateline < %d order by dateline desc", array($this->_table, $gid, $starttime, $endtime)) as $v) {
- $v['body_data'] = unserialize($v['body_data']);
- $v['body_data']['msg'] = self::emoji_decode($v['body_data']['msg']);
- $v['body_data']['msg'] = preg_replace_callback("/@\[(.+?):(.+?)\]/i", "atreplacement", $v['body_data']['msg']);
- $v['body_data']['msg'] = dzzcode($v['body_data']['msg']);
- $v['do_lang'] = lang($v['do']);
- $v['details'] = lang($v['event_body'], $v['body_data']);
-
- $events[] = $v;
- }
- return $events;
- }
-
- public function emoji_decode($str)
- {
- $text = json_encode($str); //暴露出unicode
- $text = preg_replace_callback('/\\\\\\\\/i', function ($str) {
- return '\\';
- }, $text); //将两条斜杠变成一条,其他不动
- return json_decode($text);
- }
-
- //根据fid查询评论
- public function fetch_comment_by_fid($fid, $count = false, $start = 0, $limit = 0)
- {
- $fid = intval($fid);
- $params = array($this->_table, $fid, 1);
- $limitsql = $limit ? DB::limit($start, $limit) : '';
- if ($count) {
- return DB::result_first("select count(*) from %t where pfid = %d and rid = '' and `type`= %d", $params);
- }
- $events = array();
- foreach (DB::fetch_all("select * from %t where pfid = %d and rid = '' and `type`= %d order by dateline desc $limitsql", $params) as $v) {
- $v['body_data'] = unserialize($v['body_data']);
- $v['body_data']['msg'] = self::emoji_decode($v['body_data']['msg']);
- $v['body_data']['msg'] = preg_replace_callback("/@\[(.+?):(.+?)\]/i", "atreplacement", $v['body_data']['msg']);
- $v['body_data']['msg'] = dzzcode($v['body_data']['msg']);
- $v['do_lang'] = lang($v['do']);
- $v['details'] = lang($v['event_body'], $v['body_data']);
- $v['fdate'] = dgmdate($v['dateline'], 'u');
- $uids[] = $v['uid'];
- $events[] = $v;
- }
- if (count($events)) {
- $events = self::result_events_has_avatarstatusinfo($uids, $events);
- }
-
-
- return $events;
- }
-
- //根据fid查询评论
- public function fetch_comment_by_rid($rid, $count = false, $start = 0, $limit = 0)
- {
- $rid = trim($rid);
- $params = array($this->_table, $rid, 1);
- $limitsql = $limit ? DB::limit($start, $limit) : '';
- if ($count) {
- return DB::result_first("select count(*) from %t where rid = %s and `type`= %d", $params);
- }
- $uid = array();
- $events = array();
- foreach (DB::fetch_all("select * from %t where rid = %s and `type`= %d order by dateline desc $limitsql", $params) as $v) {
- $v['body_data'] = unserialize($v['body_data']);
- $v['body_data']['msg'] = self::emoji_decode($v['body_data']['msg']);
- $v['body_data']['msg'] = preg_replace_callback("/@\[(.+?):(.+?)\]/i", "atreplacement", $v['body_data']['msg']);
- $v['body_data']['msg'] = dzzcode($v['body_data']['msg']);
- $v['do_lang'] = lang($v['do']);
- $v['details'] = lang($v['event_body'], $v['body_data']);
- $v['fdate'] = dgmdate($v['dateline'], 'u');
- $uids[] = $v['uid'];
- $events[] = $v;
- }
- if (count($events)) {
- $events = self::result_events_has_avatarstatusinfo($uids, $events);
- }
-
- return $events;
- }
-
- //根据rid查询动态
- public function fetch_by_rid($rids, $start = 0, $limit = 0, $count = false, $type = false)
- {
- if (!is_array($rids)) $rids = (array)$rids;
- $fids = array();
- foreach (DB::fetch_all("select * from %t where rid in(%n)", array('resources', $rids)) as $v) {
- if ($v['type'] == 'folder') {
- $fids[] = $v['oid'];
- }
- }
- $wheresql = " where rid in(%n) ";
- $params = array($this->_table, $rids);
- if (count($fids) > 0) {
- $wheresql .= " or (pfid in(%n))";
- $params[] = $fids;
- }
- if ($type) {
- $type = $type - 1;
- $wheresql .= ' and `type` = ' . $type;
- }
- if ($count) {
- return DB::result_first("select count(*) from %t $wheresql", $params);
- }
- $limitsql = $limit ? DB::limit($start, $limit) : '';
- $events = array();
- $uids = array();
- foreach (DB::fetch_all("select * from %t $wheresql order by dateline desc $limitsql", $params) as $v) {
- $v['body_data'] = unserialize($v['body_data']);
- $v['body_data']['msg'] = self::emoji_decode($v['body_data']['msg']);
- $v['body_data']['msg'] = preg_replace_callback("/@\[(.+?):(.+?)\]/i", "atreplacement", $v['body_data']['msg']);
- $v['body_data']['msg'] = dzzcode($v['body_data']['msg']);
- $v['do_lang'] = lang($v['do']);
- $v['details'] = lang($v['event_body'], $v['body_data']);
- $v['fdate'] = dgmdate($v['dateline'], 'u');
- $uids[] = $v['uid'];
- $events[] = $v;
- }
- $events = self::result_events_has_avatarstatusinfo($uids, $events);
-
- return $events;
- }
-
- //根据文件夹id查询动态
- public function fetch_by_pfid_rid($fid, $counts = false, $start = 0, $limit = 0, $rid = '', $type = false)
- {
- //查询文件夹所有下级
- $fids = C::t('resources_path')->get_child_fids($fid);
-
- if ($type) {
- $type = $type - 1;
- $wheresql = " where (pfid in(%n) and `type` = " . $type . ")";
- } else {
- $wheresql = " where (pfid in(%n) and `type` = 0)";
- }
- $wheresql = " where (pfid in(%n) and `type` = 0)";
- $params = array($this->_table, $fids);
-
- if ($rid) {
- if ($type) {
- $type = $type - 1;
- $wheresql .= " or ((rid = %s and `type` = 1) or `type` = 0)";
- } else {
- $wheresql .= " or ((rid = %s and `type` = 1) or `type` = 0)";
- }
-
- $params[] = $rid;
- } else {
- if ($type) {
- $type = $type - 1;
- $wheresql .= " or ((rid = %s and `type` = 1) or `type` = 0)";
- } else {
- $wheresql .= " or (pfid = %d and `type` = 1 and rid = '')";
- }
- $params[] = $fid;
- }
- if ($counts) {
- return DB::result_first("select count(*) from %t $wheresql", $params);
- }
- $limitsql = $limit ? DB::limit($start, $limit) : '';
- $events = array();
- $uids = array();
- include_once libfile('function/use');
- foreach (DB::fetch_all("select * from %t $wheresql order by dateline desc $limitsql", $params) as $v) {
- $v['body_data'] = unserialize($v['body_data']);
- $v['body_data']['msg'] = preg_replace_callback("/@\[(.+?):(.+?)\]/i", "atreplacement", $v['body_data']['msg']);
- $v['body_data']['msg'] = dzzcode($v['body_data']['msg']);
- $at_users = array();
- $v['do_lang'] = lang($v['do']);
- $v['details'] = lang($v['event_body'], $v['body_data']);
- $v['fdate'] = dgmdate($v['dateline'], 'u');
- $uids[] = $v['uid'];
- $events[] = $v;
- }
- $events = self::result_events_has_avatarstatusinfo($uids, $events);
- return $events;
- }
-
- public function result_events_has_avatarstatusinfo($uids, $events)
- {
- $uids = array_unique($uids);
- $avatars = array();
- foreach (DB::fetch_all("select u.avatarstatus,u.uid,s.svalue from %t u left join %t s on u.uid=s.uid and s.skey=%s where u.uid in(%n)", array('user', 'user_setting', 'headerColor', $uids)) as $v) {
- if ($v['avatarstatus'] == 1) {
- $avatars[$v['uid']]['avatarstatus'] = 1;
- } else {
- $avatars[$v['uid']]['avatarstatus'] = 0;
- $avatars[$v['uid']]['headerColor'] = $v['svalue'];
- }
- }
- $fevents = array();
- foreach ($events as $v) {
- $v['avatarstatus'] = $avatars[$v['uid']]['avatarstatus'];
- if (!$avatars[$v['uid']]['avatarstatus'] && isset($avatars[$v['uid']]['headerColor'])) {
- $v['headerColor'] = $avatars[$v['uid']]['headerColor'];
- }
- $fevents[] = $v;
- }
- return $fevents;
- }
-
- //查询该文件最近的动态
- public function fetch_by_ridlast($rid)
- {
- $event = array();
- $result = DB::fetch_first("select * from %t where rid = %s and `type` = %d", array($this->_table, $rid, 0));
- $body_data = unserialize($result['body_data']);
- $body_data['msg'] = dzzcode($body_data['msg']);
- $event = array(
- 'details' => lang($result['event_body'], $body_data),
- 'fdate' => dgmdate($result['dateline'], 'u'),
- );
- return $event;
- }
-
- //查询当前用户所有动态
- public function fetch_all_event($start = 0, $limit = 0, $condition = array(), $ordersql = '', $count = false)
- {
- $limitsql = $limit ? DB::limit($start, $limit) : '';
- $wheresql = ' 1 ';
- $uid = getglobal('uid');
- $params = array($this->_table, 'folder');
- $explorer_setting = get_resources_some_setting();//获取系统设置
- $powerarr = perm_binPerm::getPowerArr();
-
- //用户条件
- $usercondition = array();
- //如果筛选条件没有用户限制,默认查询当前用户网盘数据
- if (!isset($condition['uidval'])) {
- //用户自己的文件
- if ($explorer_setting['useronperm']) {//判断当前用户存储是否开启,如果开启则查询当前用户网盘数据
- $usercondition ['nogid'] = " e.gid=0 and e.uid=%d ";
- $params[] = $uid;
- }
- } else {
- $uids = $condition['uidval'][0];
- if (in_array($uid, $uids)) {
- if ($explorer_setting['useronperm']) {//判断当前用户存储是否开启,如果开启则查询当前用户网盘数据
- $usercondition ['nogid'] = " e.gid=0 and e.uid=%d ";
- $params[] = $uid;
- }
- }
- if (count($uids) > 0) {//群组用户限制
- $usercondition ['hasgid'] = " (e.uid in(%n)) ";
- }
- }
-
- if (isset($usercondition['nogid'])) $wheresql .= 'and (' . $usercondition ['nogid'] . ')';
-
-
- //群组条件后需判断有无用户条件
- $orgcondition = array();
- $orgids = C::t('organization')->fetch_all_orgid();//获取所有有管理权限的部门,并排除已关闭的群组或机构
- //我管理的群组或部门
- if ($orgids['orgids_admin']) {
-
- $orgcondition[] = " e.gid IN (%n) ";
-
- $params[] = $orgids['orgids_admin'];
- }
- //我参与的群组
- if ($orgids['orgids_member']) {
- $orgcondition[] = " (e.gid IN(%n) and ((f.perm_inherit & %d) OR (e.uid=%d and f.perm_inherit & %d))) ";
- $params[] = $orgids['orgids_member'];
- $params[] = $powerarr['read2'];
- $params[] = $uid;
- $params[] = $powerarr['read1'];
- }
- if ($orgcondition) {//如果有群组条件
- $or = isset($usercondition ['nogid']) ? 'or' : 'and';//判断是否有网盘数据
- if ($usercondition ['hasgid']) {//如果有网盘数据,则与群组条件组合为或的关系
- $wheresql .= " $or ((" . implode(' OR ', $orgcondition) . ") and " . $usercondition ['hasgid'] . ") ";
- $params[] = $uids;
- } else {
- $wheresql .= " $or (" . implode(' OR ', $orgcondition) . ") ";
- }
- $wheresql = '(' . $wheresql . ')';
- } else {
- if (!isset($usercondition ['nogid'])) {
- $wheresql .= ' and 0 ';
- }
- }
-
- //解析搜索条件
- if ($condition && is_string($condition)) {//字符串条件语句
- $wheresql .= $condition;
- } elseif (is_array($condition)) {
- foreach ($condition as $k => $v) {
- if (!is_array($v)) {
- $connect = 'and';
- $wheresql .= $connect . ' e.' . $k . " = '" . $v . "' ";
- } else {
- $relative = isset($v[1]) ? $v[1] : '=';
- $connect = isset($v[2]) ? $v[2] : 'and';
- if ($relative == 'in') {
- $wheresql .= $connect . " e." . $k . " " . $relative . " (" . $v[0] . ") ";
- } elseif ($relative == 'nowhere') {
- continue;
- } elseif ($relative == 'stringsql') {
- $wheresql .= $connect . " " . $v[0] . " ";
- } elseif ($relative == 'like') {
- $wheresql .= $connect . " e." . $k . " like %s ";
- $params[] = '%' . $v[0] . '%';
- } else {
- $wheresql .= $connect . ' e.' . $k . ' ' . $relative . ' ' . $v[0] . ' ';
- }
-
- }
- }
- }
- if ($count) {
- return DB::result_first("select count(*) from %t e left join %t f on e.pfid = f.fid where $wheresql $ordersql", $params);
- }
- $uids = array();
- $events = array();
- foreach (DB::fetch_all("select e.* from %t e left join %t f on e.pfid = f.fid where $wheresql $ordersql $limitsql", $params) as $v) {
- $v['body_data'] = unserialize($v['body_data']);
- $v['body_data']['msg'] = dzzcode($v['body_data']['msg']);
- $v['do_lang'] = lang($v['do']);
- $v['details'] = lang($v['event_body'], $v['body_data']);
- $v['fdate'] = dgmdate($v['dateline'], 'u');
- $uids[] = $v['uid'];
- $events[] = $v;
- }
- $events = self::result_events_has_avatarstatusinfo($uids, $events);
- return $events;
-
- }
-
- //删除评论
- public function delete_comment_by_id($id)
- {
- $id = intval($id);
- $uid = getglobal('uid');
- if (!$comment = parent::fetch($id)) {
- return array('error' => lang('comment_not_exists'));
- }
- //检测删除权限
- $pfid = $comment['pfid'];
- if ($folder = C::t('folder')->fetch($pfid)) {
- if(($uid != $comment['uid']) && !perm_check::checkperm_Container($folder['fid'], 'delete2') && !($uid == $folder['uid'] && perm_check::checkperm_Container($folder['fid'], 'delete1'))) {
- return array('error' => lang('no_privilege'));
- }
- }
- if (parent::delete($id)) {
- return array('success' => true);
- } else {
- return array('error' => lang('delete_error'));
- }
-
- }
-
- /*
- * #group&do=file&gid=1&fid=13
- * #group&gid=1
- * #home&fid=1
- * #home&do=file&fid=11
- * */
- public function get_showtpl_hash_by_gpfid($pfid, $gid = 0)
- {
- $hash = '';
- //判断是否是群组内操作
- if ($gid > 0) {
- $gfid = DB::result_first("select fid from %t where orgid = %d", array('organization', $gid));
- //判断是否是群组跟目录
- if ($pfid == $gfid) {
- //$hash=MOD_URL.'#group&gid='.$gid;
- $hash = '#group&gid=' . $gid;
- } else {
- //$hash=MOD_URL.'#group&do=file&gid='.$gid.'&fid='.$pfid;
- $hash = '#group&do=file&gid=' . $gid . '&fid=' . $pfid;
- }
- } else {
- $hfid = DB::result_first("select pfid from %t where fid = %d", array('folder', $pfid));
- //判断是否是个人根目录
- if ($hfid == 0) {
- //$hash=getglobal('siteurl').MOD_URL.'#home&fid='.$pfid;
- $hash = '#home&fid=' . $pfid;
- } else {
- //$hash=getglobal('siteurl').MOD_URL.'#home&do=file&fid='.$pfid;
- $hash = '#home&do=file&fid=' . $pfid;
- }
- }
- return $hash;
- }
-
- public function update_event_by_pfid($pfid, $opfid)
- {
- DB::update($this->_table, array('pfid' => $opfid), array('pfid' => $opfid));
- }
-
-}
\ No newline at end of file
diff --git a/core/class/table/table_resources_path.php b/core/class/table/table_resources_path.php
deleted file mode 100644
index 77a3073..0000000
--- a/core/class/table/table_resources_path.php
+++ /dev/null
@@ -1,247 +0,0 @@
-_table = 'resources_path';
- $this->_pk = 'fid';
- $this->_pre_cache_key = 'resourcespath_';
- $this->_cache_ttl = 60 * 60;
- parent::__construct();
- }
- /*
- * 返回文件夹路径
- * $pfid=>文件夹id
- * $pathkey=>为ture查询pathkey,兼容之前数据(临时处理)
- * */
- public function fetch_pathby_pfid($pfid,$pathkey = false){
- $pfid = intval($pfid);
- $fileds = ($pathkey) ? 'path,pathkey':'path';
- if($pathkey){
- $cachekey = 'patharr_'.$pfid;
- $fileds = 'path,pathkey';
- }else{
- $cachekey = 'path_'.$pfid;
- $fileds = 'path';
- }
- if($data = $this->fetch_cache($cachekey)){
- return $data;
- }
- if($data = DB::fetch_first("select {$fileds} from %t where fid = %d",array($this->_table,$pfid))){
- $data = (!$pathkey) ? $data['path']:$data;
- $this->store_cache($cachekey,$data);
- return $data;
- }
- return false;
- }
- public function update_by_fid($fid,$setarr){
- if(DB::update($this->_table,$setarr,array('fid'=>$fid))){
- $cacheky1 = 'patharr_'.$fid;
- $cacheky2 = 'path_'.$fid;
- $this->clear_cache($cacheky1);
- $this->clear_cache($cacheky2);
- return true;
- }
- return false;
- }
- public function fetch_fid_bypath($path){
- if($data = DB::fetch_first("select p.fid from %t p left join %t f on f.fid = p.fid where p.path = %s and f.isdelete < %d",array($this->_table,'folder',$path,1))){
- return $data['fid'];
- }
- return false;
- }
- //获取路径文件名和文件所在文件夹fid
- public function get_filename_patharr($path){
- $patharr = array();
- $dir = dirname($path).'/';
- if(!$pfid = C::t('resources_path')->fetch_fid_bypath($dir)){
- return $patharr;
- }
- $filename = preg_replace('/^.+[\\\\\\/]/', '', $path);
- //如果是文件夹
- if(!$filename){
- $patharr = preg_split('/[\\\\\\/]/',$path);
- $patharr = array_filter($patharr);
- $filename = end($patharr);
- }
- $patharr['filename'] = $filename;
- $patharr['pfid'] = $pfid;
- return $patharr;
- }
- public function delete_by_path($path){
- $path = self::path_transferred_meaning($path);
- $fids = array();
- foreach(DB::fetch_all("select fid from %t where path regexp %s",array($this->_table,'^'.$path.'.*')) as $v){
- $fids[] = $v['fid'];
- }
-
- if(self::delete_by_fid($fids)){
- return true;
- }
- return false;
- }
- public function delete_by_fid($fid){
- if(!is_array($fid)) $fids = array($fid);
- else $fids = $fid;
- $cachekey1 = array();
- $cachekey2 = array();
- foreach($fids as $v){
- $cachekey1[] = 'patharr_'.$v;
- $cachekey2[] = 'path_'.$v;
- }
- if(self::delete($fid)){
- $this->clear_cache($cachekey1);
- $this->clear_cache($cachekey2);
- return true;
- }
- return false;
- }
- /*public function delete_by_pathkey($pathkey){
- return DB::delete($this->_table,"pathkey = ".$pathkey);
- }*/
- //通过pathkey获取文件夹下级及自身fid
- public function fetch_folder_containfid_by_pfid($pfid){
- $pfids = array($pfid);
- $path = $this->fetch_pathby_pfid($pfid,true);
- $pathkey = $path['pathkey'];
- $results = DB::fetch_all("select * from %t where pathkey regexp %s",array($this->_table,'^'.$pathkey.'.+'));
- foreach($results as $v){
- $pfids[] = $v['fid'];
- }
- return $pfids;
- }
- public function fetch_by_path($path,$prefix=''){
- $opath = trim($path);
- $patharr = explode('/',$opath);
- $path = self::path_transferred_meaning($path);
- $uid = getglobal('uid');
- if($prefix){
- switch ($prefix){
- case 'g':
- $orgid = DB::result_first("select orgid from %t where orgname = %s and forgid = %d and `type` = %d",array('organization',$patharr[0],0,1));
- $path = 'dzz:gid_'.$orgid.':'.$path;
- $fid = DB::result_first("select fid from %t where path = %s ",array($this->_table,$path));
- break;
- case 'o':
- $orgid = DB::result_first("select orgid from %t where orgname = %s and forgid = %d and `type` = %d",array('organization',$patharr[0],0,0));
- $path = 'dzz:gid_'.$orgid.':'.$path;
- $fid = DB::result_first("select fid from %t where path = %s ",array($this->_table,$path));
- break;
- case 'c':
- $fid = 'c_'.DB::result_first("select id from %t where uid = %d and catname = %s",array('resources_cat',$uid,$patharr[0]));
- break;
- }
- }else{
- $upath = 'dzz:uid_'.$uid.':'.$opath;
- if(!$fid = DB::result_first("select p.fid from %t p left join %t f on p.fid = f.fid where p.path = %s and f.deldateline < 1 ",array($this->_table,'folder',$upath))){
- $fid = DB::result_first("select p.fid from %t p left join %t f on p.fid = f.fid where p.path regexp %s and f.deldateline < 1",array($this->_table,'folder','^dzz:.+:'.$path.'$'));
- }
- }
- return $fid;
- }
- //修改名称时文件夹路径调整
- public function update_path_by_fid($fid,$name){
- global $_G;
- $_G['neworgname'] = $name;
- $path = $this->fetch_pathby_pfid($fid);
- $paths = substr($path,0,-1);//去掉最后斜杠
- $pathname = preg_replace('/^dzz:.+:/','',$paths);//取出路径部分
- $patharr = explode('/',$pathname);//分割成数组
- $content = end($patharr);//取得目录最后一级名字
- $newpath = preg_replace_callback('/(.+?)'.$content.'$/',function($m){
- return $m[1].getglobal('neworgname').'/';
- },$paths);
- if($content != $name) $newpath = str_replace($content,$name,$path);
- else return true;
- $regpath = self::path_transferred_meaning($path);
- $cachkey1 = array();
- $cachkey2 = array();
- foreach(DB::fetch_all("select fid from %t where path regexp %s",array($this->_table,'^'.$regpath.'.*')) as $v){
- $cachkey1[] = 'patharr_'.$v['fid'];
- $cachkey2[] = 'path_'.$v['fid'];
- }
- $sql = "update %t set path = replace(path,%s,%s) where path regexp %s";
- if(DB::query($sql,array($this->_table,$path,$newpath,'^'.$regpath.'.*'))){
- $this->clear_cache($cachkey1);
- $this->clear_cache($cachkey2);
- return true;
- }else{
- return false;
- }
- }
- //修改文件位置时
- public function update_pathdata_by_fid($fid,$ofid,$noself = false){
- if($paths = $this->fetch_pathby_pfid($fid,true)){
- $opaths = $this->fetch_pathby_pfid($ofid,true);
- $path = dirname($paths['path']).'/';
- $opath = $opaths['path'];
- $pathkey = explode('-',$paths['pathkey']);
- array_pop($pathkey);
- $pathkey=implode('-',$pathkey);
- $opathkey = $opaths['pathkey'];
- $sql = "update %t set path = replace(path,%s,%s),pathkey = replace(pathkey,%s,%s) where path regexp %s";
- $paths['path'] = self::path_transferred_meaning($paths['path']);
- if($noself) $likepath = $paths['path'].'.+';
- else $likepath = $paths['path'].'.*';
- $cachkey1 = array();
- $cachkey2 = array();
- foreach(DB::fetch_all("select fid from %t where path regexp %s",array($this->_table,'^'.$likepath)) as $v){
- $cachkey1[] = 'patharr_'.$v['fid'];
- $cachkey2[] = 'path_'.$v['fid'];
- }
- if(DB::query($sql,array($this->_table,$path,$opath,$pathkey,$opathkey,'^'.$likepath))){
- $this->clear_cache($cachkey1);
- $this->clear_cache($cachkey2);
- return true;
- }else{
- return false;
- }
- }else{
- return false;
- }
-
-
- }
- //转义查询语句当中的path
- public function path_transferred_meaning($path){
- return str_replace(array('\'','(',')','+','^','$','{','}','[',']','#'),array("\'",'\(','\)','\+','\^','\$','\{','\}','\[','\]','\#'),$path);
- }
- //查询当前目录及其下级的fid
- public function get_child_fids($fid){
- $path = self::fetch_pathby_pfid($fid,true);
- $pathkey = $path['pathkey'];
- $fids = array();
- foreach(DB::fetch_all("select fid from %t where pathkey regexp %s",array($this->_table,'^'.$pathkey.'.*')) as $v){
- $fids[] = $v['fid'];
- }
- return $fids;
- }
- //获取文件夹的目录信息(路径及所在位置的顶级目录fid,其中路径不包含顶级目录)
- public function get_dirinfo_by_fid($fid){
- $result = array();
- $pathkeys = self::fetch_pathby_pfid($fid,true);
- $fids = str_replace('_','',$pathkeys['pathkey']);
- $fids = explode('-',$fids);
- $result['pfid'] = $fids[0];
- $path = preg_replace('/^dzz:(.+?):/','',$pathkeys['path']);
- $patharr = explode('/',$path);
- unset($patharr[0]);
- $result['path'] = implode('/',$patharr);
- return $result;
-
- }
- public function parse_path_get_rootdirinfo($path){
- $dirpath = explode('/',$path);
- $rootpath = $dirpath[0].'/';//根目录路径
- $rootfid = DB::result_first("select fid from %t where path = %s order by fid DESC",array($this->_table,self::path_transferred_meaning($rootpath)));
- if(!$rootfid){
- return false;
- }
- $path = str_replace($rootpath,'',$path);
- return array('path'=>$path,'pfid'=>$rootfid);
- }
-}
\ No newline at end of file
diff --git a/core/class/table/table_resources_permgroup.php b/core/class/table/table_resources_permgroup.php
deleted file mode 100644
index a6cb2ad..0000000
--- a/core/class/table/table_resources_permgroup.php
+++ /dev/null
@@ -1,72 +0,0 @@
-_table = 'resources_permgroup';
- $this->_pk = 'id';
-
- parent::__construct();
- }
- public function insert($setarr){
- if($setarr['default'] == 1){//删除原有默认值
- if($did = DB::result_first("select `id` from %t where `default` = %d",array($this->_table,1))){
- parent::update($did,array('default'=>0));
- }
- }
- if($insert = parent::insert($setarr,1)){
- return $insert;
- }
- return false;
- }
- public function update_by_id($id,$setarr){
- if($setarr['default'] == 1){//删除原有默认值
- if($did = DB::result_first("select id from %t where `default` = %d",array($this->_table,1))){
- parent::update($did,array('default'=>0));
- }
- }
- return parent::update($id,$setarr);
- }
- public function fetch_by_name($pername){
- return DB::result_first("select count(*) from %t where pername = %s",array($this->_table,$pername));
- }
- public function fetch_all($off = false){
- $params= array($this->_table);
- $wheresql = '';
- if($off){
- $wheresql = "where off != %d";
- $params[] = 1;
- }
- return DB::fetch_all("select * from %t $wheresql",$params);
- }
- public function update_off_status($id,$off){
- $id = intval($id);
- $off= intval($off);
- if(parent::fetch($id)){
- if(parent::update($id,array('off'=>$off))){
- return array('success'=>true);
- }
- }
- return array('error'=>true);
- }
- public function setdefault_by_id($id){
- $id = intval($id);
- if(!$id) return false;
- if($did = DB::fetch_first("select id from %t where `default` = %d",array($this->_table,1))){
- parent::update($did,array('default'=>0));
- }
- return parent::update($id,array('default'=>1));
- }
- public function delete_by_id($id){
- $id = intval($id);
- if(!$id) return false;
- if(parent::delete($id)){
- return true;
- }
- return false;
- }
-}
\ No newline at end of file
diff --git a/core/class/table/table_resources_recyle.php b/core/class/table/table_resources_recyle.php
deleted file mode 100644
index cd3fe66..0000000
--- a/core/class/table/table_resources_recyle.php
+++ /dev/null
@@ -1,332 +0,0 @@
-_table = 'resources_recyle';
- $this->_pk = 'id';
- parent::__construct();
- }
-
- //插入回收站文件
- public function insert_data($setarr)
- {
- $arr = array(
- 'rid' => $setarr['rid'],
- 'uid' => getglobal('uid'),
- 'username' => getglobal('username'),
- 'gid' => $setarr['gid'],
- 'filename' => $setarr['name'],
- 'size' => $setarr['size'],
- 'pfid' => $setarr['pfid'],
- 'deldateline' => $setarr['deldateline']
- );
- $path = C::t('resources_path')->fetch_pathby_pfid($arr['pfid']);
- $arr['pathinfo'] = $path;
- if ($cid = parent::insert($arr)) {
-
- if ($path) $path = preg_replace('/dzz:(.+?):/', '', $path);
- $hash = C::t('resources_event')->get_showtpl_hash_by_gpfid($setarr['pfid'], $setarr['gid']);
- $eventdata = array('username' => $arr['username'], 'filename' => $arr['filename'], 'position' => ($path) ? $path : '', 'hash' => $hash);
- if ($setarr['type'] == 'folder') {
-
- if (C::t('resources_event')->addevent_by_pfid($setarr['pfid'], 'delete_folder', 'delfolder', $eventdata, $setarr['gid'], $setarr['rid'], $setarr['name'])) {
- return true;
- } else {
- parent::delete($cid);
- return false;
- }
- } else {
- if (C::t('resources_event')->addevent_by_pfid($setarr['pfid'], 'delete_file', 'delfile', $eventdata, $setarr['gid'], $setarr['rid'], $setarr['name'])) {
- return true;
- } else {
- parent::delete($cid);
- return false;
- }
- }
-
- }
- }
-
- //查询群组回收站文件
- public function fetch_by_gid($gid)
- {
- $gid = intval($gid);
- $result = array();
- foreach (DB::fetch_all("select * from %t where gid = %d", array($this->_table, $gid)) as $v) {
- $v['info'] = C::t('resources')->fetch_by_rid($v['rid']);
- $v['info']['deldateline'] = dgmdate($v['info']['deldateline']);
- $result[] = $v;
- }
- return $result;
- }
-
- //查询回收站文件
- public function fetch_by_ids($ids)
- {
- if (!is_array($ids)) $ids = (array)$ids;
- $results = DB::fetch_all("select * from %t where id in(%n)", array($this->_table, $ids));
- return $results;
- }
-
- //查询有权限回收站文件:我删除的和我管理的群组的(其他普通用户删除的文件不列出=>即我有权限删除的)
- public function fetch_all_recycle_data()
- {
- global $_G;
- $uid = $_G['uid'];
- $recycles = array();
- $orgids = C::t('organization')->fetch_all_orgid();
- $manageorgid = $orgids['orgids_admin'];
- if ($results = DB::fetch_all("select * from %t where uid = %d or gid in(%n)", array($this->_table, $uid, $manageorgid))) {
- $recycles = $results;
- }
- return $recycles;
- }
-
- //查询回收站数据
- public function fetch_all_rid($pfids=array())
- {
- $rids = array();
- $wheresql = ' where 1 ';
- $params = array($this->table);
- if($pfids){
- $wheresql.=" and pfid IN (%n)";
- $params[]=$pfids;
- }
- $uid = getglobal('uid');
- //查询有管理权限的群组id
- $manageorg = C::t('organization')->fetch_all_manage_orgid();
- $manageorgid = array();
- foreach ($manageorg as $v) {
- $manageorgid[] = $v['orgid'];
- }
- $wheresql .= 'and uid = %d or gid in(%n)';
- $params[] = $uid;
- $params[] = $manageorgid;
- foreach (DB::fetch_all("select rid from %t $wheresql ", $params) as $v) {
- $rids[] = $v['rid'];
- }
- return $rids;
- }
-
- //查询回收站文件信息
- public function fetch_all_recycle($start = 0, $limit = 0, $condition = array(), $ordersql = '', $count = false)
- {
- global $_G;
- $limitsql = $limit ? DB::limit($start, $limit) : '';
- $wheresql = ' where 1 ';
- $params = array($this->table, 'resources', 'folder');
- //解析搜索条件
- if ($condition && is_string($condition)) {//字符串条件语句
- $wheresql .= $condition;
- } elseif (is_array($condition)) {
- foreach ($condition as $k => $v) {
- if (!is_array($v)) {
- $connect = 'and';
- $wheresql .= $connect . ' ' . $k . " = '" . $v . "' ";
- } else {
- $relative = isset($v[1]) ? $v[1] : '=';
- $connect = isset($v[2]) ? $v[2] : 'and';
- if ($relative == 'in') {
- $wheresql .= $connect . " " . $k . " " . $relative . " (%n) ";
- $params[] = $v[0];
- } elseif ($relative == 'stringsql') {
- $wheresql .= $connect . " " . $v[0] . " ";
- } elseif ($relative == 'like') {
- $wheresql .= $connect . " " . $k . " like %s ";
- $params[] = '%' . $v[0] . '%';
- } else {
- $wheresql .= $connect . ' ' . $k . ' ' . $relative . ' ' . $v[0] . ' ';
- }
-
- }
- }
- }
- $explorer_setting = get_resources_some_setting();
- $orgids = C::t('organization')->fetch_all_orgid();//获取所有有管理权限的部门
- $powerarr = perm_binPerm::getPowerArr();
- $or = array();
- //如果没有群组和网盘限制条件,默认查询我有权限管理的群组和我删除的文件
- if (!isset($condition['re.gid']) && !isset($condition['re.pfid'])) {
- $uid = $_G['uid'];
- if ($_G['adminid'] == 1) {
- if ($explorer_setting['useronperm']) {
- $or[] = '(re.uid = %d and re.gid = 0)';
- $params[] = $uid;
- }
- $gids = array_unique(array_merge($orgids['orgids_admin'], $orgids['orgids_member']));
- $or[] = ' (re.gid in (%n) )';
- $params[] = $gids;
-
- } else {
- if ($explorer_setting['useronperm']) {
- $or[] = '(re.uid = %d and re.gid = 0)';
- $params[] = $uid;
- }
-
- //我管理的群组或部门的文件
- if ($orgids['orgids_admin']) {
- $or[] = "r.gid IN (%n)";
- $params[] = $orgids['orgids_admin'];
- }
- //我参与的群组的文件
- if ($orgids['orgids_member']) {
- $or[] = "(re.gid IN(%n) and ((f.perm_inherit & %d) OR (re.uid=%d and f.perm_inherit & %d)))";
- $params[] = $orgids['orgids_member'];
- $params[] = $powerarr['delete2'];
- $params[] = $_G['uid'];
- $params[] = $powerarr['delete1'];
- }
-
- }
- } else {
- if ($_G['adminid'] != 1 && !in_array($_G['uid'], $orgids['orgids_admin'])) {
- $wheresql .= " and ((f.perm_inherit & %d) OR (re.uid=%d and f.perm_inherit & %d))";
- $params[] = $powerarr['delete2'];
- $params[] = $_G['uid'];
- $params[] = $powerarr['delete1'];
- }
- }
- if ($or) $wheresql .= " and (" . implode(' OR ', $or) . ")";
- if ($count) {
- return DB::result_first("select count(*) from %t re left join %t r on re.rid=r.rid left join %t f on re.pfid=f.fid $wheresql $ordersql $limitsql ", $params);
- }
- $selectfileds = "re.id,re.deldateline,re.username,re.filename,re.pathinfo,r.name,r.size,r.rid,re.pfid,r.type,r.pfid,r.oid,r.gid";
- foreach (DB::fetch_all("select $selectfileds from %t re
- left join %t r on re.rid=r.rid
- left join %t f on re.pfid=f.fid
- $wheresql $ordersql $limitsql ", $params) as $v) {
- if ($v['pathinfo']) {
- $path = preg_replace('/dzz:(.+?):/', '', $v['pathinfo']);
- $v['from'] = substr($path, 0, -1);
- }
- //计算最终删除时间
- $v['dpath'] = dzzencode($v['rid']);
- if ($explorer_setting['finallydelete'] > 0) {
- $endtime = intval($explorer_setting['finallydelete']);
- $dateend = strtotime("+" . $endtime . "day", $v['deldateline']);
- $v['finallydate'] = self::diffBetweenTwoDays($dateend);
- } else {
- $v['finallydate'] = '--';
- }
- $v['deldateline'] = dgmdate($v['deldateline'], 'Y-m-d');
- //获取文件图标
- $v['img'] = C::t('resources')->get_icosinfo_by_rid($v['rid']);
- //文件大小信息
- $v['fsize'] = ($v['size']) ? formatsize($v['size']) : 0;
- $v['isdelete'] = 1;
- $result[$v['rid']] = $v;
- }
- return $result;
- }
-
- //获取最终删除时间
- public function diffBetweenTwoDays($end)
- {
- $days = 0;
- $start = TIMESTAMP;
- if ($start < $end) {
- $days = floor(($start - $end) / 86400);
- }
- if ($days < 0) $days = 0;
- return $days;
- }
-
- //文件恢复
- public function recover_file_by_id($ids)
- {
- global $_G;
- $uid = $_G['uid'];
- if (!is_array($ids)) $ids = (array)$ids;
- $idarr = array();
- foreach ($ids as $id) {
- if (!$recyle = parent::fetch($id)) {
- continue;
- }
- $rid = $recyle['rid'];
- if (!$result = DB::fetch_first("select * from %t where rid = %s", array('resources', $rid))) {
- continue;
- }
- if ($result['gid'] > 0) {
- $pfid = $result['pfid'];
- $perm = perm_check::getPerm($result['pfid']);
- if ($perm > 0) {
- if (!perm_binPerm::havePower('delete2', $perm) && !(perm_binPerm::havePower('delete1', $perm) && $result['uid'] == $uid)) {
- continue;
- }
- }
- }
- if (DB::update('resources', array('isdelete' => 0, 'deldateline' => 0), array('rid' => $rid)) && parent::delete($id)) {
- $hash = C::t('resources_event')->get_showtpl_hash_by_gpfid($result['pfid'], $result['gid']);
- $eventdata = array(
- 'username' => getglobal('username'),
- 'filename' => $result['name'],
- 'hash' => $hash
- );
- if (C::t('resources_event')->addevent_by_pfid($result['pfid'], 'recover_file', 'recover', $eventdata, $result['gid'], $rid, $result['name'])) {
- $idarr[] = $id;
- } else {
- DB::update($this->_table, array('isdelete' => 1, 'deldateline' => $result['deldateline']), array('rid' => $rid));
- continue;
- }
-
- }
-
- }
- return $idarr;
- }
-
- public function fetch_by_rid($rid)
- {
- return DB::fetch_first("select * from %t where rid=%s", array($this->_table, $rid));
- }
-
- public function delete_by_rid($rid)
- {
- if (!is_array($rid)) $rid = (array)$rid;
- $rids = '';
- foreach ($rid as $v) {
- $rids .= "'" . $v . "',";
- }
- $rids = substr($rids, 0, -1);
- DB::delete($this->_table, "rid in (" . $rids . ")");
- return true;
- }
-
- //彻底删除
- public function delete_by_id($id)
- {
- if (!is_array($id)) $id = (array)$id;
- $ids = array();
- foreach ($id as $v) {
- if (!$recyle = parent::fetch($v)) {
- continue;
- }
- if (C::t('resources')->delete_by_rid($recyle['rid'])) {
- $ids[] = $v;
- }
- }
- return $ids;
- }
-
- //根据rid获取回收站数据
- public function get_data_by_rid($rid)
- {
- $rid = trim($rid);
- return DB::fetch_first("select * from %t where rid = %s", array($this->_table, $rid));
- }
-
- public function fetch_rid_bydate($date)
- {
- $rids = array();
- foreach (DB::fetch_all("select rid from %t where deldateline <= %s", array($this->_table, $date)) as $v) {
- $rids[] = $v['rid'];
- }
- return $rids;
- }
-}
\ No newline at end of file
diff --git a/core/class/table/table_resources_statis.php b/core/class/table/table_resources_statis.php
deleted file mode 100644
index a417950..0000000
--- a/core/class/table/table_resources_statis.php
+++ /dev/null
@@ -1,149 +0,0 @@
-_table = 'resources_statis';
- $this->_pk = 'rid';
- parent::__construct();
- }
- //根据fid增加统计数据
- public function add_statis_by_fid($fid,$setarr){
- global $_G;
- $uid = $_G['uid'];
- $fid = intval($fid);
- if(!DB::result_first("select count(*) from %t where fid = %d",array($this->_table,$fid))){
- $fileinfo = C::t('folder')->fetch($fid);
- $insertarr = array('editdateline'=>$fileinfo['dateline'],'pfid'=>$fileinfo['pfid'],'uid'=>$uid,'opendateline'=>$fileinfo['dateline'],'fid'=>$fid);
- if(!$insert = parent::insert($insertarr,1)){
- return false;
- }
- }
- $params = array($this->_table);
- $editsql = '';
- $editarr = array();
- //对有数据的进行修改
- foreach($setarr as $k=>$v){
- $increasearr = array('edits','views','downs');
- $editarr = array('uid','editdateline','opendateline','fid');
- if(in_array($k,$increasearr)){
- $editsql .= $k.'='.$k.'+'.$v.',';
- }elseif(in_array($k,$editarr)){
- $editsql .= $k.'=%d'.',';
- $params[] = $v;
- }
- }
- $editsql = substr($editsql,0,-1);
- $params[] = $fid;
- if($ret = DB::query("update %t set $editsql where fid = %d",$params)){
- return true;
- }
- return true;
- }
- //根据rid增加统计数据
- public function add_statis_by_rid($rids,$setarr){//增加统计数据
- global $_G;
- $uid = $_G['uid'];
- if(!is_array($rids)) $rids = (array)$rids;
-
- $statis = array();
- $statisrid = array();
- //查询rid数组,判断当前$rids数组是否在数据库已经有数据
- $statisrids = DB::fetch_all("select rid from %t where rid in(%n)",array($this->_table,$rids));
- foreach($statisrids as $v){
- $statisrid[] = $v['rid'];
- }
- foreach($rids as $v){
- if(!in_array($v,$statisrid)){
- $statis[] = $v;
- }
- }
- //无数据的进行创建
- if($statis){
- foreach($statis as $v){
- $fileinfo = C::t('resources')->fetch_info_by_rid($v);
- $insertarr = array('rid'=>$v,'editdateline'=>$fileinfo['dateline'],'pfid'=>$fileinfo['pfid'],'uid'=>$uid,'opendateline'=>$fileinfo['dateline']);
- if($fileinfo['oid'] && $fileinfo['type'] == 'folder') $insertarr['oid'];
- if(!parent::insert($insertarr,1)){
- $index = array_search($v,$rids);
- unset($rids[$index]);
- }
- }
- }
-
- $params = array($this->_table);
- $editsql = '';
- //对有数据的进行修改
- foreach($setarr as $k=>$v){
- $increasearr = array('edits','views','downs');
- $editarr = array('uid','editdateline','opendateline','fid');
- if(in_array($k,$increasearr)){
- $editsql .= $k.'='.$k.'+'.$v.',';
- }elseif(in_array($k,$editarr)){
- $editsql .= $k.'=%d'.',';
- $params[] = $v;
- }
- }
- $editsql = substr($editsql,0,-1);
- $wheresql = ' where rid in (%n)';
- $params[] = $rids;
- if(DB::query("update %t set $editsql $wheresql",$params)){
- return true;
- }
- return true;
- }
- public function delete_by_rid($rid){
- if(!is_array($rid)) $rid = (array)$rid;
- return DB::delete($this->_table,'rid in('.dimplode($rid).')');
- }
-
- public function fetch_by_fid($fid){
- $fid = intval($fid);
- return DB::fetch_first("select * from %t where fid = %d",array($this->_table,$fid));
- }
- public function fetch_by_rid($rid){
- $rid = trim($rid);
- return DB::fetch_first("select * from %t where rid = %s",array($this->_table,$rid));
- }
- //最近使用文件夹
- public function fetch_folder_by_uid($limit = 5){
- global $_G;
- $uid = getglobal('uid');;
- $folderdata = array();
- $orderby = ' order by edits desc,views desc,editdateline desc,opendateline desc';
- $limitsql = ' limit '.$limit;
- $folders = DB::fetch_all("select * from %t where uid = %d and fid != 0 and rid != '' $orderby $limitsql",array($this->_table,$uid));
- return $folders;
- }
-
- //最近使用的文件
- public function fetch_files_by_uid($limit = 20){
- global $_G;
- $uid = getglobal('uid');
- $data = array();
- $param = array($this->_table,$uid);
- $wheresql = " where uid = %d and fid = 0 and rid != '' ";
-
- $orderby = ' order by edits desc,views desc,editdateline desc,opendateline desc';
- $limitsql = ' limit '.$limit;
- $files = DB::fetch_all("select * from %t $wheresql $orderby $limitsql",$param);
- return $files;
-
- }
- public function fetch_recent_files_by_uid($limit =100){
- $files = self::fetch_files_by_uid();
- $folders = self::fetch_folder_by_uid();
- $results = array();
- foreach($folders as $v){
- $results[] = $v;
- }
- foreach($files as $v){
- $results[] = $v;
- }
- return $results;
- }
-}
\ No newline at end of file
diff --git a/core/class/table/table_resources_tag.php b/core/class/table/table_resources_tag.php
deleted file mode 100644
index 16ad999..0000000
--- a/core/class/table/table_resources_tag.php
+++ /dev/null
@@ -1,180 +0,0 @@
-_table = 'resources_tag';
- parent::__construct();
- }
-
- public function delete_by_rid($rid, $tid = '',$event=1)
- {
-
- global $_G;
-
-
- $tids = array();
- $deltagnames=array();
- if ($tid) {
- // return DB::delete($this->_table, 'rid in(' . dimplode($rid) . ') and tid = ' . $tid);
- $tids=array($tid);
- } else {
- foreach (DB::fetch_all("select tid from %t where rid = %s", array($this->_table, $rid)) as $v) {
- $tids[] = $v['tid'];
- }
- }
- if($tids){
- foreach(C::t('tag')->fetch_all($tids) as $tag){
- $deltagnames[]=$tag['tagname'];
- }
- }
- if($ret=DB::delete($this->_table, "rid ='{$rid}' and tid IN(".dimplode($tids).")")){
- //减少使用数
- C::t('tag')->addhot_by_tid($tids, -1);
- if($event){
- //添加动态
- $uid = $_G['uid'];
- $username = $_G['username'];
- //查询文件信息
- if (!$fileinfo = DB::fetch_first("select * from %t where rid = %s", array('resources', $rid))) {
- return false;
- } else {
- $path = C::t('resources_path')->fetch_pathby_pfid($fileinfo['pfid']);
- $path = preg_replace('/dzz:(.+?):/', '', $path . $fileinfo['name']);
- }
- $eventdata = array('username' => $username, 'filename' => $fileinfo['name'], 'tagname' => implode(',', $deltagnames), 'position' => $path);
- C::t('resources_event')->addevent_by_pfid($fileinfo['pfid'], 'del_tags', 'deltag', $eventdata, $fileinfo['gid'], $rid, $fileinfo['name']);
- }
- }
- return true;
- }
-
-
- public function insert_data($rid, $tagnames,$isall=1,$idtype='explorer')
- {
- global $_G;
- $uid = $_G['uid'];
- $username = $_G['username'];
- //查询文件信息
- if (!$fileinfo = DB::fetch_first("select * from %t where rid = %s", array('resources', $rid))) {
- return false;
- } else {
- $path = C::t('resources_path')->fetch_pathby_pfid($fileinfo['pfid']);
- $path = preg_replace('/dzz:(.+?):/', '', $path . $fileinfo['name']);
- }
- //获取文件原有标签数据
- $return = DB::fetch_all("select rt.tid,t.tagname from %t rt left join %t t on rt.tid = t.tid where rt.rid = %s", array($this->_table, 'tag', $rid));
-
- $addtags = $deleted = $deltids = $nochangetids = $deltags = array();
- //获取标签数据
- $tags = C::t('tag')->insert_data($tagnames, $idtype);
- $tids = array();
- foreach ($tags as $v) {
- $tids[] = $v['tid'];
- }
- foreach ($return as $v) {
- if (!in_array($v['tid'], $tids)) {
- $deltids[] = $v['tid'];
- $deleted[] = array('tid' => $v['tid'], 'tagname' => $v['tagname']);
- $deltagnames[] = $v['tagname'];
- } else {
- $nochangetids[] = $v['tid'];
- }
- }
- //需要移除的标签
- if ($isall && count($deltids)) {
- //移除文件标签
- DB::query("delete from %t where rid = %s and tid in(%n)", array($this->_table, $rid, $deltids));
- //减少使用数
- C::t('tag')->addhot_by_tid($deltids, -1);
- //添加动态
- $eventdata = array('username' => $username, 'filename' => $fileinfo['name'], 'tagname' => implode(',', $deltagnames), 'position' => $path);
- C::t('resources_event')->addevent_by_pfid($fileinfo['pfid'], 'del_tags', 'deltag', $eventdata, $fileinfo['gid'], $rid, $fileinfo['name']);
- }
- //获取需要添加的标签
- $addtids = (count($nochangetids) > 0) ? array_diff($tids, $nochangetids) : $tids;
- if (count($addtids)) {
- $addtagnames = array();
- $insertsql = "insert into " . DB::table('resources_tag') . " (rid,tid,uid,username) values ";
- foreach ($addtids as $v) {
- $insertsql .= "(%s,%d,%d,%s),";
- $params[] = $rid;
- $params[] = $v;
- $params[] = $uid;
- $params[] = $username;
- $addtagnames[] = $tags[$v]['tagname'];
- $addtags[] = array('tid' => $v, 'tagname' => $tags[$v]['tagname']);
- }
- $insertsql = substr($insertsql, 0, -1);
- //添加文件标签
- DB::query($insertsql, $params);
- //增加标签使用数
- C::t('tag')->addhot_by_tid($addtids, 1);
-
- $addtagnames = implode(',', $addtagnames);
- $hash = C::t('resources_event')->get_showtpl_hash_by_gpfid($fileinfo['pfid'], $fileinfo['gid']);
- $eventdata = array('username' => $username, 'filename' => $fileinfo['name'], 'tagname' => $addtagnames, 'position' => $path, 'hash' => $hash);
- C::t('resources_event')->addevent_by_pfid($fileinfo['pfid'], 'add_tags', 'addtag', $eventdata, $fileinfo['gid'], $rid, $fileinfo['name']);
- }
- return array('success' => true, 'add' => $addtags, 'del' => $deleted);
- }
-
- public function fetch_tag_by_rid($rid)
- {
- $rid = trim($rid);
- $result = array();
- if ($result = DB::fetch_all("select rt.tid,t.tagname from %t rt left join %t t on rt.tid = t.tid where rt.rid = %s and t.idtype = %s", array($this->_table, 'tag', $rid, 'explorer'))) {
- return $result;
- }
- return $result;
- }
-
- public function fetch_rid_in_tid($tids)
- {
- if (!is_array($tids)) $tids = (array)$tids;
- $rids = array();
- foreach (DB::fetch_all("select rid from %t where tid in(%n)", array($this->_table, $tids)) as $v) {
- $rids[] = $v['rid'];
- }
- return $rids;
- }
-
- public function fetch_rid_by_tid($tids)
- {
- if (!is_array($tids)) $tids = (array)$tids;
- $arr = array();
- //获取标签对应的所有rid
- if ($rids = DB::fetch_all("select rid,tid from %t where tid in(%n)", array($this->_table, $tids))) {
- //遍历rid数组组成tid为键的数组
- $ridarr = array();
- foreach ($rids as $v) {
- $ridarr[$v['tid']][] = $v['rid'];
- }
- //如果rid数组和tid数组数量一致,即有符合条件rid(含有所有标签的rid)
- if (count($ridarr) == count($tids)) {
- $i = 0;
- //遍历rid数组取交集,得到最后结果
- foreach ($ridarr as $k => $val) {
- if ($i == 0) {
- $arr = $val;
- } else {
- $arr = array_intersect($arr, $val);
- }
- $i++;
- }
- return $arr;
- } else {
- return $arr;
- }
- } else {
- return $arr;
-
- }
- }
-
-}
\ No newline at end of file
diff --git a/core/class/table/table_resources_version.php b/core/class/table/table_resources_version.php
deleted file mode 100644
index 3da07f1..0000000
--- a/core/class/table/table_resources_version.php
+++ /dev/null
@@ -1,452 +0,0 @@
-_table = 'resources_version';
- $this->_pk = 'vid';
- $this->_pre_cache_key = 'resources_version_';
- $this->_cache_ttl = 5 * 60;
- parent::__construct();
- }
- //获取文件图标
- public function getfileimg($data){
- if($data['type']=='image'){
- $data['img']=DZZSCRIPT.'?mod=io&op=thumbnail&size=small&path='.dzzencode('attach::'.$data['aid']);
- }elseif($data['type']=='attach' || $data['type']=='document'){
- $data['img']=geticonfromext($data['ext'],$data['type']);
- }elseif($data['type']=='dzzdoc'){
- $data['img']=isset($data['img'])?$data['img']:geticonfromext($data['ext'],$data['type']);
- }else{
- $data['img']=isset($data['img'])?$data['img']:geticonfromext($data['ext'],$data['type']);
- }
- return $data['img'];
- }
- public function fetch_all_by_rid($rid,$limit = '',$count = false){
- $rid = trim($rid);
- $versions = array();
- $resources = C::t('resources')->fetch_info_by_rid($rid);
- $limitsql = '';
- if($limit){
- $limitarr = explode('-',$limit);
- if(count($limitarr) > 1){
- $limitsql = "limit $limitarr[0],$limitarr[1]";
- }else{
- $limitsql = "limit 0,$limitarr[0]";
- }
- }/*else{
- $cachekey = 'resourcesversiondata_'.$rid;
- if($versions = $this->fetch_cache($cachekey)){
- return $versions;
- }
- }*/
- if($count){
- return DB::result_first("select count(*) from %t where rid = %s",array($this->_table,$rid));
- }
- if($resources['vid'] == 0){
- $attrdata = C::t('resources_attr')->fetch_by_rid($rid,0);
- $filedata = array(
- 'vid' =>0,
- 'rid'=>$rid,
- 'uid'=>$resources['uid'],
- 'username'=>$resources['username'],
- 'vname'=>'',
- 'aid'=>$attrdata['aid'],
- 'type'=>$resources['type'],
- 'ext'=>$resources['ext'],
- 'size'=>$resources['size'],
- 'dateline'=>$resources['dateline'],
- 'img'=>$attrdata['img']
- );
- $filedata['img'] = self::getfileimg($filedata);
- $versions[$filedata['vid']] = $filedata;
- }else{
- foreach(DB::fetch_all("select * from %t where rid = %s order by dateline desc $limitsql ",array($this->_table,$rid)) as $val){
- $attrdata = C::t('resources_attr')->fetch_by_rid($rid,$val['vid']);
- $val['img'] = isset($attrdata['img']) ?$attrdata['img']:'';
- $filedata = $val;
- $filedata['img'] = self::getfileimg($filedata);
- $versions[$val['vid']] = $filedata;
- }
- }
- //$this->store_cache($cachekey,$versions);
- return $versions;
- }
- public function delete_by_vid($vid,$rid){
- $vid = intval($vid);
- $cachekey = 'resourcesversiondata_'.$rid;
- $datainfo = C::t('resources')->fetch_info_by_rid($rid);
- $vinfo = parent::fetch($vid);
- if(parent::delete($vid)){
- SpaceSize(-$vinfo['size'],$datainfo['gid'],1,$datainfo['uid']);
- C::t('resources_attr')->delete_by_rvid($rid,$vid);
- $this->clear_cache($cachekey);
- }
- return true;
-
- }
- /* public function delete_by_version($icoid,$vid){
- global $_G ;
- $cachekey = 'resourcesversiondata_'.$icoid;
- if(parent::delete($vid)){
- C::t('resources_attr')->delete_by_rvid($icoid,$vid);
- //DB::delete('resources_attr',array('rid'=>$icoid,'vid'=>$vid));
- $eventdata = array(
- 'rid'=>$icoid,
- 'uid'=>$_G['uid'],
- 'username'=>$_G['username'],
- 'event_body'=>'delete_version',
- 'body_data'=>serialize(array('version'=>$vid)),
- 'dateline'=>TIMESTAMP,
- );
- DB::insert('resources_event',$eventdata);
- $v = DB::result_first("select vid from %t where rid=%s order by dateline DESC ",array($this->_table,$icoid));
- C::t('resources')->update($icoid,array('vid',$v));
- return array('msg'=>$v);
- }else return array('error'=>lang('error_delete_version_failed'));
- }*/
- public function delete_by_rid($rid){
- if(!$return = DB::fetch_all("select * from %t where rid = %s",array($this->_table,$rid))){
- return ;
- }
- $cachekey = 'resourcesversiondata_'.$rid;
- $aids = array();
- foreach($return as $v){
- $aids[] = $v['aid'];
- }
- if(!empty($aids)){
- C::t('attachment')->addcopy_by_aid($aids,-1);
- }
- DB::delete($this->_table,array('rid'=>$rid));
- $this->clear_cache($cachekey);
- }
- //上传新版本
- public function add_new_version_by_rid($rid,$setarr,$force=false){
- global $_G,$documentexts;
- $cachekey = 'resourcesversiondata_'.$rid;
- if(!$resources = C::t('resources')->fetch_info_by_rid($rid)){
- return array('error'=>lang('file_not_exist'));
- }
- //检测权限
- if (!$force && !perm_check::checkperm_Container($resources['pfid'], 'edit2') && !( $_G['uid'] == $resources['uid'] && perm_check::checkperm_Container($resources['pfid'], 'edit1'))) {
- return array('error'=>lang('no_privilege'));
- }
- //文件类型获取
- $imgexts = array('jpg', 'jpeg', 'gif', 'png', 'bmp');
- if (in_array(strtolower($setarr['ext']), $imgexts)){
- $setarr['type'] = 'image';
- }elseif(in_array(strtoupper($setarr['ext']), $documentexts)){
- $setarr['type'] = 'document';
- }else{
- $setarr['type'] = 'attach';
- }
-
- //没有版本时,属性表和版本数据处理
- if($resources['vid'] == 0){
- $oldattr = C::t('resources_attr')->fetch_by_rid($rid);
- $setarr1 = array(
- 'rid'=>$rid,
- 'uid'=>$resources['uid'],
- 'username'=>$resources['username'],
- 'vname'=>'',
- 'size'=>$resources['size'],
- 'ext'=>$resources['ext'],
- 'type'=>$resources['type'],
- 'dateline'=>$resources['dateline'],
- 'aid'=>intval($oldattr['aid'])
- );
- //将原数据插入版本表
- if($oldvid = parent::insert($setarr1,1)){
- C::t('resources_attr')->update_vid_by_rvid($rid,0,$oldvid);
- }else{
- return array('error'=>lang('failure'));
- }
- }
-
- //文件名
- $filename = $setarr['name'];
- $filename = self::getFileName($setarr['name'],$resources['pfid'],$rid);
- unset($setarr['name']);
- $setarr['rid'] = $rid;
-
- //新数据插入版本表
- if($vid = parent::insert($setarr,1)){
- $this->clear_cache($cachekey);
- //更新主表数据
- //DB::update('resources',array('vid'=>$vid,'size'=>$setarr['size'],'ext'=>$setarr['ext'],'type'=>$setarr['type'],'name'=>$filename),array('rid'=>$rid))
- if(C::t('resources')->update_by_rid($rid,array('vid'=>$vid,'size'=>$setarr['size'],'ext'=>$setarr['ext'],'type'=>$setarr['type'],'name'=>$filename))){
- SpaceSize($setarr['size'],$resources['gid'],true);
- //插入属性表数据
- $sourceattrdata = array(
- 'postip' => $_G['clientip'],
- 'title' => $filename,
- 'aid' => isset($setarr['aid']) ? $setarr['aid'] : '',
- 'img'=>geticonfromext($setarr['ext'],$setarr['type'])
- );
- //插入属性表
- if (C::t('resources_attr')->insert_attr($rid,$vid,$sourceattrdata)) {
- if ($setarr['aid']) {
- $attach = C::t('attachment')->fetch($setarr['aid']);
- C::t('attachment')->update($setarr['aid'], array('copys' => $attach['copys'] + 1));//增加使用数
- }
- }
- //记录事件
- $path = C::t('resources_path')->fetch_pathby_pfid($resources['pfid']);
- $path = preg_replace('/dzz:(.+?):/','',$path);
- $event = 'update_version';
- $eventdata = array(
- 'title' => $resources['name'],
- 'aid' => $setarr['aid'],
- 'username' => $setarr['username'],
- 'uid' => $setarr['uid'],
- 'position'=>$path
- );
- C::t('resources_event')->addevent_by_pfid($resources['pfid'], $event, 'updatevesion', $eventdata, $resources['gid'], $rid, $resources['name']);
- //增加统计数据
- $statis = array(
- 'edits'=>1,
- 'uid'=>$_G['uid'],
- 'editdateline'=>TIMESTAMP
- );
- c::t('resources_statis')->add_statis_by_rid($rid,$statis);
- $setarr['fdateline'] = dgmdate($setarr['dateline'],'Y-m-d H:i:s');
- $setarr['vid'] = $vid;
- $setarr['size'] = formatsize($setarr['size']);
- if($resources['vid'] == 0){
- $setarr['olddatavid'] = $oldvid;
- }
- $indexarr = array('rid'=>$rid);
- Hook::listen('createafter_addindex',$indexarr);
- $setarr['dpath'] = dzzencode($rid);
- return $setarr;
- }else{
- parent::delete($vid);
- return array('error'=>lang('failure'));
- }
- }
-
- }
- //设置主版本
- public function set_primary_version_by_vid($vid){
- global $_G;
- if(!$versioninfo = parent::fetch($vid)){
- return array('error'=>lang('file_not_exist'));
- }
- if(!$fileinfo = C::t('resources')->fetch($versioninfo['rid'])) return array('error'=>lang('file_not_exist'));
-
- //判断编辑权限
- if (!perm_check::checkperm_Container($fileinfo['pfid'], 'edit2') && !($_G['uid'] == $fileinfo['uid'] && perm_check::checkperm_Container($fileinfo['pfid'], 'edit1'))) {
- return array('error'=>lang('no_privilege'));
- }
-
- $vfilename = DB::result_first("select sval from %t where vid = %d and rid = %s and skey = %s",array('resources_attr',$vid,$versioninfo['rid'],'title'));
-
- //获取不重复的名字
- $filename = self::getFileName($vfilename,$fileinfo['pfid'],$versioninfo['rid']);
- if(!$filename){
- $filename = $versioninfo['vname'];
- if($filename != $vfilename){
- C::t('resources_attr')->update_by_skey($fileinfo['rid'],$vid,array('title'=>$filename));
- }
- }
- //更改resources表数据
- $updatearr = array('vid'=>$vid,'name'=>$filename,'size'=>$versioninfo['size'],'ext'=>$versioninfo['ext'],'type'=>$versioninfo['type']);
- //DB::update('resources',$updatearr,array('rid'=>$versioninfo['rid']))
- if(C::t('resources')->update_by_rid($versioninfo['rid'],$updatearr)){
- //文件路径信息
- $path = C::t('resources_path')->fetch_pathby_pfid($fileinfo['pfid']);
- $path = preg_replace('/dzz:(.+?):/','',$path);
- $event = 'setprimary_version';
- $hash = C::t('resources_event')->get_showtpl_hash_by_gpfid($fileinfo['pfid'],$fileinfo['gid']);
- $eventdata = array(
- 'name' => $filename,
- 'oldname'=>$fileinfo['name'],
- 'aid' => $versioninfo['aid'],
- 'username' => $_G['username'],
- 'uid' => $_G['uid'],
- 'position'=>$path,
- 'hash'=>$hash
- );
- $statis = array(
- 'edits'=>1,
- 'uid'=>$_G['uid'],
- 'editdateline'=>TIMESTAMP
- );
- C::t('resources_statis')->add_statis_by_rid($versioninfo['rid'],$statis);
- C::t('resources_event')->addevent_by_pfid($fileinfo['pfid'], $event, 'setprimaryversion', $eventdata, $fileinfo['gid'], $fileinfo['rid'], $fileinfo['name']);
- $indexarr = array('rid'=>$versioninfo['rid']);
- Hook::listen('createafter_addindex',$indexarr);
- return array('rid'=>$versioninfo['rid']);
- }else{
- return array('error'=>lang('explorer_do_failed'));
- }
-
- }
- //判断文件重名
- public function getFileName($name,$pfid,$rid = ''){
- static $i=0;
- $params = array('resources',$name,$pfid);
- $wheresql = '';
- if($rid){
- $wheresql .= " and rid != %s ";
- $params[] = $rid;
- }
- $name=self::name_filter($name);
- if(DB::result_first("select COUNT(*) from %t where type!='folder' and name=%s and isdelete<1 and pfid=%d $wheresql",$params)){
- $ext='';
- $namearr=explode('.',$name);
- if(count($namearr)>1){
- $ext=$namearr[count($namearr)-1];
- unset($namearr[count($namearr)-1]);
- $ext=$ext?('.'.$ext):'';
- }
- $tname=implode('.',$namearr);
- $name=preg_replace("/\(\d+\)/i",'',$tname).'('.($i+1).')'.$ext;
- $i+=1;
- return self::getFileName($name,$pfid,$rid);
- }else{
- return $name;
- }
- }
- //过滤文件名称
- public function name_filter($name){
- return str_replace(array('/','\\',':','*','?','<','>','|','"',"\n"),'',$name);
- }
-
- //根据版本id修改版本名称
- public function update_versionname_by_vid($vid,$vname){
- global $_G;
- if(!$versioninfo = parent::fetch($vid)){
- return array('error'=>lang('file_not_exist'));
- }
- $cachekey = 'resourcesversiondata_'.$versioninfo['rid'];
- if(DB::result_first("select count(*) from %t where vname = %s and rid = %s",array($this->_table,$vname,$versioninfo['rid'])) > 0 ){
- return array('error'=>lang('explorer_name_repeat'));
- }
- //文件基本信息
- $fileinfo = C::t('resources')->fetch_info_by_rid($versioninfo['rid']);
-
- //判断编辑权限
- if (!perm_check::checkperm_Container($fileinfo['pfid'], 'edit2') && !($_G['uid'] == $fileinfo['uid'] && perm_check::checkperm_Container($fileinfo['pfid'], 'edit1'))) {
- return array('error'=>lang('no_privilege'));
- }
- $sertarr = array('vname'=>$vname,'dateline'=>TIMESTAMP);
- if(parent::update($vid,$sertarr)){
- $path = C::t('resources_path')->fetch_pathby_pfid($fileinfo['pfid']);
- $path = preg_replace('/dzz:(.+?):/','',$path);
- $event = 'edit_versionname';
- $hash = C::t('resources_event')->get_showtpl_hash_by_gpfid($fileinfo['pfid'],$fileinfo['gid']);
- $eventdata = array(
- 'name' => $vname,
- 'filename'=>$fileinfo['name'],
- 'username' => $_G['username'],
- 'oldvname'=>($versioninfo['name']) ? $versioninfo['name']:dgmdate($versioninfo['dateline'],'Y-m-d H:i:s'),
- 'uid' => $_G['uid'],
- 'position'=>$path,
- 'hash'=>$hash
- );
- $statis = array(
- 'edits'=>1,
- 'uid'=>$_G['uid'],
- 'editdateline'=>TIMESTAMP
- );
- C::t('resources_statis')->add_statis_by_rid($versioninfo['rid'],$statis);
- C::t('resources_event')->addevent_by_pfid($fileinfo['pfid'], $event, 'editversionname', $eventdata, $fileinfo['gid'], $fileinfo['rid'], $fileinfo['name']);
- $this->clear_cache($cachekey);
- $this->clear_cache($versioninfo['rid']);
- return array('vid'=>$vid,'primaryvid'=>$fileinfo['vid'],'fdateline'=>dgmdate($versioninfo['dateline'],'Y-m-d H:i:s'));
- }else{
- return array('error'=>lang('explorer_do_failed'));
- }
- }
-
- //根据rid修改版本名称,因版本表无数据,需先将主表数据放入版本表,然后更新主表和属性表
- public function update_versionname_by_rid($rid,$vname){
- global $_G;
- if(!$fileinfo = C::t('resources')->fetch_info_by_rid($rid)){
- return array('error'=>lang('file_not_exist'));
- }
-
- //判断编辑权限
- if (!perm_check::checkperm_Container($fileinfo['pfid'], 'edit2') && !($_G['uid'] == $fileinfo['uid'] && perm_check::checkperm_Container($fileinfo['pfid'], 'edit1'))) {
- return array('error'=>lang('no_privilege'));
- }
- //没有版本时,属性表和版本数据处理
- $setarr = array(
- 'rid'=>$rid,
- 'uid'=>$fileinfo['uid'],
- 'username'=>$fileinfo['username'],
- 'vname'=>$vname,
- 'size'=>$fileinfo['size'],
- 'ext'=>$fileinfo['ext'],
- 'type'=>$fileinfo['type'],
- 'dateline'=>TIMESTAMP
- );
- //将数据插入版本表
- if($vid = parent::insert($setarr,1)){
- //更新属性表数据
- //DB::update('resources_attr',array('vid'=>$vid),array('rid'=>$rid,'vid'=>0));
- C::t('resources_attr')->update_by_skey($rid,0,array('vid'=>$vid));
- //更新主表数据
- //DB::update('resources',array('vid'=>$vid),array('rid'=>$rid))
- if(C::t('resources')->update_by_rid($rid,array('vid'=>$vid))){
-
- $path = C::t('resources_path')->fetch_pathby_pfid($fileinfo['pfid']);
- $path = preg_replace('/dzz:(.+?):/','',$path);
- $event = 'edit_versionname';
- $vfilename = DB::result_first("select sval from %t where vid = %d and rid = %s and skey = %s",array('resources_attr',$vid,$fileinfo['rid'],'title'));
- $hash = C::t('resources_event')->get_showtpl_hash_by_gpfid($fileinfo['pfid'],$fileinfo['gid']);
- $eventdata = array(
- 'name' => $vname,
- 'filename'=>$fileinfo['name'],
- 'username' => $_G['username'],
- 'oldvname'=>($fileinfo['name']) ? $fileinfo['name']:dgmdate($fileinfo['dateline'],'Y-m-d H:i:s'),
- 'uid' => $_G['uid'],
- 'position'=>$path,
- 'hash'=>$hash
- );
- $statis = array(
- 'edits'=>1,
- 'uid'=>$_G['uid'],
- 'editdateline'=>TIMESTAMP
- );
- C::t('resources_statis')->add_statis_by_rid($fileinfo['rid'],$statis);
- C::t('resources_event')->addevent_by_pfid($fileinfo['pfid'], $event, 'editversionname', $eventdata, $fileinfo['gid'], $fileinfo['rid'], $fileinfo['name']);
- return array('vid'=>$vid,'primaryvid'=>$fileinfo['vid'],'fdateline'=>dgmdate($setarr['dateline'],'Y-m-d H:i:s'));
- }else{
- parent::delete($vid);
- return array('error'=>lang('explorer_do_failed'));
- }
- }else{
- return array('error'=>lang('explorer_do_failed'));
- }
- }
- public function get_versioninfo_by_rid_vid($rid,$vid=0){
- $rid = trim($rid);
- $vid = intval($vid);
- if(!$rid) return ;
- if(!$vid){
- return C::t('resources')->fetch_info_by_rid($rid);
- }
- return DB::fetch_first("select * from %t where rid = %s and vid = %d",array($this->_table,$rid,$vid));
- }
- public function fetch_version_by_rid_vid($rid,$vid){
- $rid = trim($rid);
- $vid = intval($vid);
- $data = array();
- if(!$data = C::t('resources')->fetch_info_by_rid($rid)){
- return $data;
- }
- $versiondata = DB::fetch_first("select * from %t where rid = %s and vid = %d",array($this->_table,$rid,$vid));
- $data = array_merge($data,$versiondata);
- $attrdata = C::t('resources_attr')->fetch_by_rid($rid,$vid);
- $data = array_merge($data,$attrdata);
- $data['icoid'] = dzzencode('attach::' . $data['aid']);
- return $data;
- }
-
-}
\ No newline at end of file
diff --git a/core/class/table/table_session.php b/core/class/table/table_session.php
deleted file mode 100644
index ead39d0..0000000
--- a/core/class/table/table_session.php
+++ /dev/null
@@ -1,128 +0,0 @@
-_table = 'session';
- $this->_pk = 'sid';
-
- parent::__construct();
- }
-
- public function fetch($sid, $ip = false, $uid = false) {
- if(empty($sid)) {
- return array();
- }
- $this->checkpk();
- $session = parent::fetch($sid);
- if($session && $ip !== false && $ip != "{$session['ip']}") {
- $session = array();
- }
- if($session && $uid !== false && $uid != $session['uid']) {
- $session = array();
- }
- return $session;
- }
- public function fetch_member($ismember = 0, $invisible = 0, $start = 0, $limit = 0) {
- $sql = array();
- if($ismember === 1) {
- $sql[] = 'uid > 0';
- } elseif($ismember === 2) {
- $sql[] = 'uid = 0';
- }
- if($invisible === 1) {
- $sql[] = 'invisible = 1';
- } elseif($invisible === 2) {
- $sql[] = 'invisible = 0';
- }
- $wheresql = !empty($sql) && is_array($sql) ? ' WHERE '.implode(' AND ', $sql) : '';
- $sql = 'SELECT * FROM %t '.$wheresql.' ORDER BY lastactivity DESC'.DB::limit($start, $limit);
- return DB::fetch_all($sql, array($this->_table), $this->_pk);
- }
-
- public function count_invisible($type = 1) {
- return DB::result_first('SELECT COUNT(*) FROM %t WHERE invisible=%d', array($this->_table, $type));
- }
-
- public function count($type = 0) {
- $condition = $type == 1 ? ' WHERE uid>0 ' : ($type == 2 ? ' WHERE uid=0 ' : '');
- return DB::result_first("SELECT count(*) FROM ".DB::table($this->_table).$condition);
-
- }
-
- public function delete_by_session($session, $onlinehold, $guestspan) {
- if(!empty($session) && is_array($session)) {
- $onlinehold = time() - $onlinehold;
- $guestspan = time() - $guestspan;
- $session = daddslashes($session);
-
- $condition = " sid='{$session[sid]}' ";
- $condition .= " OR lastactivity<$onlinehold ";
- $condition .= " OR (uid='0' AND ".DB::field('ip', $session['ip'])." AND lastactivity>$guestspan) ";
- $condition .= $session['uid'] ? " OR (uid='{$session['uid']}') " : '';
- DB::delete('session', $condition);
- }
- }
- public function fetch_by_uid($uid) {
- return !empty($uid) ? DB::fetch_first('SELECT * FROM %t WHERE uid=%d', array($this->_table, $uid)) : false;
- }
-
- public function fetch_all_by_uid($uids, $start = 0, $limit = 0) {
- $data = array();
- if(!empty($uids)) {
- $data = DB::fetch_all('SELECT * FROM %t WHERE '.DB::field('uid', $uids).DB::limit($start, $limit), array($this->_table), null, 'uid');
- }
- return $data;
- }
-
- public function update_max_rows($max_rows) {
- return DB::query('ALTER TABLE '.DB::table('session').' MAX_ROWS='.dintval($max_rows));
- }
-
- public function clear() {
- return DB::query('DELETE FROM '.DB::table('session'));
- }
-
- public function count_by_fid($fid) {
- return ($fid = dintval($fid)) ? DB::result_first('SELECT COUNT(*) FROM '.DB::table('session')." WHERE uid>'0' AND fid='$fid' AND invisible='0'") : 0;
- }
-
- public function fetch_all_by_fid($fid, $limit = 12) {
- return ($fid = dintval($fid)) ? DB::fetch_all('SELECT uid, groupid, username, invisible, lastactivity FROM '.DB::table('session')." WHERE uid>'0' AND fid='$fid' AND invisible='0' ORDER BY lastactivity DESC".DB::limit($limit)) : array();
- }
-
- public function update_by_uid($uid, $data){
- if(($uid = dintval($uid)) && !empty($data) && is_array($data)) {
- return DB::update($this->_table, $data, DB::field('uid', $uid));
- }
- return 0;
- }
-
- public function count_by_ip($ip) {
- $count = 0;
- if(!empty($ip)) {
- $count = DB::result_first('SELECT COUNT(*) FROM '.DB::table('session')." WHERE ".DB::field('ip', $ip));
- }
- return $count;
- }
- public function fetch_all_by_ip($ip, $start = 0, $limit = 0) {
- $data = array();
- if(!empty($ip)) {
- $data = DB::fetch_all('SELECT * FROM %t WHERE ip=%s ORDER BY lastactivity DESC'.DB::limit($start, $limit), array($this->_table, $ip), null);
- }
- return $data;
- }
-}
-
-?>
diff --git a/core/class/table/table_setting.php b/core/class/table/table_setting.php
deleted file mode 100644
index d61ad5c..0000000
--- a/core/class/table/table_setting.php
+++ /dev/null
@@ -1,79 +0,0 @@
-_table = 'setting';
- $this->_pk = 'skey';
-
- parent::__construct();
- }
-
- public function fetch($skey, $auto_unserialize = false) {
- $data = DB::result_first('SELECT svalue FROM '.DB::table($this->_table).' WHERE '.DB::field($this->_pk, $skey));
- return $auto_unserialize ? (array)unserialize($data) : $data;
- }
-
- public function fetch_all($skeys = array(), $auto_unserialize = false){
- $data = array();
- $where = !empty($skeys) ? ' WHERE '.DB::field($this->_pk, $skeys) : '';
- $query = DB::query('SELECT * FROM '.DB::table($this->_table).$where);
- while($value = DB::fetch($query)) {
- $data[$value['skey']] = $auto_unserialize ? (array)unserialize($value['svalue']) : $value['svalue'];
- }
- return $data;
- }
-
- public function update($skey, $svalue){
- return DB::insert($this->_table, array($this->_pk => $skey, 'svalue' => is_array($svalue) ? serialize($svalue) : $svalue), false, true);
- }
-
- public function update_batch($array) {
- $settings = array();
- foreach($array as $key => $value) {
- $key = addslashes($key);
- $value = addslashes(is_array($value) ? serialize($value) : $value);
- $settings[] = "('$key', '$value')";
- }
- if($settings) {
- return DB::query("REPLACE INTO ".DB::table('setting')." (`skey`, `svalue`) VALUES ".implode(',', $settings));
- }
- return false;
- }
-
- public function skey_exists($skey) {
- return DB::result_first('SELECT skey FROM %t WHERE skey=%s LIMIT 1', array($this->_table, $skey)) ? true : false;
- }
-
- public function fetch_all_not_key($skey) {
- return DB::fetch_all('SELECT * FROM '.DB::table($this->_table).' WHERE skey NOT IN('.dimplode($skey).')');
- }
-
- public function fetch_all_table_status() {
- return DB::fetch_all('SHOW TABLE STATUS');
- }
-
- public function get_tablepre() {
- return DB::object()->tablepre;
- }
-
- public function update_count($skey, $num) {
- return DB::query("UPDATE %t SET svalue = svalue + %d WHERE skey = %s", array($this->_table, $num, $skey), false, true);
- }
-
-
-}
-
-?>
diff --git a/core/class/table/table_shares.php b/core/class/table/table_shares.php
deleted file mode 100644
index f9a4942..0000000
--- a/core/class/table/table_shares.php
+++ /dev/null
@@ -1,288 +0,0 @@
-_table = 'shares';
- $this->_pk = 'id';
- parent::__construct();
- }
- public function insert($setarr){
- $rid = $setarr['filepath'];
- $more = false;
- $rids = explode(',',$rid);
- $pfids = array();
- foreach(DB::fetch_all("select pfid from %t where rid in(%n)",array('resources',$rids)) as $v){
- $pfids[] = $v['pfid'];
- }
- $pfids = array_unique($pfids);
- if(count($pfids) > 1){
- return array('error'=>lang('Only_allow_sharing_filesinsamedirectory'));
- }
- $vrid = $rids[0];
- $fileinfo = C::t('resources')->fetch_info_by_rid($vrid);
-
- $setarr['gid'] = $fileinfo['gid'];
- $setarr['pfid'] = $fileinfo['pfid'];
- $setarr['dateline'] = time();
- $setarr['uid'] = getglobal('uid');
- $setarr['username'] = getglobal('username');
- if(count($rids) > 1) $more = true;
- if($more){
- $fileinfo = C::t('resources')->fetch_by_rid($rids[0]);
- $fileinfo['name'] .= '等文件(文件夹)';
- $setarr['type'] = 'url';
- }else{
- $fileinfo = C::t('resources')->fetch_by_rid($rids[0]);
- $setarr['type'] = $fileinfo['type'];
- }
- if($insert = parent::insert($setarr,1)){
- //$share['qrcode'] = self::getQRcodeBySid($insert);
- $eventdata = array(
- 'username'=>$setarr['username'],
- 'filename'=>$fileinfo['name'],
- 'url'=>getglobal('siteurl').'index.php?mod=shares&sid='.dzzencode($insert)
- );
- if(!C::t('resources_event')->addevent_by_pfid($fileinfo['pfid'],'share_file','share',$eventdata,$fileinfo['gid'],$fileinfo['rid'],$fileinfo['name'])){
- parent::delete($insert);
- return array('error'=>lang('create_share_failer'));
- }else{
- return array('success'=>$insert);
- }
- }
- }
- //更改分享状态
- public function change_by_rid($rid,$status = -3){
- if(!is_array($rid)) $rid = (array)$rid;
- $wheresql = '0';
- $params = array($this->_table);
- foreach($rid as $v){
- $wheresql .= " or find_in_set(%s,filepath)";
- $params[] = $v;
- }
- $sids = array();
- foreach(DB::fetch_all("select id from %t where $wheresql",$params) as $v){
- $sids[] = $v['id'];
- }
- DB::update($this->_table,array('status'=>$status),"id in(".dimplode($sids).")");
- }
- //文件进入回收站时,判断相关分享中是否还有对应数据,如果分享包含文件全部删除,改变分享状态
- public function recycle_by_rid($rids){
- if(!is_array($rids)) $rids = (array)$rids;
- $params = array($this->_table);
- $wheresql = '0';
- foreach($rids as $v){
- $wheresql .= " or find_in_set(%s,filepath)";
- $params[] = $v;
- }
- $sharedata = DB::fetch_all("select * from %t where $wheresql",$params);
- foreach($sharedata as $v){
- $paths = explode(',',$v['filepath']);
- if(count($paths) == 1){
- parent::update($v['id'],array('status'=>'-3'));
- }else{
- foreach($rids as $val){
- $index = array_search($val,$paths);
- if($index === false){
- continue;
- }else{
- unset($paths[$index]);
- $newpath = implode(',',$paths);
- $isdelete = false;
- foreach(DB::fecth_all("select isdelete from %t where rid in(%n)",array('resources',$newpath)) as $v){
- if($v['isdelete'] > 0){
- $isdelete = true;
- }
- }
- if($isdelete){
- parent::update($v['id'],array('status'=>'-3'));
- }
- }
- }
- }
- }
- }
- //恢复文件时,改变分享状态
- public function recover_file_by_rid($rids){
- if(!is_array($rids)) $rids = (array)$rids;
- $params = array($this->_table);
- $wheresql = '0';
- foreach($rids as $v){
- $wheresql .= " or find_in_set(%s,filepath)";
- $params[] = $v;
- }
- $sharedata = DB::fetch_all("select * from %t where $wheresql",$params);
- foreach($sharedata as $v){
- $paths = explode(',',$v['filepath']);
- foreach($rids as $val){
- $index = array_search($val,$paths);
- if($index === false){
- continue;
- }else{
- parent::update($v['id'],array('status'=>'0'));
- }
-
- }
- }
- }
- public function fetch_by_path($rid){
- $rid = trim($rid);
- if($info = DB::fetch_first("select * from %t where filepath = %s",array($this->_table,$rid))){
- return $info;
- }
- return false;
- }
-
- public function update_by_id($id,$setarr){
- if(empty($setarr)) return false;
- if(!$id) return false;
- $rid = $setarr['filepath'];
- $more = false;
- $rids = explode(',',$rid);
- $setarr['dateline'] = time();
- $setarr['uid'] = getglobal('uid');
- $setarr['username'] = getglobal('username');
- if(count($rids) > 1) $more = true;
- if($more){
- $fileinfo = C::t('resources')->fetch_info_by_rid($rids[0]);
- $fileinfo['name'] .= '等文件(文件夹)';
- }else{
- $fileinfo = C::t('resources')->fetch_info_by_rid($rids[0]);
- }
- $setarr['gid'] = $fileinfo['gid'];
- $setarr['pfid'] = $fileinfo['pfid'];
- if(parent::update($id,$setarr)){
- $eventdata = array('username'=>$setarr['username'],'filename'=>$fileinfo['name'],'url'=>getglobal('siteurl').'index.php&mod=shares&sid='.dzzencode($id));
- if(!C::t('resources_event')->addevent_by_pfid($fileinfo['pfid'],'share_file','share',$eventdata,$fileinfo['gid'],$fileinfo['rid'],$fileinfo['name'])){
- parent::delete($id);
- return false;
- }else{
- return $id;
- }
- }
- }
-
- public function delete_by_id($id){
- if(!$shareinfo = parent::fetch($id)){
- return array('error'=>lang('share_not_exists'));
- }
- if(!perm_check::checkperm_Container($shareinfo['pfid'],'share')){
- return array('error'=>lang('no_privilege'));
- }
- $setarr['dateline'] = time();
- $setarr['uid'] = getglobal('uid');
- $setarr['username'] = getglobal('username');
- if(parent::delete($id)){
- $url = getglobal('siteurl').'index.php?mod=shares&sid='.dzzencode($id);
- C::t('shorturl')->delete_by_url($url);//删除短链接
- $eventdata = array('username'=>$setarr['username'],'filename'=>$shareinfo['title']);
- C::t('resources_event')->addevent_by_pfid($shareinfo['pfid'],'cancle_share','cancleshare',$eventdata,$shareinfo['gid'],'',$shareinfo['title']);
- return array('success'=>true,'shareid'=>$id,'sharetitle'=>$shareinfo['title']);
-
- }else{
- return array('error'=>lang('explorer_do_failed'));
- }
- }
- //查询当前用户的分享
- public function fetch_all_share_file($limitsql = '',$ordersql = '',$count = false){
- global $_G;
- $uid = $_G['uid'];
- $params = array($this->_table);
- $wheresql = ' uid = %d';
- $params[] = $uid;
- $orgids = C::t('organization')->fetch_all_orgid();//获取所有有管理权限的部门();
- $manageorgids = $orgids['orgids_admin'];
- if(!empty($manageorgids)){
- $wheresql .= ' or gid in(%n)';
- $params[] = $manageorgids;
- }
- $shareinfo = array();
- if($count){
- return DB::result_first("select count(*) from %t where $wheresql $ordersql ",$params);
- }
- $sharestatus = array('-5'=>lang('sharefile_isdeleted_or_positionchange'),'-4' => lang('been_blocked'), '-3' => lang('file_been_deleted'), '-2' => lang('degree_exhaust'), '-1' => lang('logs_invite_status_4'), '0' => lang('founder_upgrade_normal'));
- foreach(DB::fetch_all("select * from %t where $wheresql $ordersql $limitsql",$params) as $val){
- $val['sharelink'] = outputurl(getglobal('siteurl').'index.php?mod=shares&sid='.dzzencode($val['id']));
- $val['fdateline'] = dgmdate($val['dateline'],'Y-m-d H:i:s');
- $val['password'] = ($val['password']) ? dzzdecode($val['password']):'';
- $sid = dzzencode($val['id']);
- if(is_file($_G['setting']['attachdir'].'./qrcode/'.$sid[0].'/'.$sid.'.png')){
- $val['qrcode']=$_G['setting']['attachurl'].'./qrcode/'.$sid[0].'/'.$sid.'.png';
- }else{
- $val['qrcode'] = self::getQRcodeBySid($sid);
- }
- if($val['endtime']){
- $timediff = ($val['endtime'] - $val['dateline']);
- $days = 0;
- if($timediff > 0){
- $days = ceil($timediff/86400);
- }
- $val['expireday'] = ($days > 0) ? $days.'天后':'已过期';
- }else{
- $val['expireday'] = '永久有效';
- }
- $rids = explode(',',$val['filepath']);
- if(count($rids) > 1){
- $val['img'] = '/dzz/explorer/img/ic-files.png';
- }else{
- $val['img'] = C::t('resources')->get_icosinfo_by_rid($val['filepath']);
- }
- $val['name'] = $val['title'];
- $val['rid'] = $val['id'];
- $val['shared'] = true;
- //检查文件是否被恢复
- if($val['status'] == -3){
- $isdelete = false;
- foreach(DB::fetch_all("select isdelete from %t where rid in(%n)",array('resources',$rids)) as $v){
- if($v['isdelete'] > 0){
- $isdelete = true;
- }
- }
- if(!$isdelete){
- DB::update($this->_table,array('status'=>0),array('id'=>$val['id']));
- $val['status'] = 0;
- }
- }
- //检查文件是否移动
- if($val['status'] == -5){
- $ischange = false;
- $pfids = array();
- foreach(DB::fetch_all("select pfid from %t where rid in(%n)",array('resources',$rids)) as $v){
- $pfids[] = $v['pfid'];
- }
- $pfids = array_unique($pfids);
- if(count($pfids) < 2 && $pfids[0] == $val['pfid']){
- DB::update($this->_table,array('status'=>0),array('id'=>$val['id']));
- $val['status'] = 0;
- }
- }
- $val['fstatus'] = $sharestatus[$val['status']];
- $shareinfo[$val['rid']] = $val;
- }
- return $shareinfo;
- }
- public function getQRcodeBySid($sid){
- $target='./qrcode/'.$sid[0].'/'.$sid.'.png';
- $targetpath = dirname(getglobal('setting/attachdir').$target);
- dmkdir($targetpath);
- if(@getimagesize(getglobal('setting/attachdir').$target)){
- return getglobal('setting/attachurl').$target;
- }else{//生成二维码
- QRcode::png((getglobal('siteurl').'index.php?mod=shares&sid='.$sid),getglobal('setting/attachdir').$target,'M',4,2);
- return getglobal('setting/attachurl').$target;
- }
- }
- //增加浏览次数
- public function add_views_by_id($id){
- return DB::query("update %t set views=views+1,count=count+1 where id = %d",array($this->_table,$id));
- }
- //增加下载次数
- public function add_downs_by_id($id){
- return DB::query("update %t set downs=downs+1 where id=%d",array($this->_table,$id));
- }
-}
\ No newline at end of file
diff --git a/core/class/table/table_shorturl.php b/core/class/table/table_shorturl.php
deleted file mode 100644
index 4be8d82..0000000
--- a/core/class/table/table_shorturl.php
+++ /dev/null
@@ -1,66 +0,0 @@
-_table = 'shorturl';
- $this->_pk = 'sid';
- $this->_pre_cache_key = 'shorturl_';
- $this->_cache_ttl =0;
- parent::__construct();
- }
-
- private function code62($x) {
- $show = '';
- while($x > 0) {
- $s = $x % 62;
- if ($s > 35) {
- $s = chr($s+61);
- } elseif ($s > 9 && $s <=35) {
- $s = chr($s + 55);
- }
- $show .= $s;
- $x = floor($x/62);
- }
- return $show;
- }
- public function getSid($url) {
- $url = crc32($url);
- $result = sprintf("%u", $url);
- return self::code62($result);
- }
-
- public function getShortUrl($url){
- $sid=self::getSid($url);
- if(DB::result_first("select COUNT(*) from %t where sid=%s",array($this->_table,$sid))){
- return getglobal('siteurl').'short.php?sid='.$sid;
- }
- $setarr=array('sid'=>$sid,
- 'url'=>$url,
- );
- if(parent::insert($setarr)){
- return getglobal('siteurl').'short.php?sid='.$sid;
- }
- return '';
- }
- public function addview($sid){
- return DB::query("update %t set count=count+1 where sid=%s",array($this->_table,$sid));
- }
- public function delete_by_url($url){
- $sid=self::getSid($url);
- return parent::delete($sid);
- }
-}
-?>
diff --git a/core/class/table/table_smiley.php b/core/class/table/table_smiley.php
deleted file mode 100644
index ad20494..0000000
--- a/core/class/table/table_smiley.php
+++ /dev/null
@@ -1,104 +0,0 @@
-_table = 'smiley';
- $this->_pk = 'id';
-
- parent::__construct();
- }
- public function fetch_all_by_type($type) {
- $type = $this->checktype($type);
- if(empty($type)) {
- return array();
- }
- $typesql = is_array($type) ? 'type IN(%n)' : 'type=%s';
- return DB::fetch_all("SELECT * FROM %t WHERE $typesql ORDER BY displayorder", array($this->_table, $type), $this->_pk);
- }
-
- public function fetch_all_by_typeid_type($typeid, $type, $start = 0, $limit = 0) {
- return DB::fetch_all('SELECT * FROM %t WHERE typeid=%d AND type=%s ORDER BY displayorder '.DB::limit($start, $limit), array($this->_table, $typeid, $type), $this->_pk);
- }
- public function fetch_all_by_type_code_typeid($type, $typeid) {
- return DB::fetch_all("SELECT * FROM %t WHERE type=%s AND code<>'' AND typeid=%d ORDER BY displayorder ", array($this->_table, $type, $typeid), $this->_pk);
- }
- public function fetch_all_cache() {
- return DB::fetch_all("SELECT s.id, s.code, s.url, t.typeid FROM %t s INNER JOIN %t t ON t.typeid=s.typeid WHERE s.type='smiley' AND s.code<>'' AND t.available='1' ORDER BY LENGTH(s.code) DESC", array($this->_table, 'imagetype'));
-
- }
- public function fetch_by_id_type($id, $type) {
- return DB::fetch_first('SELECT * FROM %t WHERE id=%d AND type=%s', array($this->_table, $id, $type), $this->_pk);
- }
- public function update_by_type($type, $data) {
- if(!empty($data) && is_array($data) && in_array($type, $this->allowtype)) {
- return DB::update($this->_table, $data, DB::field('type', $type));
- }
- return 0;
- }
- public function update_by_id_type($id, $type, $data) {
- $id = dintval($id, true);
- if(!empty($data) && is_array($data) && $id && in_array($type, $this->allowtype)) {
- return DB::update($this->_table, $data, DB::field('id', $id).' AND '.DB::field('type', $type));
- }
- return 0;
- }
- public function update_code_by_typeid($typeid) {
- $typeid = dintval($typeid, true);
- if(empty($typeid)) {
- return 0;
- }
- $typeidsql = is_array($typeid) ? 'typeid IN(%n)' : 'typeid=%d';
- return DB::query("UPDATE %t SET code=CONCAT('{:', typeid, '_', id, ':}') WHERE $typeidsql", array($this->_table, $typeid));
- }
- public function update_code_by_id($ids) {
- $ids = dintval($ids, true);
- if(empty($ids)) {
- return 0;
- }
- $idssql = is_array($ids) ? 'id IN(%n)' : 'id=%d';
- return DB::query("UPDATE %t SET code=CONCAT('{:', typeid, '_', id, ':}') WHERE $idssql", array($this->_table, $ids));
- }
- public function count_by_type($type) {
- $type = $this->checktype($type);
- if(empty($type)) {
- return 0;
- }
- return DB::result_first('SELECT COUNT(*) FROM %t WHERE type IN(%n)', array($this->_table, $type));
- }
- public function count_by_typeid($typeid) {
- return DB::result_first('SELECT COUNT(*) FROM %t WHERE typeid=%d', array($this->_table, $typeid));
- }
- public function count_by_type_typeid($type, $typeid) {
- $typeid = dintval($typeid, true);
- if(!empty($typeid) && in_array($type, $this->allowtype)) {
- return DB::result_first('SELECT COUNT(*) FROM %t WHERE type=%s AND typeid IN(%n)', array($this->_table, $type, $typeid));
- }
- return 0;
- }
- public function count_by_type_code_typeid($type, $typeid) {
- return DB::result_first("SELECT COUNT(*) FROM %t WHERE type=%s AND code<>'' AND typeid=%d", array($this->_table, $type, $typeid));
- }
-
- private function checktype($type) {
- if(is_array($type)) {
- foreach($type as $key => $val) {
- if(!in_array($val, $this->allowtype)) {
- unset($type[$key]);
- }
- }
- } else {
- $type = in_array($type, $this->allowtype) ? $type : '';
- }
- return $type;
- }
-
-}
-
-?>
\ No newline at end of file
diff --git a/core/class/table/table_syscache.php b/core/class/table/table_syscache.php
deleted file mode 100644
index dd290da..0000000
--- a/core/class/table/table_syscache.php
+++ /dev/null
@@ -1,115 +0,0 @@
-_table = 'syscache';
- $this->_pk = 'cname';
- $this->_pre_cache_key = '';
- $this->_isfilecache = getglobal('config/cache/type') == 'file';
- $this->_allowmem = memory('check');
-
- parent::__construct();
- }
-
- public function fetch($cachename) {
- $data = $this->fetch_all(array($cachename));
- return isset($data[$cachename]) ? $data[$cachename] : false;
- }
- public function fetch_all($cachenames) {
-
- $data = array();
- $cachenames = is_array($cachenames) ? $cachenames : array($cachenames);
- if($this->_allowmem) {
- $data = memory('get', $cachenames);
- $newarray = $data !== false ? array_diff($cachenames, array_keys($data)) : $cachenames;
- if(empty($newarray)) {
- return $data;
- } else {
- $cachenames = $newarray;
- }
- }
-
- if($this->_isfilecache) {
- $lostcaches = array();
- foreach($cachenames as $cachename) {
- if(!@include_once(DZZ_ROOT.'./data/cache/cache_'.$cachename.'.php')) {
- $lostcaches[] = $cachename;
- } elseif($this->_allowmem) {
- memory('set', $cachename, $data[$cachename]);
- }
- }
- if(!$lostcaches) {
- return $data;
- }
- $cachenames = $lostcaches;
- unset($lostcaches);
- }
-
- $query = DB::query('SELECT * FROM '.DB::table($this->_table).' WHERE '.DB::field('cname', $cachenames));
- while($syscache = DB::fetch($query)) {
- $data[$syscache['cname']] = $syscache['ctype'] ? unserialize($syscache['data']) : $syscache['data'];
- $this->_allowmem && (memory('set', $syscache['cname'], $data[$syscache['cname']]));
- if($this->_isfilecache) {
- $cachedata = '$data[\''.$syscache['cname'].'\'] = '.var_export($data[$syscache['cname']], true).";\n\n";
- if(($fp = @fopen(DZZ_ROOT.'./data/cache/cache_'.$syscache['cname'].'.php', 'wb'))) {
- fwrite($fp, "");
- fclose($fp);
- }
- }
- }
-
- foreach($cachenames as $name) {
- if($data[$name] === null) {
- $data[$name] = null;
- $this->_allowmem && (memory('set', $name, array()));
- }
- }
-
- return $data;
- }
-
- public function insert($cachename, $data) {
- parent::insert(array(
- 'cname' => $cachename,
- 'ctype' => is_array($data) ? 1 : 0,
- 'dateline' => TIMESTAMP,
- 'data' => is_array($data) ? serialize($data) : $data,
- ), false, true);
-
- if($this->_allowmem && memory('get', $cachename) !== false) {
- memory('set', $cachename, $data);
- }
- $this->_isfilecache && @unlink(DZZ_ROOT.'./data/cache/cache_'.$cachename.'.php');
- }
-
- public function update($cachename, $data,$unbuffered = false, $low_priority = false) {
- $this->insert($cachename, $data);
- }
-
- public function delete($cachenames,$unbuffered = false) {
- parent::delete($cachenames);
- if($this->_allowmem || $this->_isfilecache) {
- foreach((array)$cachenames as $cachename) {
- $this->_allowmem && memory('rm', $cachename);
- $this->_isfilecache && @unlink(DZZ_ROOT.'./data/cache/cache_'.$cachename.'.php');
- }
- }
- }
-}
-
-?>
diff --git a/core/class/table/table_tag.php b/core/class/table/table_tag.php
deleted file mode 100644
index 1536422..0000000
--- a/core/class/table/table_tag.php
+++ /dev/null
@@ -1,70 +0,0 @@
-_table = 'tag';
- $this->_pk = 'tid';
- parent::__construct();
- }
- public function insert_data($tags,$idtype=''){
- if(!is_array($tags)) $tags = (array)$tags;
- $tids = array();
- foreach($tags as $v){
- if(preg_match('/^\s*$/',$v)) continue;
- if($result = DB::fetch_first("select tid from %t where idtype = %s and tagname = %s",array($this->_table,$idtype,$v))){
- $tids[$result['tid']] = array('tid'=>$result['tid'],'tagname'=>$v);
- }else{
- $setarr = array(
- 'tagname'=>$v,
- 'uid'=>getglobal('uid'),
- 'username'=>getglobal('username'),
- 'idtype'=>$idtype,
- 'hot' =>0
- );
- $tid = parent::insert($setarr,1);
- $tids[$tid] = array('tid'=>$tid,'tagname'=>$v);
- }
- }
- return $tids;
- }
- public function addhot_by_tid($tid,$hot = 1){
- if(!is_array($tid)) $tid=array($tid);
- if($hot>0){
- DB::query("update %t set hot=hot+%d where tid IN(%n)",array($this->_table,$hot,$tid));
- }else{
- DB::query("update %t set hot=hot-%d where tid IN(%n)",array($this->_table,abs($hot),$tid));
- }
- }
-
- public function fetch_tag_by_tid($tids,$idtype){
- if(!is_array($tids)) $tids = (array)$tids;
- return DB::fetch_all("select tagname,tid from %t where tid in(%n) and idtype = %s ",array($this->_table,$tids,$idtype));
- }
- public function fetch_tid_by_tagname($tagnames,$idtype){
- if(!is_array($tagnames)) $tagnames = (array)$tagnames;
- $searchtag = array();
- foreach ($tagnames as $v){
- $searchtag[] = trim($v);
- }
- $tids = array();
- foreach(DB::fetch_all("select tid from %t where tagname in(%n) and idtype=%s",array($this->_table,$searchtag,$idtype)) as $v){
- $tids[] = $v['tid'];
- }
- if(count($tagnames) != count($tids)){
- $tids = array();
- }
- return $tids;
- }
- public function fetch_tag_byidtype($idtype,$limit=10){
- $tags = array();
- if(!$idtype) return $tags;
- $tags = DB::fetch_all("select tid,tagname from %t where idtype=%s order by hot limit 0,$limit",array($this->_table,$idtype));
- return $tags;
- }
-}
\ No newline at end of file
diff --git a/core/class/table/table_thame.php b/core/class/table/table_thame.php
deleted file mode 100644
index f1a9b18..0000000
--- a/core/class/table/table_thame.php
+++ /dev/null
@@ -1,25 +0,0 @@
-_table = 'thame';
- $this->_pk = 'id';
-
- parent::__construct();
- }
-}
-
-?>
diff --git a/core/class/table/table_user.php b/core/class/table/table_user.php
deleted file mode 100644
index 1a17021..0000000
--- a/core/class/table/table_user.php
+++ /dev/null
@@ -1,582 +0,0 @@
-_table = 'user';
- $this->_pk = 'uid';
- $this->_pre_cache_key = 'user_';
-
- parent::__construct();
- }
- /*public function fetch_safebindstatus($uid){
- $uid = intval($uid);
- $result = DB::fetch_first("select emailstatus,phonestatus from %t where uid = %d",array($this->_table,$uid));
- return $result;
- }*/
- public function add_user($userArr){
-
- global $_G;
-
- if(empty($userArr)) return ;
- $salt=substr(uniqid(rand()), -6);
- $groupid = '';
- if($_G['setting']['regverify']) {
- $groupid = 8;
- } else {
- $groupid =$_G['setting']['newusergroupid'];
- }
- $setarr=array(
- 'username'=>addslashes($userArr['username']),
- 'email'=>isset($userArr['email']) ? $userArr['email']:'' ,
- 'salt'=>$salt,
- 'password'=>md5(md5($userArr['password']).$salt),
- 'regdate'=>TIMESTAMP,
- 'regip'=>$_G['clientip'],
- 'groupid'=>$groupid
- );
- $setarr['uid'] = parent::insert($setarr,1);
- return $setarr;
- }
- public function update_password($uid,$password){
- $uid = intval($uid);
- if(parent::update($uid,array('password'=>$password))){
- return true;
- }
- return false;
- }
- public function user_register($userArr,$addorg = 1){
-
- if(empty($userArr)) return ;
-
- if($userArr['username'] && ($status = uc_user_checkname($userArr['username'])) < 0) {
- return $status;
- }
-
- if(($status = uc_user_checkemail($userArr['email'])) < 0) {
-
- return $status;
- }
-
- $uid =self::add_user($userArr);
-
- //默认机构
- if($addorg && is_array($uid) && getglobal('setting/defaultdepartment') && DB::fetch_first("select orgid from %t where orgid=%d ",array('organization',getglobal('setting/defaultdepartment')))){
- C::t('organization_user')->insert_by_orgid(getglobal('setting/defaultdepartment'),$uid['uid']);
- }
-
- return $uid;
- }
- public function delete_by_uid($uid){
- $user=parent::fetch($uid);
- if(self::checkfounder($user)){//创始人不能删除
- return false;
- }
- if(parent::delete($uid)){
- C::t('user_field')->delete($uid);
- C::t('user_profile')->delete($uid);
- C::t('user_status')->delete($uid);
- C::t('user_setting')->delete_by_uid($uid);
- C::t('organization_user')->delete_by_uid($uid,0);
- DB::delete('user_qqconnect',"uid='{$uid}'"); //删除QQ登陆
-
- //删除用户文件
- if($homefid=DB::result_first("select fid from %t where uid=%d and flag='home' ",array('folder',$uid))){
- C::t('folder')->delete_by_fid($homefid,true);
- }
-
- Hook::listen('syntoline_user',$uid,'del');//删除对应到三方用户表
- return true;
- }
- return false;
- }
- public function checkfounder($user) {
-
- $founders = str_replace(' ', '', getglobal('config/admincp/founder'));
- if(!$user['uid'] || $user['groupid'] != 1 || $user['adminid'] != 1 ) {
- return false;
- } elseif(empty($founders)) {
- return false;
- } elseif(strexists(",$founders,", ",$user[uid],")) {
- return true;
- } elseif(!is_numeric($user['nickname']) && strexists(",$founders,", ",$user[nickname],")) {
- return true;
- } else {
- return false;
- }
- }
- public function setAdministror($uid,$groupid){
- $user=getuserbyuid($uid);
- //if($user['adminid']==$adminid) return true;
- if(self::checkfounder($user)){ //创始人不允许修改
- return true;
- }
- $arr=array();
- if($groupid==1){
- parent::update($uid,array('adminid'=>1,'groupid'=>1));
- }else{
- if(empty($groupid)) $groupid=9;
- /*if(C::t('organization_admin')->fetch_orgids_by_uid($uid)){
- $groupid=2;
- }*/
- parent::update($uid,array('adminid'=>0,'groupid'=>$groupid));
- }
- }
- public function update_credits($uid, $credits) {
- if($uid) {
- $data = array('credits'=>intval($credits));
- DB::update($this->_table, $data, array('uid' => intval($uid)), 'UNBUFFERED');
- $this->update_cache($uid, $data);
- }
- }
-
- public function update_by_groupid($groupid, $data) {
- $uids = array();
- $groupid = dintval($groupid, true);
- if($groupid && $this->_allowmem) {
- $uids = array_keys($this->fetch_all_by_groupid($groupid));
- }
- if($groupid && !empty($data) && is_array($data)) {
- DB::update($this->_table, $data, DB::field('groupid', $groupid), 'UNBUFFERED');
- }
- if($uids) {
- $this->update_cache($uids, $data);
- }
- }
-
- public function fetch_userbasic_by_uid($uid){
-
- return DB::fetch_first("select uid,email,username from %t where uid = %d",array($this->_table,$uid));
- }
-
- public function increase($uids, $setarr) {
- $uids = dintval((array)$uids, true);
- $sql = array();
- $allowkey = array('newprompt');
- foreach($setarr as $key => $value) {
- if(($value = intval($value)) && in_array($key, $allowkey)) {
- $sql[] = "`$key`=`$key`+'$value'";
- }
- }
- if(!empty($sql)){
- DB::query("UPDATE ".DB::table($this->_table)." SET ".implode(',', $sql)." WHERE uid IN (".dimplode($uids).")", 'UNBUFFERED');
- $this->increase_cache($uids, $setarr);
- }
- }
-
-
-
- public function fetch_all_by_username($usernames, $fetch_archive = 1) {
- $users = array();
- if(!empty($usernames)) {
- $users = DB::fetch_all('SELECT * FROM %t WHERE username IN (%n)', array($this->_table, (array)$usernames), 'username');
- }
- return $users;
- }
- /*
- * 新增
- * 以uid查询用户数据
- * **/
- public function get_user_by_uid($uid){
-
- $uid = intval($uid);
-
- static $users = array();
-
- if($uid && empty($users[$uid])) {
-
- $users[$uid] = DB::fetch_first("select * from %t where uid = %d",array($this->_table,$uid));
- }
-
- if($users[$uid]['adminid']==1) $users[$uid]['self'] = 2;
-
- return $users[$uid];
-
- }
-
- public function fetch_uid_by_username($username, $fetch_archive = 0) {
- $uid = 0;
- if($username) {
- $uid = DB::result_first('SELECT uid FROM %t WHERE username=%s', array($this->_table, $username));
- }
- return $uid;
- }
-
- public function fetch_all_uid_by_username($usernames, $fetch_archive = 1) {
- $uids = array();
- if($usernames) {
- foreach($this->fetch_all_by_username($usernames, $fetch_archive) as $username => $value) {
- $uids[$username] = $value['uid'];
- }
- }
- return $uids;
- }
-
- public function fetch_all_by_adminid($adminids, $fetch_archive = 1) {
- $users = array();
- $adminids = dintval((array)$adminids, true);
- if($adminids) {
- $users = DB::fetch_all('SELECT * FROM %t WHERE adminid IN (%n) ORDER BY adminid, uid', array($this->_table, (array)$adminids), $this->_pk);
- }
- return $users;
- }
-
- public function fetch_all_username_by_uid($uids) {
- $users = array();
- if(($uids = dintval($uids, true))) {
- foreach($this->fetch_all($uids) as $uid => $value) {
- $users[$uid] = $value['username'];
- }
- }
- return $users;
- }
-
- public function count_by_groupid($groupid) {
- return $groupid ? DB::result_first('SELECT COUNT(*) FROM %t WHERE '.DB::field('groupid', $groupid), array($this->_table)) : 0;
- }
-
- public function fetch_all_by_groupid($groupid, $start = 0, $limit = 0) {
- $users = array();
- if(($groupid = dintval($groupid, true))) {
- $users = DB::fetch_all('SELECT * FROM '.DB::table($this->_table).' WHERE '.DB::field('groupid', $groupid).' '.DB::limit($start, $limit), null, 'uid');
- }
- return $users;
- }
-
- public function fetch_all_groupid() {
- return DB::fetch_all('SELECT DISTINCT(groupid) FROM '.DB::table($this->_table), null, 'groupid');
- }
-
- public function fetch_all_by_allowadmincp($val, $glue = '=') {
- return DB::fetch_all('SELECT * FROM '.DB::table($this->_table).' WHERE '.DB::field('allowadmincp', intval($val), $glue), NULL, 'uid');
- }
-
- public function update_admincp_manage($uids) {
- if(($uids = dintval($uids, true))) {
- $data = DB::query('UPDATE '.DB::table($this->_table).' SET allowadmincp=allowadmincp | 1 WHERE uid IN ('.dimplode($uids).')');
- $this->reset_cache($uids);
- return $data;
- }
- return false;
- }
-
- public function clean_admincp_manage($uids) {
- if(($uids = dintval($uids, true))) {
- $data = DB::query('UPDATE '.DB::table($this->_table).' SET allowadmincp=allowadmincp & 0xFE WHERE uid IN ('.dimplode($uids).')');
- $this->reset_cache($uids);
- return $data;
- }
- return false;
- }
- public function chk_email_by_uid($email,$uid){
-
- if(parent::fetch_all("select uid from %t where email = %s and uid != %d",array($this->_table,$email,$uid))){
-
- return true;
- }
-
- return false;
- }
- public function fetch_by_email($email, $fetch_archive = 0) {
- $user = array();
- if($email) {
- $user = DB::fetch_first('SELECT * FROM %t WHERE email=%s', array($this->_table, $email));
- }
- return $user;
- }
- public function fetch_by_username($username, $fetch_archive = 0) {
- $user = array();
- if($username) {
- $user = DB::fetch_first('SELECT * FROM %t WHERE username=%s', array($this->_table, $username));
- }
- return $user;
- }
- public function fetch_by_nickname($username, $fetch_archive = 0) {
-
- $user = array();
- if($username) {
- $user = DB::fetch_first('SELECT * FROM %t WHERE nickname=%s', array($this->_table, $username));
- }
- return $user;
- }
- public function fetch_by_phone($username, $fetch_archive = 0) {
-
- $user = array();
- if($username) {
- $user = DB::fetch_first('SELECT * FROM %t WHERE phone=%s', array($this->_table, $username));
- }
- return $user;
- }
- public function fetch_by_weixinid($username, $fetch_archive = 0) {
-
- $user = array();
- if($username) {
- $user = DB::fetch_first('SELECT * FROM %t WHERE weixinid=%s', array($this->_table, $username));
- }
- return $user;
- }
- public function fetch_by_wechat_userid($username, $fetch_archive = 0) {
-
- $user = array();
- if($username) {
- $user = DB::fetch_first('SELECT * FROM %t WHERE wechat_userid=%s', array($this->_table, $username));
- }
- return $user;
- }
- public function fetch_by_uid($uid, $fetch_archive = 0) {
- $user = array();
- if($uid) {
- $user = DB::fetch_first('SELECT * FROM %t WHERE uid=%d', array($this->_table, $uid));
- }
- return $user;
- }
-
- public function fetch_all_by_email($emails, $fetch_archive = 1) {
- $users = array();
- if(!empty($emails)) {
- $users = DB::fetch_all('SELECT * FROM %t WHERE %i', array($this->_table, DB::field('email', $emails)), 'email');
- }
- return $users;
- }
-
- public function count_by_email($email, $fetch_archive = 0) {
- $count = 0;
- if($email) {
- $count = DB::result_first('SELECT COUNT(*) FROM %t WHERE email=%s', array($this->_table, $email));
- }
- return $count;
- }
-
- public function fetch_all_by_like_username($username, $start = 0, $limit = 0) {
- $data = array();
- if($username) {
- $data = DB::fetch_all('SELECT * FROM %t WHERE username LIKE %s'.DB::limit($start, $limit), array($this->_table, stripsearchkey($username).'%'), 'uid');
- }
- return $data;
- }
-
- public function count_by_like_username($username) {
- return !empty($username) ? DB::result_first('SELECT COUNT(*) FROM %t WHERE username LIKE %s', array($this->_table, stripsearchkey($username).'%')) : 0;
- }
-
-
- public function fetch_runtime() {
- return DB::result_first("SELECT (MAX(regdate)-MIN(regdate))/86400 AS runtime FROM ".DB::table($this->_table));
- }
-
- public function count_admins() {
- return DB::result_first("SELECT COUNT(*) FROM ".DB::table($this->_table)." WHERE adminid<>'0' AND adminid<>'-1'");
- }
-
- public function count_by_regdate($timestamp) {
- return DB::result_first('SELECT COUNT(*) FROM %t WHERE regdate>%d', array($this->_table, $timestamp));
- }
- //根据用户组id,查询用户id
- public function fetch_uid_by_groupid($groupid){
- $groupid = intval($groupid);
- return DB::fetch_all("select uid from %t where groupid = %d",array($this->_table,$groupid));
- }
-
- public function fetch_all_stat_memberlist($username, $orderby = '', $sort = '', $start = 0, $limit = 0) {
- $orderby = in_array($orderby, array('uid','credits','regdate', 'gender','username','posts','lastvisit'), true) ? $orderby : 'uid';
- $sql = '';
-
- $sql = !empty($username) ? " WHERE username LIKE '".addslashes(stripsearchkey($username))."%'" : '';
-
- $memberlist = array();
- $query = DB::query("SELECT m.uid, m.username, mp.gender, m.email, m.regdate, ms.lastvisit, mc.posts, m.credits
- FROM ".DB::table($this->_table)." m
- LEFT JOIN ".DB::table('user_profile')." mp ON mp.uid=m.uid
- LEFT JOIN ".DB::table('user_status')." ms ON ms.uid=m.uid
- $sql ORDER BY ".DB::order($orderby, $sort).DB::limit($start, $limit));
- while($member = DB::fetch($query)) {
- $member['usernameenc'] = rawurlencode($member['username']);
- $member['regdate'] = dgmdate($member['regdate']);
- $member['lastvisit'] = dgmdate($member['lastvisit']);
- $memberlist[$member['uid']] = $member;
- }
- return $memberlist;
- }
-
-
-
- public function insert($uid, $ip, $groupid, $extdata, $adminid = 0) {
- if(($uid = dintval($uid))) {
- $profile = isset($extdata['profile']) ? $extdata['profile'] : array();
- //$profile['uid'] = $uid;
- $base = array(
- 'uid' => $uid,
- 'adminid' => intval($adminid),
- 'groupid' => intval($groupid),
- 'regdate' => TIMESTAMP,
- 'emailstatus' => intval($extdata['emailstatus']),
-
- );
- $status = array(
- 'uid' => $uid,
- 'regip' => (string)$ip,
- 'lastip' => (string)$ip,
- 'lastvisit' => TIMESTAMP,
- 'lastactivity' => TIMESTAMP,
- 'lastsendmail' => 0
- );
-
- $ext = array('uid' => $uid);
- parent::update($uid,$base);
- C::t('user_status')->insert($status, false, true);
- C::t('user_profile')->update($uid,$profile);
- }
- }
- public function insert_user($userarr,$groupid = 9,$profilearr=array()){
- global $_G;
- if(empty($userarr)){
- return false;
- }
- $ip = $_G['clientip'];
- $salt=substr(uniqid(rand()), -6);
- $setarr=array(
- 'username'=>addslashes($userarr['username']),
- 'email'=>$userarr['email'],
- 'salt'=>$salt,
- 'password'=>md5(md5($userarr['password']).$salt),
- 'regdate'=>TIMESTAMP,
- 'regip'=>$ip,
- 'groupid'=>$groupid,
- 'phone'=>$userarr['phone'],
- 'phonestatus'=>$userarr['phonestatus']
- );
- $uid = parent::insert($setarr,1);
- if($uid){
- $status = array(
- 'uid' => $uid,
- 'regip' => (string)$ip,
- 'lastip' => (string)$ip,
- 'lastvisit' => TIMESTAMP,
- 'lastactivity' => TIMESTAMP,
- 'lastsendmail' => 0
- );
- C::t('user_status')->insert($status,1);
- if(!empty($profilearr)){
- C::t('user_profile')->update($uid,$profilearr);
- }
- $setarr['uid'] = $uid;
- return $setarr;
- }else{
- return false;
- }
-
-
-
- }
- public function insert_user_setarr($setarr){
- if(empty($setarr)) return ;
- return parent::insert($setarr,1);
- }
-
- public function delete($val, $unbuffered = false, $fetch_archive = 0) {
- $ret = false;
-
- if(($val = dintval($val, true))) {
- foreach((array)$val as $key=> $uid) {
- if($uid==1) unset($val[$key]); //暂时限制uid=1的用户不允许删除
- }
- $ret = parent::delete($val, $unbuffered, $fetch_archive);
- if($this->_allowmem) {
- $data = ($data = memory('get', 'deleteuids')) === false ? array() : $data;
- foreach((array)$val as $uid) {
- $data[$uid] = $uid;
- }
- memory('set', 'deleteuids', $data, 86400*2);
- }
- }
- return $ret;
- }
-
- public function max_uid() {
- return DB::result_first('SELECT MAX(uid) FROM %t', array($this->_table));
- }
-
- public function range_by_uid($from, $limit) {
- return DB::fetch_all('SELECT * FROM %t WHERE uid >= %d ORDER BY uid LIMIT %d', array($this->_table, $from, $limit), $this->_pk);
- }
-
- public function update_groupid_by_groupid($source, $target) {
- return DB::query('UPDATE %t SET groupid=%d WHERE adminid <= 0 AND groupid=%d', array($this->_table, $target, $source));
- }
- public function fetch_all_user(){
- return DB::fetch_all("select * from %t",array($this->_table));
- }
- //获取用户独享空间配置值,若未分配,则获取用户已使用空间
- public function get_allotspace(){
- global $_G;
- $setting = $_G['setting'];
- $userallotspace = 0;
- $uids = array();
- foreach(DB::fetch_all("select uid from %t",array($this->_table)) as $v){
- $uids[] = $v['uid'];
- }
- foreach(DB::fetch_all("select userspace,usesize from %t where uid in(%n)",array('user_field',$uids)) as $val){
- if($val['userspace'] > 0){
- $userallotspace += $val['userspace']*1024*1024;
- }else{
- $userallotspace += $val['usesize'];
- }
- }
- return $userallotspace;
- }
- //获取用户信息包含头像信息
- public function fetch_user_avatar_by_uids($uids){
- if(!is_array($uids)) $uids = array($uids);
- $uids = array_unique($uids);
- $users = array();
- foreach(DB::fetch_all("select u.*,s.svalue from %t u left join %t s on u.uid=s.uid and s.skey=%s where u.uid in(%n)",array('user','user_setting','headerColor',$uids)) as $v){
- if($v['avatarstatus'] == 1){
- $v['avatarstatus'] = 1;
- }else{
- $v['avatarstatus'] = 0;
- $v['headerColor'] = $v['svalue'];
- }
- $users[$v['uid']] = $v;
- }
-
- return $users;
- }
- public function fetch_userinfo_detail_by_uid($uid){
- $uid = intval($uid);
- $users = DB::fetch_first("select u.uid,u.phone,u.email,ug.* from %t u left join %t ug on u.groupid=ug.groupid where uid = %d",array('user','usergroup',$uid));
- foreach(DB::fetch_all("select * from %t where uid = %d",array('user_profile',$uid)) as $v){
- if(!$v['privacy']){
- $users['information'][$v['fieldid']] = $v['value'];
- }
- }
- return $users;
- }
- public function fetch_all_user_data(){
- return DB::fetch_all("select * from %t where 1",array($this->_table));
- }
- /*//获取用户信息,包含资料等信息
- public function fetch_user_infomessage_by_uid($uid){
- $users = array();
- foreach(DB::fetch_all("select u.*,s.svalue from %t u left join %t s on u.uid=s.uid and s.skey=%s where u.uid =%d",array('user','user_setting','headerColor',$uid)) as $v){
- if($v['avatarstatus'] == 1){
- $v['avatarstatus'] = 1;
- }else{
- $v['avatarstatus'] = 0;
- $v['headerColor'] = $v['svalue'];
- }
- $users[$v['uid']] = $v;
- }
-
- return $users;
- }*/
-}
diff --git a/core/class/table/table_user_field.php b/core/class/table/table_user_field.php
deleted file mode 100644
index 2d4f054..0000000
--- a/core/class/table/table_user_field.php
+++ /dev/null
@@ -1,25 +0,0 @@
-_table = 'user_field';
- $this->_pk = 'uid';
- $this->_pre_cache_key = 'user_field_';
- $this->_cache_ttl = 60*60;
-
- parent::__construct();
- }
-}
diff --git a/core/class/table/table_user_profile.php b/core/class/table/table_user_profile.php
deleted file mode 100644
index e808ab9..0000000
--- a/core/class/table/table_user_profile.php
+++ /dev/null
@@ -1,206 +0,0 @@
-_table = 'user_profile';
- $this->_pk = 'uid';
- //$this->_pre_cache_key = 'user_profile_';
- parent::__construct();
- }
- public function get_userprofile_by_uid($uid){
- global $_G;
- $uid = $uid ? intval($uid):'';
- if(!$uid) return false;
- $values = array();
- if($values = C::t('user')->get_user_by_uid($uid)){
- $var = 'user_{$uid}_profile';
- if(($_G[$var] = self::fetch($uid)) !== false){
- if(!empty($_G[$var]['department'])){
- $_G[$var]['department_tree']=C::t('organization')->getPathByOrgid(intval($_G[$var]['department']));
- }else{
- $_G[$var]['department_tree']=lang('please_select_a_organization_or_department');
- }
- }else{
- $_G[$var] = array();
- }
- $values = array_merge($values,$_G[$var]);
- }
- return $values;
- }
- public function get_user_info_by_uid($uid){
- global $_G;
- $uid = $uid ? intval($uid):'';
- $info = array();
- foreach($result = DB::fetch_all("select * from %t where uid =%d",array($this->_table,$uid)) as $value){
- $info[$value['fieldid']] = $value['value'];
- $info['privacy']['profile'][$value['fieldid']] = $value['privacy'];
- }
- $var = "user_{$uid}_profile";
- if(!empty($_G[$var]['department'])){
- $info['department_tree'] = $_G[$var]['department_tree']=C::t('organization')->getPathByOrgid(intval($_G[$var]['department']));
- }else{
- $info['department_tree'] = $_G[$var]['department_tree']=lang('please_select_a_organization_or_department');
- }
- if($user = C::t('user')->get_user_by_uid($uid)){
- $info = array_merge($user,$info);
- }
- $field = DB::fetch_first("select attachextensions,maxattachsize,usesize,addsize,buysize,wins,perm from %t where uid = %d",array('user_field',$uid));
- $info = array_merge($field,$info);
- return $info;
- }
-
- public function fetch($uid){
- $data=array('uid'=>$uid);
- foreach(DB::fetch_all("select * from %t where uid =%d",array($this->_table,$uid)) as $value) {
- $data[$value['fieldid']]=$value['value'];
- }
- return $data;
- }
- public function fetch_by_field($uid,$field){ //获取用户某项资料的值
- return DB::result_first("select value from %t where uid=%d and fieldid=%s",array($this->_table,$uid,$field));
- }
- public function update($uid,$fieldarr){//插入用户资料
- foreach($fieldarr as $key=>$value){
- if(is_array($value)){
- $setarr=array( 'uid'=>$uid,
- 'fieldid'=>$key,
- 'value'=>$value['value'],
- 'privacy'=>$value['privacy']
- );
- }else{
- $setarr=array( 'uid'=>$uid,
- 'fieldid'=>$key,
- 'value'=>$value
- );
- }
-
- DB::insert($this->_table,$setarr,0,1);
- }
- return true;
- }
- public function update_by_skey($fieldid,$val,$uid = 0){
- if(!$uid)$uid = getglobal('uid');
- if(!DB::update($this->_table,array('value'=>$val),array('uid'=>$uid,'fieldid'=>$fieldid))){
- $setarr=array('uid'=>$uid,
- 'fieldid'=>$fieldid,
- 'value'=>$val
- );
- DB::insert($this->_table,$setarr,0,1);
- }
- return true;
- }
- public function fetch_phone($phone){
- return DB::fetch_first("select * from %t where `fieldid` = %s and `value` = %s",array($this->_table,'phone',$phone));
- }
- public function fetch_weixinid($weixinid){
- return DB::fetch_first("select * from %t where `fieldid` = %s and `value` = %s",array($this->_table,'weixinid',$weixinid));
- }
- public function zupdate($uid,$fieldarr){//插入用户资料
- foreach($fieldarr as $key=>$value){
- $setarr=array('uid'=>$uid,
- 'fieldid'=>$key,
- 'value'=>$value,
- 'privacy'=>$value
- );
- DB::insert($this->_table,$setarr,0,1);
- }
- return true;
- }
- public function insert($fieldarr){//插入用户资料
- $uid=$fieldarr['uid'];
- unset($fieldarr['uid']);
- foreach($fieldarr as $key=>$value){
- $setarr=array('uid'=>$uid,
- 'fieldid'=>$key,
- 'value'=>$value
- );
- DB::insert($this->_table,$setarr,0,1);
- }
- return true;
- }
- public function fetch_privacy_by_uid($uid){
- $uid = intval($uid);
- $privacys = array();
- foreach(DB::fetch_all("select privacy,fieldid from %t where uid = %d",array($this->_table,$uid)) as $val){
- $privacys[$val['fieldid']] = $val['privacy'];
- }
- return $privacys;
- }
- public function delete($uid){
- $uid=(array)$uid;
- return DB::delete($this->_table,"uid IN (".dimplode($uid).")");
- }
- public function delete_by_field($fieldids){ //删除用户资料项
- $fieldids=(array)$fieldids;
- return DB::delete($this->_table,"fieldid IN (".dimplode($fieldids).")");
- }
- public function delete_by_uid($uids){ //删除用户资料
- $uids=(array)$uids;
- return DB::delete($this->_table,"uid IN (".dimplode($uids).")");
- }
- public function fetch_all($uids) {
- $data = array();
- $uids=(array)$uids;
- if(!empty($uids)) {
- foreach(DB::fetch_all("select * from %t where uid IN (%n)",array($this->_table,$uids)) as $value) {
- $data[$value['uid']][$value['fieldid']]=$value['value'];
- $data[$value['uid']]['uid']=$value['uid'];
- }
- }
- return $data;
- }
-
- public function count_by_field($field, $val) {
-
- return DB::result_first('SELECT COUNT(*) as cnt FROM '.DB::table($this->_table).' WHERE '.DB::field($field, $val));
- }
-
- public function fetch_all_field_value($field) {
- return DB::fetch_all('SELECT DISTINCT(`'.$field.'`) FROM '.DB::table($this->_table), null, $field);
- }
-
- public function fetch_all_will_birthday_by_uid($uids) {
- $birthlist = array();
- if(!empty($uids)) {
- $uids = explode(',', (string)$uids);
- $uids = dimplode(dintval($uids, true));
- list($s_month, $s_day) = explode('-', dgmdate(TIMESTAMP-3600*24*3, 'n-j'));
- list($n_month, $n_day) = explode('-', dgmdate(TIMESTAMP, 'n-j'));
- list($e_month, $e_day) = explode('-', dgmdate(TIMESTAMP+3600*24*7, 'n-j'));
- if($e_month == $s_month) {
- $wheresql = "sf.birthmonth='$s_month' AND sf.birthday>='$s_day' AND sf.birthday<='$e_day'";
- } else {
- $wheresql = "(sf.birthmonth='$s_month' AND sf.birthday>='$s_day') OR (sf.birthmonth='$e_month' AND sf.birthday<='$e_day' AND sf.birthday>'0')";
- }
- $data=array();
- foreach(DB::fetch_all("select sf.*,u.username,u.email from %t sf LEFT JOIN %t u USING(uid) ON sf.uid=u.uid where sf.uid IN (%n) and $wheresql",array($this->_table,'user',$uids)) as $value){
- $data[$value['uid']][$value['fileid']]=$value['value'];
- $data[$value['uid']]['username']=$value['username'];
- }
- foreach($data as $value){
- $value['istoday'] = 0;
- if($value['birthmonth'] == $n_month && $value['birthday'] == $n_day) {
- $value['istoday'] = 1;
- }
- $key = sprintf("%02d", $value['birthmonth']).sprintf("%02d", $value['birthday']);
- $birthlist[$key][] = $value;
- ksort($birthlist);
- }
-
- }
- return $birthlist;
- }
-}
diff --git a/core/class/table/table_user_profile_setting.php b/core/class/table/table_user_profile_setting.php
deleted file mode 100644
index 990a7e9..0000000
--- a/core/class/table/table_user_profile_setting.php
+++ /dev/null
@@ -1,69 +0,0 @@
-_table = 'user_profile_setting';
- $this->_pk = 'fieldid';
- $this->_pre_cache_key = 'user_profile_setting_';
- $this->_cache_ttl = 0;
- parent::__construct();
- }
- public function delete_by_fieldid($fieldid){
- $this->clear_cache('fields_0');
- $this->clear_cache('fields_1');
- return parent::delete($fieldid);
- }
- public function insert($data,$return_insert_id = false, $replace = false, $silent = false){
- $this->clear_cache('fields_0');
- $this->clear_cache('fields_1');
- return parent::insert($data,$return_insert_id,$replace,$silent);
- }
- public function range($start = 0, $limit = 0) {
- return DB::fetch_all('SELECT * FROM '.DB::table($this->_table).' ORDER BY available DESC, displayorder'.DB::limit($start, $limit), null, $this->_pk);
- }
- public function fetch_all_by_available_unchangeable($available, $unchangeable) {
- return DB::fetch_all('SELECT * FROM %t WHERE available=%d AND unchangeable=%d ORDER BY displayorder', array($this->_table, $available, $unchangeable), $this->_pk);
- }
- public function fetch_register_info(){
- return DB::fetch_all("SELECT * FROM %t WHERE `showinregister` = %d AND `available` = %d ORDER BY displayorder",array($this->_table,1,1));
- }
- public function fetch_all_by_available($available) {
- return DB::fetch_all('SELECT * FROM %t WHERE available=%d ORDER BY displayorder', array($this->_table, $available), $this->_pk);
- }
-
- public function fetch_all_by_available_formtype($available, $formtype) {
- return DB::fetch_all('SELECT * FROM %t WHERE available=%d AND formtype=%s', array($this->_table, $available, $formtype), $this->_pk);
- }
-
- public function fetch_all_by_available_required($available, $required) {
- return DB::fetch_all('SELECT * FROM %t WHERE available=%d AND required=%d', array($this->_table, $available, $required), $this->_pk);
- }
-
- public function fetch_all_by_available_showinregister($available, $showinregister) {
- return DB::fetch_all('SELECT * FROM %t WHERE available=%d AND showinregister=%d', array($this->_table, $available, $showinregister), $this->_pk);
- }
- public function fetch_all_fields_by_available($available=1){//获取资料设置里的fieldid数组
- if(!$available) $available=0;
- $fieldids=array();
- if($available){
- $sql=' and available>0';
- }
- foreach(DB::fetch_all("select fieldid from %t where 1 $sql ",array($this->_table)) as $value){
- $fieldids[]=$value['fieldid'];
- }
- return $fieldids;
- }
-
-}
diff --git a/core/class/table/table_user_qqconnect.php b/core/class/table/table_user_qqconnect.php
deleted file mode 100644
index e13d13e..0000000
--- a/core/class/table/table_user_qqconnect.php
+++ /dev/null
@@ -1,35 +0,0 @@
-_table = 'user_qqconnect';
- $this->_pk = 'openid';
- parent::__construct();
- }
- public function fetch_by_openid($openid){
- return DB::fetch_first("select qq.openid,u.* from %t qq LEFT JOIN %t u ON qq.uid=u.uid where qq.openid=%d",array($this->_table,'user',$openid));
- }
- public function insert_by_openid($openid,$uid,$uinfo,$unbind=0){
- if(!$openid) return false;
- if(!$user=C::t('user')->fetch($uid)) return false;
- if(!DB::insert($this->_table,array('openid'=>$openid,'uid'=>$uid,'unbind'=>$unbind,'dateline'=>TIMESTAMP),1,true)){
- return false;
- }
- //使用qq头像
- /*if($uinfo['figureurl_2'] && !$user['avatarstatus']){
- avatar_by_image($uinfo['figureurl_2'],$uid);
- }*/
- }
-}
-?>
diff --git a/core/class/table/table_user_salf.php b/core/class/table/table_user_salf.php
deleted file mode 100644
index 1c625c1..0000000
--- a/core/class/table/table_user_salf.php
+++ /dev/null
@@ -1,47 +0,0 @@
-_table = 'user_salf';
- $this->_pk = 'uid';
-
- parent::__construct();
-
- }
-
- public function fetch_by_tokenid($tokenid){
-
- return DB::fetch_first("select * from %t where tokenid = %s",array($this->_table,$tokenid));
- }
-
- public function fetch_by_keyid($kid){
-
- return DB::fetch_first("select * from %t where keyid = %d",array($this->_table,$kid));
- }
-
- public function update_by_tokenid($tokenid,$setarr){
-
- return DB::update($this->_table,$setarr,"tokenid = $tokenid");
- }
-
- public function update_by_host($host,$arr){
-
- if(DB::update($this->_table,$arr,"host = $host")){
- return true;
-
- }else{
-
- return false;
-
- }
- }
- public function fetch_sdk_by_tokenid($tokenid){
-
- return DB::fetch_first("select * from %t as a left join %t as b on a.keyid = b.key where a.tokendid = %s",array($this->_table,'user_sdk',$tokenid));
- }
-}
\ No newline at end of file
diff --git a/core/class/table/table_user_sdk.php b/core/class/table/table_user_sdk.php
deleted file mode 100644
index 99f502f..0000000
--- a/core/class/table/table_user_sdk.php
+++ /dev/null
@@ -1,29 +0,0 @@
-_table = 'user_sdk';
- $this->_pk = 'key';
-
- parent::__construct();
- }
-
- public function fetch_by_host($host)
- {
- return DB::fetch_first("select * from %t where `host` = %s",array($this->_table,$host));
- }
- public function fetch_salf_by_key($key,$token){
-
- return DB::fetch_first("select * from %t as a left join %t as b on a.key = b.keyid where a.key = %s and b.tokenid = %s",array($this->_table,'user_salf',$key,$token));
- }
-
- public function update_by_host($host,$setarr){
-
- return DB::update($this->_table,$setarr,array('host'=>$host));
- }
-}
\ No newline at end of file
diff --git a/core/class/table/table_user_setting.php b/core/class/table/table_user_setting.php
deleted file mode 100644
index 39cb34c..0000000
--- a/core/class/table/table_user_setting.php
+++ /dev/null
@@ -1,135 +0,0 @@
-_table = 'user_setting';
- $this->_pk = 'id';
- $this->_pre_cache_key = 'user_setting_';
- $this->_cache_ttl = 60*60;
- parent::__construct();
-
- }
-
- public function insert($skeyarr,$uid = 0){//插入用户设置
- if(!$uid)$uid = getglobal('uid');
- $cachkeys=array();
- foreach($skeyarr as $key=>$value){
- $setarr=array('uid'=>$uid,
- 'skey'=>$key,
- 'svalue'=>$value
- );
- $cachkeys[] = $uid.'_'.$key;
- DB::insert($this->_table,$setarr,0,1);
- }
- //更新缓存
- $this->clear_cache($cachkeys);
- $this->clear_cache($uid);
- return true;
- }
- public function update($skeyarr,$uid = 0){//更新用户设置
- if(!$uid) $uid = getglobal('uid');
- $cachkeys=array();
- foreach($skeyarr as $key=>$value){
- $setarr=array('uid'=>$uid,
- 'skey'=>$key,
- 'svalue'=>$value,
- );
- $cachkeys[]=$uid.'_'.$key;
- DB::insert($this->_table,$setarr,0,1);
- }
- //更新缓存
- $this->clear_cache($cachkeys);
- $this->clear_cache($uid);
- return true;
- }
- public function update_by_skey($skey,$val,$uid = 0){
- if(!$uid)$uid = getglobal('uid');
- if(!DB::update($this->_table,array('svalue'=>$val),array('uid'=>$uid,'skey'=>$skey))){
- $setarr=array('uid'=>$uid,
- 'uid'=>$uid,
- 'skey'=>$skey,
- 'svalue'=>$val
- );
- DB::insert($this->_table,$setarr,0,1);
- }
- //更新缓存
- $this->clear_cache($uid.'_'.$skey);
- $this->clear_cache($uid);
- return true;
- }
- public function insert_by_skey($skey,$val,$uid = 0){
- if(!$uid) $uid = getglobal('uid');
- $setarr = array(
- 'uid'=>$uid,
- 'skey'=>$skey,
- 'svalue'=>$val
- );
- parent::insert($setarr,0,1);
- //更新缓存
- $this->clear_cache($uid.'_'.$skey);
- $this->clear_cache($uid);
- return true;
- }
- public function fetch_by_skey($skey,$uid= 0){ //获取用户某项设置值
- static $vals=array();
- if(!$uid) $uid = getglobal('uid');
- $cachekey=$uid.'_'.$skey;//增加缓存
- if($ret=$this->fetch_cache($cachekey)){
- return $ret;
- }else{
- $val=DB::result_first("select svalue from %t where uid=%d and skey=%s",array($this->_table,$uid,$skey));
- $this->store_cache($cachekey,$val);
- return $val;
- }
-
- }
- public function delete_by_field($skeys,$uid=0){ //删除用户某项设置值
- if(!$uid)$uid = getglobal('uid');
- $skeys=(array)$skeys;
- $cachekeys=array();
- foreach($skeys as $skey){
- $cachekeys[]=$uid.'_'.$skey;
- }
- if($ret= DB::delete($this->_table,"skey IN (".dimplode($skeys).") and uid=".$uid)){
- $this->clear_cache($cachekeys);
- $this->clear_cache($uid);
- return $ret;
- }
- return false;
- }
- public function delete_by_uid($uids){ //删除设置
- $uids=(array)$uids;
- $cachekeys=array();
-
- foreach(DB::fetch_all("select skey,uid from %t where uid IN (%n)",array($this->_table,$uids)) as $value){
- $cachekeys[]=$value['uid'].'_'.$value['skey'];
- }
- if($ret= DB::delete($this->_table,"uid IN (".dimplode($uids).")")){
- $this->clear_cache($cachekeys);
- $this->clear_cache($uids);
- return $ret;
- }
- return false;
-
- }
- //获取当前用户所有设置项
- public function fetch_all_user_setting($uid = 0){
- if(!$uid) $uid = getglobal('uid');
- $settings = array();
- $cachekey='settings_'.$uid;
- if($settings = $this->fetch_cache($cachekey)){
- return $settings;
- }else{
- foreach(DB::fetch_all("select * from %t where uid = %d",array($this->_table,$uid)) as $v){
- $settings[$v['skey']] = $v['svalue'];
- }
- $this->store_cache($cachekey,$settings);
- return $settings;
- }
- }
-}
\ No newline at end of file
diff --git a/core/class/table/table_user_status.php b/core/class/table/table_user_status.php
deleted file mode 100644
index fc54d32..0000000
--- a/core/class/table/table_user_status.php
+++ /dev/null
@@ -1,109 +0,0 @@
-_table = 'user_status';
- $this->_pk = 'uid';
- $this->_pre_cache_key = 'user_status_';
-
- parent::__construct();
- }
-
- public function increase($uids, $setarr) {
- $uids = array_map('intval', (array)$uids);
- $sql = array();
- $allowkey = array('buyercredit', 'sellercredit', 'favtimes', 'sharetimes');
- foreach($setarr as $key => $value) {
- if(($value = intval($value)) && in_array($key, $allowkey)) {
- $sql[] = "`$key`=`$key`+'$value'";
- }
- }
- if(!empty($sql)){
- DB::query("UPDATE ".DB::table($this->_table)." SET ".implode(',', $sql)." WHERE uid IN (".dimplode($uids).")", 'UNBUFFERED');
- $this->increase_cache($uids, $setarr);
- }
- }
-
- public function count_by_ip($ips) {
- return !empty($ips) ? DB::result_first('SELECT COUNT(*) FROM %t WHERE regip IN(%n) OR lastip IN (%n)', array($this->_table, $ips, $ips)) : 0;
- }
-
- public function fetch_all_by_ip($ips, $start, $limit) {
- $data = array();
- if(!empty($ips) && $limit) {
- $data = DB::fetch_all('SELECT * FROM %t WHERE regip IN(%n) OR lastip IN (%n) LIMIT %d, %d', array($this->_table, $ips, $ips, $start, $limit), 'uid');
- }
- return $data;
- }
-
- public function fetch_all_orderby_lastpost($uids, $start, $limit) {
- $uids = dintval($uids, true);
- if($uids) {
- return DB::fetch_all('SELECT * FROM %t WHERE uid IN(%n) ORDER BY lastpost DESC '.DB::limit($start, $limit), array($this->_table, $uids), $this->_pk);
- }
- return array();
- }
-
- public function count_by_lastactivity_invisible($timestamp, $invisible = 0) {
- $addsql = '';
- if($invisible === 1) {
- $addsql = ' AND invisible = 1';
- } elseif($invisible === 2) {
- $addsql = ' AND invisible = 0';
- }
- return $timestamp ? DB::result_first('SELECT COUNT(*) FROM %t WHERE lastactivity >= %d'.$addsql, array($this->_table, $timestamp)) : 0;
- }
-
-
- public function fetch_all_by_lastactivity_invisible($timestamp, $invisible = 0, $start = 0, $limit = 0) {
- $data = array();
- if($timestamp) {
- $addsql = '';
- if($invisible === 1) {
- $addsql = ' AND invisible = 1';
- } elseif($invisible === 2) {
- $addsql = ' AND invisible = 0';
- }
- $data = DB::fetch_all('SELECT * FROM %t WHERE lastactivity >= %d'.$addsql.' ORDER BY lastactivity DESC'.DB::limit($start, $limit), array($this->_table, $timestamp), $this->_pk);
- }
- return $data;
- }
-
- public function fetch_all_onlines($uids, $lastactivity, $start = 0, $limit = 0) {
- $data = array();
- $uids = dintval($uids, true);
- if(!empty($uids)) {
- $ppp = ($ppp = getglobal('ppp')) ? $ppp + 30 : 100;
- if(count($uids) > $ppp) {
- $uids = array_slice($uids, 0, $ppp);
- }
- $length = $limit ? $limit : $start;
- $i = 0;
- foreach($this->fetch_all($uids) as $uid => $member) {
- if($member['lastactivity'] >= $lastactivity) {
- $data[$uid] = $member;
- if($length && $i >= $length) {
- break;
- }
- $i++;
- }
- }
- }
- return $data;
- }
-}
-
-?>
diff --git a/core/class/table/table_user_verify.php b/core/class/table/table_user_verify.php
deleted file mode 100644
index b856a67..0000000
--- a/core/class/table/table_user_verify.php
+++ /dev/null
@@ -1,85 +0,0 @@
-_table = 'user_verify';
- $this->_pk = 'uid';
- $this->_pre_cache_key = 'user_verify_';
- //$this->_cache_ttl = 0;
- parent::__construct();
- }
-
- public function fetch_all_by_vid($vid, $flag, $uids = array()) {
- $parameter = array($this->_table);
- if($vid > 0 && $vid < 8) {
- $wherearr = array();
- if($uids) {
- $wherearr[] = is_array($uids) ? 'uid IN(%n)' : 'uid=%d';
- $parameter[] = $uids;
- }
- $parameter[] = $flag;
- $wherearr[] = "verify{$vid}=%d";
- return DB::fetch_all("SELECT * FROM %t WHERE ".implode(' AND ', $wherearr), $parameter, $this->_pk);
- } else {
- return array();
- }
- }
- public function fetch_all_search($uid, $vid, $username = '', $order = 'dateline', $start = 0, $limit = 0, $sort = 'DESC') {
- $condition = $this->search_condition($uid, $vid, $username);
- $ordersql = !empty($order) ? ' ORDER BY '.$order.' '.$sort : '';
- return DB::fetch_all("SELECT * FROM %t v, %t m $condition[0] $ordersql ".DB::limit($start, $limit), $condition[1], $this->_pk);
-
- }
-
- public function count_by_uid($uid) {
- return DB::result_first('SELECT COUNT(*) FROM %t WHERE uid=%d', array($this->_table, $uid));
- }
-
- public function count_by_search($uid, $vid, $username = '') {
- $condition = $this->search_condition($uid, $vid, $username);
- return DB::result_first('SELECT COUNT(*) FROM %t v, %t m '.$condition[0], $condition[1]);
- }
-
- public function search_condition($uid, $vid, $username) {
- $parameter = array($this->_table, 'user');
- $wherearr = array();
- if($uid) {
- if(is_array($uid)){
- $parameter[] = $uid;
- $wherearr[] = 'v.uid IN (%n)';
- }else{
- $parameter[] = $uid;
- $wherearr[] = 'v.uid=%d';
- }
-
- }
- if($vid > 0 && $vid < 8) {
- $parameter[] = $vid;
- $wherearr[] = 'v.verify%d=1';
- }
- if(!empty($username)) {
- $parameter[] = '%'.$username.'%';
- $wherearr[] = "m.username LIKE %s";
- }
- $wherearr[] = "v.uid=m.uid";
- $wheresql = !empty($wherearr) && is_array($wherearr) ? ' WHERE '.implode(' AND ', $wherearr) : '';
- return array($wheresql, $parameter);
-
- }
-
-}
-
-?>
\ No newline at end of file
diff --git a/core/class/table/table_user_verify_info.php b/core/class/table/table_user_verify_info.php
deleted file mode 100644
index 5d11a18..0000000
--- a/core/class/table/table_user_verify_info.php
+++ /dev/null
@@ -1,112 +0,0 @@
-_table = 'user_verify_info';
- $this->_pk = 'vid';
-
- parent::__construct();
- }
- public function fetch_by_uid_verifytype($uid, $verifytype) {
- return DB::fetch_first('SELECT * FROM %t WHERE uid=%d AND verifytype=%d', array($this->_table, $uid, $verifytype));
- }
- public function fetch_all_search($uid, $vid, $flag = null, $username = '', $starttime = 0, $endtime = 0, $order = 'dateline', $start = 0, $limit = 0, $sort = 'DESC',$orgids=array()) {
- $condition = $this->search_condition($uid, $vid, $flag, $username, $starttime, $endtime,$orgids);
-
- $ordersql = !empty($order) ? ' ORDER BY v.'.$order : '';
-
- return DB::fetch_all("SELECT * FROM %t v $condition[0] $ordersql ".DB::limit($start, $limit), $condition[1], $this->_pk);
- }
- public function group_by_verifytype_count() {
- return DB::fetch_all('SELECT verifytype, COUNT(*) AS num FROM %t WHERE flag=0 GROUP BY verifytype', array($this->_table));
- }
-
- public function delete_by_uid($uid, $verifytype = null) {
- if($uid) {
- $addsql = '';
- if($verifytype !== null) {
- $verifytype = dintval($verifytype, is_array($verifytype) ? true : false);
- $addsql = ' AND '.DB::field('verifytype', $verifytype);
- }
- return DB::query('DELETE FROM %t WHERE '.(is_array($uid) ? 'uid IN(%n)' : 'uid=%d').$addsql, array($this->_table, $uid));
- }
- return false;
- }
-
- public function count_by_search($uid, $vid, $flag = null, $username = '', $starttime = 0, $endtime = 0,$orgids=array()) {
- $condition = $this->search_condition($uid, $vid, $flag, $username, $starttime, $endtime,$orgids);
- return DB::result_first('SELECT COUNT(*) FROM %t v'.$condition[0], $condition[1]);
- }
-
- public function search_condition($uid, $vid, $flag, $username, $starttime, $endtime,$orgids) {
- $parameter = array($this->_table);
- $wheresql='';
- $wherearr = array();
- if($orgids){
- if($vid==1) {
- if(is_array($orgids)){
- $parameter[] = $orgids;
- $wherearr[] = 'v.orgid IN (%n)';
- }else{
- $parameter[] = $orgids;
- $wherearr[] = 'v.orgid=%d';
- }
- }else{
- $parameter[] = 'organization_user';
- $parameter[] = $orgids;
- $wheresql=" LEFT JOIN %t o ON o.uid=v.uid and o.orgid IN(%n)";
- $wherearr[] = '!isnull(o.dateline)';
- }
- }
- if($uid) {
- if(is_array($uid)){
- $parameter[] = $uid;
- $wherearr[] = 'v.uid IN (%n)';
- }else{
- $parameter[] = $uid;
- $wherearr[] = 'v.uid=%d';
- }
- }
-
- if($vid >= 0 && $vid < 8) {
- $parameter[] = $vid;
- $wherearr[] = 'v.verifytype=%d';
- }
- if($flag !== null) {
- $parameter[] = $flag;
- $wherearr[] = 'v.flag=%d';
- }
- if($starttime){
- $parameter[] = $starttime;
- $wherearr[] = 'v.dateline>=%d';
- }
- if($endtime){
- $parameter[] = $endtime;
- $wherearr[] = 'v.dateline<=%d';
- }
- if(!empty($username)) {
- $parameter[] = '%'.$username.'%';
- $wherearr[] = "v.username LIKE %s";
- }
- $wheresql .= !empty($wherearr) && is_array($wherearr) ? ' WHERE '.implode(' AND ', $wherearr) : '';
- return array($wheresql, $parameter);
-
- }
-
-
-}
-
-?>
\ No newline at end of file
diff --git a/core/class/table/table_user_wechat.php b/core/class/table/table_user_wechat.php
deleted file mode 100644
index 480cc8c..0000000
--- a/core/class/table/table_user_wechat.php
+++ /dev/null
@@ -1,27 +0,0 @@
-_table = 'user_wechat';
- $this->_pk = 'uid';
-
- parent::__construct();
- }
- function fetch_by_openid($openid,$appid){
- return DB::fetch_first("select * from %t where openid=%s and appid=%s",array($this->_table,$openid,$appid));
- }
-}
-?>
diff --git a/core/class/table/table_usergroup.php b/core/class/table/table_usergroup.php
deleted file mode 100644
index b06132a..0000000
--- a/core/class/table/table_usergroup.php
+++ /dev/null
@@ -1,138 +0,0 @@
-_table = 'usergroup';
- $this->_pk = 'groupid';
-
- parent::__construct();
- }
-
- public function fetch_by_credits($credits, $type = 'member') {
- if(is_array($credits)) {
- $creditsf = intval($credits[0]);
- $creditse = intval($credits[1]);
- } else {
- $creditsf = $creditse = intval($credits);
- }
- return DB::fetch_first('SELECT grouptitle, groupid FROM %t WHERE '.($type ? DB::field('type', $type).' AND ' : '').'%d>=creditshigher AND %d_table, $creditsf, $creditse));
- }
-
- public function fetch_all_by_type($type = '', $radminid = null, $allfields = false) {
- $parameter = array($this->_table);
- $wherearr = array();
- if(!empty($type)) {
- $parameter[] = $type;
- $wherearr[] = is_array($type) ? 'type IN(%n)' : 'type=%s';
- }
- if($radminid !== null) {
- $parameter[] = $radminid;
- $wherearr[] = 'radminid=%d';
- }
- $wheresql = !empty($wherearr) ? ' WHERE '.implode(' AND ', $wherearr) : '';
- return DB::fetch_all('SELECT '.($allfields ? '*' : 'groupid, grouptitle').' FROM %t '.$wheresql, $parameter, $this->_pk);
- }
-
- public function update($id, $data, $type = '') {
- if(!is_array($data) || !$data || !is_array($data) || !$id) {
- return null;
- }
- $condition = DB::field('groupid', $id);
- if($type) {
- $condition .= ' AND '.DB::field('type', $type);
- }
- return DB::update($this->_table, $data, $condition);
- }
-
- public function delete($id, $type = '') {
- if(!$id) {
- return null;
- }
- $condition = DB::field('groupid', $id);
- if($type) {
- $condition .= ' AND '.DB::field('type', $type);
- }
- return DB::delete($this->_table, $condition);
- }
-
-
- public function fetch_all_by_groupid($gid) {
- if(!$gid) {
- return null;
- }
- return DB::fetch_all('SELECT groupid FROM %t WHERE groupid IN (%n) AND type=\'special\' AND radminid>0', array($this->_table, $gid), $this->_pk);
- }
-
- public function fetch_all_by_not_groupid($gid) {
- return DB::fetch_all('SELECT groupid, type, grouptitle, creditshigher, radminid FROM %t WHERE type=\'member\' AND creditshigher=\'0\' OR (groupid NOT IN (%n) AND radminid<>\'1\' AND type<>\'member\') ORDER BY (creditshigher<>\'0\' || creditslower<>\'0\'), creditslower, groupid', array($this->_table, $gid), $this->_pk);
- }
-
- public function fetch_all_not($gid, $creditnotzero = false) {
- return DB::fetch_all('SELECT groupid, radminid, type, grouptitle, creditshigher, creditslower FROM %t WHERE groupid NOT IN (%n) ORDER BY '.($creditnotzero ? "(creditshigher<>'0' || creditslower<>'0'), " : '').'creditshigher, groupid', array($this->_table, $gid), $this->_pk);
- }
-
- public function fetch_new_groupid($fetch = false) {
- $sql = 'SELECT groupid, grouptitle FROM '.DB::table($this->_table)." WHERE type='member' AND creditslower>'0' ORDER BY creditslower LIMIT 1";
- if($fetch) {
- return DB::fetch_first($sql);
- } else {
- return DB::result_first($sql);
- }
- }
- public function fetch_all($ids) {
- if(!$ids) {
- return null;
- }
- return DB::fetch_all('SELECT * FROM %t WHERE '.DB::field('groupid', $ids).' ORDER BY type, radminid, creditshigher', array($this->_table), $this->_pk);
- }
-
- public function fetch_all_switchable($ids) {
- if(!$ids) {
- return null;
- }
- return DB::fetch_all('SELECT * FROM %t WHERE (type=\'special\' AND system<>\'private\' AND radminid=\'0\') OR groupid IN (%n) ORDER BY type, system', array($this->_table, $ids), $this->_pk);
- }
-
- public function range_orderby_credit() {
- return DB::fetch_all('SELECT * FROM %t ORDER BY (creditshigher<>\'0\' || creditslower<>\'0\'), creditslower, groupid', array($this->_table), $this->_pk);
- }
-
- public function range_orderby_creditshigher() {
- return DB::fetch_all('SELECT * FROM %t ORDER BY creditshigher', array($this->_table), $this->_pk);
- }
-
- public function fetch_all_by_radminid($radminid, $glue = '>', $orderby = 'type'){
- $ordersql = '';
- if($ordersql = DB::order($orderby, 'DESC')) {
- $ordersql = ' ORDER BY '.$ordersql;
- }
- return DB::fetch_all('SELECT * FROM %t WHERE %i', array($this->_table, DB::field('radminid', intval($radminid), $glue) . $ordersql), 'groupid');
- }
-
- public function fetch_table_struct($result = 'FIELD') {
- $datas = array();
- $query = DB::query('DESCRIBE %t', array($this->_table));
- while($data = DB::fetch($query)) {
- $datas[$data['Field']] = $result == 'FIELD' ? $data['Field'] : $data;
- }
- return $datas;
- }
-
- public function buyusergroup_exists() {
- return DB::result_first("SELECT COUNT(*) FROM %t WHERE type='special' and system>0", array($this->_table));
- }
-}
-
-?>
diff --git a/core/class/table/table_usergroup_field.php b/core/class/table/table_usergroup_field.php
deleted file mode 100644
index c6f0e31..0000000
--- a/core/class/table/table_usergroup_field.php
+++ /dev/null
@@ -1,30 +0,0 @@
-_table = 'usergroup_field';
- $this->_pk = 'groupid';
-
- parent::__construct();
- }
-
- public function fetch_all() {
- return DB::fetch_all("SELECT * FROM %t where 1", array($this->_table),$this->_pk);
- }
-
-}
-
-?>
diff --git a/core/class/table/table_vote.php b/core/class/table/table_vote.php
deleted file mode 100644
index db25fe7..0000000
--- a/core/class/table/table_vote.php
+++ /dev/null
@@ -1,62 +0,0 @@
-_table = 'vote';
- $this->_pk = 'voteid';
-
- parent::__construct();
- }
-
- public function fetch_by_voteid($voteid){
- if(!$data=self::fetch($voteid)) return false;
- $data['items']=C::t('vote_item')->fetch_by_voteid($voteid);
- return $data;
- }
- public function fetch_by_id_idtype($id,$idtype){
- $voteid=DB::result_first("select voteid from %t where id=%d and idtype=%s",array($this->_table,$id,$idtype));
- return self::fetch_by_voteid($voteid);
- }
- public function insert_by_voteid($arr,$itemnew){
- if($voteid=parent::insert($arr,1)){
- C::t('vote_item')->update_by_voteid($voteid,array(),$itemnew);
- }
- return $voteid;
- }
- public function update_by_voteid($voteid,$arr,$item,$itemnew){
- C::t('vote_item')->update_by_voteid($voteid,$item,$itemnew);
- return parent::update($voteid,$arr);
- }
-
- public function delete_by_voteid($voteids){
- $ret=0;
- $voteids=(array)$voteids;
- if($ret=parent::delete($voteids)){
- C::t('vote_item')->delete_by_voteid($voteids);
- }
-
- return $ret;
- }
- public function delete_by_id_idtype($ids,$idtype){
- $ids=(array)$ids;
- foreach(DB::fetch_all("select voteid from %t where id IN(%n) and idtype=%s",array('vote',$ids,$idtype)) as $value){
- $voteids[]=$value['voteid'];
- }
- return self::delete_by_voteid($voteids);
- }
-
-}
-?>
diff --git a/core/class/table/table_vote_item.php b/core/class/table/table_vote_item.php
deleted file mode 100644
index 3d7dd5a..0000000
--- a/core/class/table/table_vote_item.php
+++ /dev/null
@@ -1,119 +0,0 @@
-_table = 'vote_item';
- $this->_pk = 'itemid';
-
- parent::__construct();
- }
-
- public function fetch_by_voteid($voteid,$type=0){
- $data=array();
- $sql='voteid=%d';
- $param=array($this->_table,$voteid);
- if($type){
- $sql.=" and type=%d";
- }
- foreach(DB::fetch_all("select * from %t where $sql order by disp",$param) as $value){
- if($value['type'] && $value['aid']){
- $value['img']=(DZZSCRIPT?DZZSCRIPT:'index.php').'?mod=io&op=thumbnail&width=240&height=160&path='.dzzencode('attach::'.$value['aid']);
- $value['url']=(DZZSCRIPT?DZZSCRIPT:'index.php').'?mod=io&op=thumbnail&width=240&height=160&original=1&path='.dzzencode('attach::'.$value['aid']);
- }
- $data['type_'.$value['type']][]=$value;
- }
- return $data;
- }
- public function delete_by_itemid($itemid){
- $data=parent::fetch($itemid);
- if($data['aid']) C::t('attachment')->delete_by_aid($data['aid']);
- return parent::delete($itemid);
- }
- public function delete_by_voteid($voteids){
- $voteids=(array)$voteids;
- $itemids=array();
- $aids=array();
- foreach(DB::fetch_all("select itemid,aid from %t where voteid IN(%n)",array($this->_table,$voteids)) as $value){
- if($value['aid']) $aids[]=$value['aid'];
- $itemids[]=$value['itemid'];
- }
- if($ret=parent::delete($itemids)){
- foreach($aids as $aid){
- C::t('attachment')->delete_by_aid($aid);
- }
- C::t('vote_item_count')->delete_by_itemid($itemids);
- }
- return $ret;
- }
-
- public function update_by_voteid($voteid,$item,$itemnew){
- if(!$vote=C::t('vote')->fetch($voteid)) return false;
- //删除已有的项目
- $sql='voteid=%d';
- $param=array($this->_table,$voteid);
- if($item && ($ids=array_keys($item))){
- $sql.=" and itemid NOT IN(%n)";
- $param[]=$ids;
- }
- $dels=array();
- foreach(DB::fetch_all("select itemid,aid from %t where $sql",$param) as $value){
- if($value['aid']) C::t('attachment')->delete_by_aid($value['aid']);
- $dels[]=$value['itemid'];
- }
- if(parent::delete($dels)){
- C::t('vote_item_count')->delete_by_itemid($dels);
- }
-
- //更新已有项目
- $addcopyaids=array();
- foreach($item as $key => $value){
- if(empty($value['content']) && !$value['aid']) self::delete_by_itemid($key);
- $value['content']=getstr($value['content']);
- parent::update($key,$value);
- }
-
- //添加新项目
- $disp=DB::result_first("select max(disp) from %t where voteid=%d",array($this->_table,$voteid));
-
- foreach($itemnew as $key =>$value){
- if(empty($value['content']) && !$value['aid']) continue;
- $disp++;
- $setarr=array('voteid'=>$voteid,
- 'content'=>getstr($value['content']),
- 'type'=>$value['aid']?2:1,
- 'aid'=>intval($value['aid']),
- 'disp'=>$disp,
- 'number'=>0
- );
- if(parent::insert($setarr,1) && $setarr['aid']){
- C::t('attachment')->addcopy_by_aid($setarr['aid']);
- }
- }
- return true;
- }
-
-
-
- public function update_number_by_itemid($itemids,$uid){
- $itemids=(array)$itemids;
-
- if($ret=DB::query(" update %t SET number=number+1 where itemid IN (%n) ",array($this->_table,$itemids))){
- C::t('vote_item_count')->insert_by_itemid($itemids,$uid);
- }
- return $ret;
- }
-}
-?>
diff --git a/core/class/table/table_vote_item_count.php b/core/class/table/table_vote_item_count.php
deleted file mode 100644
index 88557e2..0000000
--- a/core/class/table/table_vote_item_count.php
+++ /dev/null
@@ -1,37 +0,0 @@
-_table = 'vote_item_count';
- $this->_pk = '';
-
- parent::__construct();
- }
-
- public function insert_by_itemid($itemids,$uid){
- $itemids=(array)$itemids;
- $ret=0;
- foreach($itemids as $itemid){
- $ret+=parent::insert(array('uid'=>$uid,'itemid'=>$itemid,'dateline'=>TIMESTAMP),0,1);
- }
- return $ret;
- }
- public function delete_by_itemid($itemids){
- $itemids=(array)$itemids;
- return DB::delete($this->_table,"itemid IN (".dimplode($itemids).")");
- }
-}
-?>
diff --git a/core/class/table/table_wx_app.php b/core/class/table/table_wx_app.php
deleted file mode 100644
index 86c3a39..0000000
--- a/core/class/table/table_wx_app.php
+++ /dev/null
@@ -1,25 +0,0 @@
-_table = 'wx_app';
- $this->_pk = 'appid';
-
- parent::__construct();
- }
-
-}
-?>
diff --git a/core/core_version.php b/core/core_version.php
index 0b0a7a1..6e6694e 100644
--- a/core/core_version.php
+++ b/core/core_version.php
@@ -14,7 +14,7 @@ if(!defined('CORE_VERSION')) {
define('CORE_VERSION', '2.02');
define('CORE_RELEASE', '20180909');
define('CORE_FIXBUG' , '20000000');
- define('CORE_XHVERSION', '1.87.2');
+ define('CORE_XHVERSION', '1.87.3');
define('CORE_XHRELEASE', '20240129');
define('CORE_XHFIXBUG' , '20240110');
}
\ No newline at end of file
diff --git a/core/cron/cron_cache_cleanup_week.php b/core/cron/cron_cache_cleanup_week.php
deleted file mode 100644
index 74371ef..0000000
--- a/core/cron/cron_cache_cleanup_week.php
+++ /dev/null
@@ -1,50 +0,0 @@
-delete($value['cachekey']);
-}
-
-function removedir($dirname, $keepdir = FALSE ,$time=0) {
- $dirname = str_replace(array( "\n", "\r", '..'), array('', '', ''), $dirname);
-
- if(!is_dir($dirname)) {
- return FALSE;
- }
- $handle = opendir($dirname);
- while(($file = readdir($handle)) !== FALSE) {
- if($file != '.' && $file != '..') {
- $dir = $dirname . DIRECTORY_SEPARATOR . $file;
- $mtime=filemtime($dir);
- is_dir($dir) ? removedir($dir) : (((TIMESTAMP-$mtime)>$time)? unlink($dir):'');
- }
- }
- closedir($handle);
- return !$keepdir ? (@rmdir($dirname) ? TRUE : FALSE) : TRUE;
-}
-?>
diff --git a/core/cron/cron_clean_copys0_attachment_by_month.php b/core/cron/cron_clean_copys0_attachment_by_month.php
deleted file mode 100644
index aa68801..0000000
--- a/core/cron/cron_clean_copys0_attachment_by_month.php
+++ /dev/null
@@ -1,21 +0,0 @@
-delete($value['aid']);
- }
-}
\ No newline at end of file
diff --git a/core/cron/cron_clean_notification_month.php b/core/cron/cron_clean_notification_month.php
deleted file mode 100644
index 3f1a427..0000000
--- a/core/cron/cron_clean_notification_month.php
+++ /dev/null
@@ -1,19 +0,0 @@
-delete_clear(0, 30);
-C::t('notification')->delete_clear(1, 30);
-C::t('notification')->optimize();
-
-?>
diff --git a/core/cron/cron_database_backup.php b/core/cron/cron_database_backup.php
deleted file mode 100644
index 1ca54a9..0000000
--- a/core/cron/cron_database_backup.php
+++ /dev/null
@@ -1,227 +0,0 @@
-version() > '4.1' ? 'Engine' : 'Type';
-$tablepre = $_G['config']['db'][1]['tablepre'];
-$dbcharset = $_G['config']['db'][1]['dbcharset'];
-$backupdir = C::t('setting')->fetch('backupdir');
-if(!$backupdir) {
- $backupdir = random(6);
- @mkdir('./data/backup_'.$backupdir, 0777);
- C::t('setting')->update('backupdir',$backupdir);
-}
-$backupdir = 'backup_'.$backupdir;
-if(!is_dir('./data/'.$backupdir)) {
- mkdir('./data/'.$backupdir, 0777);
-}
-global $excepttables;
-$excepttables=array();
-$filename=date('ymd').'_'.random(8);
-DB::query('SET SQL_QUOTE_SHOW_CREATE=0', 'SILENT');
-$tables = arraykeys2(fetchtablelist($tablepre), 'Name');
-$memberexist = array_search(DB::table('user'), $tables);
-if($memberexist !== FALSE) {
- unset($tables[$memberexist]);
- array_unshift($tables, DB::table('user'));
-}
-$time = dgmdate(TIMESTAMP);
-$success=false;
-global $complete,$startrow;
-$startrow=0;
-$volume=0;$tableid = 0;$startfrom = 0;
-while(!$success){
- $volume += 1;
- $idstring = '# Identify: '.base64_encode("$_G[timestamp],".$_G['setting']['version'].",dzz,multivol,{$volume},{$tablepre},{$dbcharset}")."\n";
- $dumpcharset = str_replace('-', '', $_G['charset']);
- $backupfilename = './data/'.$backupdir.'/'.str_replace(array('/', '\\', '.', "'"), '', $filename);
- $sqldump = '';
- $startfrom=$startrow;
- if(!$tableid && $volume == 1) {
- foreach($tables as $table) {
- $sqldump .= sqldumptablestruct($table);
- }
- }
- $complete = TRUE;
- for(; $complete && $tableid < count($tables) && strlen($sqldump) + 500 < 2048 * 1000; $tableid++) {
- $sqldump .= sqldumptable($tables[$tableid], $startfrom, strlen($sqldump));
- if($complete) {
- $startfrom = 0;
- }
- }
-
- $dumpfile = $backupfilename."-%s".'.sql';
- !$complete && $tableid--;
- if(trim($sqldump)) {
- $sqldump = "$idstring".
- "# \n".
- "# DzzOffice Multi-Volume Data Dump Vol.$volume\n".
- "# Version: DzzOffice! ".$_G['setting']['version']."\n".
- "# Time: $time\n".
- "# Type: dzz\n".
- "# Table Prefix: $tablepre\n".
- "#\n".
- "# Dzz! Home: http://www.dzzoffice.com\n".
- "# Please visit our website for newest infomation about DzzOffice\n".
- "# --------------------------------------------------------\n\n\n".
- $sqldump;
- $dumpfilename = sprintf($dumpfile, $volume);
- @$fp = fopen($dumpfilename, 'wb');
- @flock($fp, 2);
- if(@!fwrite($fp, $sqldump)) {
- @fclose($fp);
- runlog('database_export','database_export_file_invalid',1);
- } else {
- fclose($fp);
- unset($sqldump, $zip, $content);
- continue;
- }
- } else {
- $success=true;
- C::t('cache')->insert(array(
- 'cachekey' => 'db_export',
- 'cachevalue' => serialize(array('dateline' => $_G['timestamp'])),
- 'dateline' => $_G['timestamp'],
- ), false, true);
-
- }
-}
-function fetchtablelist($tablepre = '') {
- global $db;
- $arr = explode('.', $tablepre);
- $dbname = $arr[1] ? $arr[0] : '';
- $tablepre = str_replace('_', '\_', $tablepre);
- $sqladd = $dbname ? " FROM $dbname LIKE '$arr[1]%'" : "LIKE '$tablepre%'";
- $tables = $table = array();
- $query = DB::query("SHOW TABLE STATUS $sqladd");
- while($table = DB::fetch($query)) {
- $table['Name'] = ($dbname ? "$dbname." : '').$table['Name'];
- $tables[] = $table;
- }
- return $tables;
-}
-
-function arraykeys2($array, $key2) {
- $return = array();
- foreach($array as $val) {
- $return[] = $val[$key2];
- }
- return $return;
-}
-
-function sqldumptablestruct($table) {
- global $_G, $db, $excepttables;
- if(in_array($table, $excepttables)) {
- return;
- }
- $createtable = DB::query("SHOW CREATE TABLE $table", 'SILENT');
- if(!DB::error()) {
- $tabledump = "DROP TABLE IF EXISTS $table;\n";
- } else {
- return '';
- }
-
-
- $create = $db -> fetch_row($createtable);
-
- if (strpos($table, '.') !== FALSE) {
- $tablename = substr($table, strpos($table, '.') + 1);
- $create[1] = str_replace("CREATE TABLE $tablename", 'CREATE TABLE ' . $table, $create[1]);
- }
- $tabledump .= $create[1];
- $tablestatus = DB::fetch_first("SHOW TABLE STATUS LIKE '$table'");
- $tabledump .= (($tablestatus['Auto_increment'] && (strpos($tabledump,'AUTO_INCREMENT')===false))? " AUTO_INCREMENT=$tablestatus[Auto_increment]" : ''). ";\n\n";
- if ($_GET['sqlcompat'] == 'MYSQL40' && $db -> version() >= '4.1' && $db -> version() < '5.1') {
- if ($tablestatus['Auto_increment'] <> '') {
- $temppos = strpos($tabledump, ',');
- $tabledump = substr($tabledump, 0, $temppos) . ' auto_increment' . substr($tabledump, $temppos);
- }
- if ($tablestatus['Engine'] == 'MEMORY') {
- $tabledump = str_replace('TYPE=MEMORY', 'TYPE=HEAP', $tabledump);
- }
- }
- return $tabledump;
-}
-
-function sqldumptable($table, $startfrom = 0, $currsize = 0) {
- global $_G, $startrow, $dumpcharset, $complete, $excepttables;
- $db = & DB::object();
- $offset = 300;
- $tabledump = '';
- $tablefields = array();
- $_GET['usehex']=TRUE;
- $query = DB::query("SHOW FULL COLUMNS FROM $table", 'SILENT');
- if(strexists($table, 'adminsessions')) {
- return ;
- } elseif(!$query && DB::errno() == 1146) {
- return;
- } elseif(!$query) {
- $_GET['usehex'] = FALSE;
- } else {
- while($fieldrow = DB::fetch($query)) {
- $tablefields[] = $fieldrow;
- }
- }
-
- if(!in_array($table, $excepttables)) {
- $tabledumped = 0;
- $numrows = $offset;
- $firstfield = $tablefields[0];
-
- while($currsize + strlen($tabledump) + 500 < 2048 * 1000 && $numrows == $offset) {
- if($firstfield['Extra'] == 'auto_increment') {
- $selectsql = "SELECT * FROM $table WHERE $firstfield[Field] > $startfrom ORDER BY $firstfield[Field] LIMIT $offset";
- } else {
- $selectsql = "SELECT * FROM $table LIMIT $startfrom, $offset";
- }
- $tabledumped = 1;
- $rows = DB::query($selectsql);
- $numfields = $db->num_fields($rows);
-
- $numrows = DB::num_rows($rows);
- while($row = $db->fetch_row($rows)) {
- $comma = $t = '';
- for($i = 0; $i < $numfields; $i++) {
-
- $t .= $comma.($_GET['usehex'] && !empty($row[$i]) && (strexists($tablefields[$i]['Type'], 'char') || strexists($tablefields[$i]['Type'], 'text')) ? '0x'.bin2hex($row[$i]) : '\''.mysql_escape_string($row[$i]).'\'');
- $comma = ',';
- }
-
- if(strlen($t) + $currsize + strlen($tabledump) + 500 < 2048 * 1000) {
- if($firstfield['Extra'] == 'auto_increment') {
- $startfrom = $row[0];
- } else {
- $startfrom++;
- }
- $tabledump .= "INSERT INTO $table VALUES ($t);\n";
-
- } else {
-
- $complete = FALSE;
- break 2;
- }
- }
- }
- $startrow = $startfrom;
- $tabledump .= "\n";
- }
- return $tabledump;
-}
-
-?>
diff --git a/core/cron/cron_fragment_cleanup_day.php b/core/cron/cron_fragment_cleanup_day.php
deleted file mode 100644
index 8cc6084..0000000
--- a/core/cron/cron_fragment_cleanup_day.php
+++ /dev/null
@@ -1,35 +0,0 @@
-init($arr['bz'],1);
- if(is_array($oss) && $oss['error']) continue;
- $response=$oss->abort_multipart_upload($arr['bucket'], $arr['object'], $arr['upload_id']);
- if($response->isOk()){
- $dkeys[]=$value['cachekey'];
- }
- }else{
- $dkeys[]=$value['cachekey'];
- }
-}
-if($dkeys) C::t('cache')->delete($dkeys);
-?>
diff --git a/core/cron/cron_getAtoken_by_Rtoken_week.php b/core/cron/cron_getAtoken_by_Rtoken_week.php
deleted file mode 100644
index 1ed29c8..0000000
--- a/core/cron/cron_getAtoken_by_Rtoken_week.php
+++ /dev/null
@@ -1,34 +0,0 @@
-getAccessTokenByRefreshToken($value['refresh_token'],$value['scope']) ){
- $token['refreshtime']=TIMESTAMP;
- if($token['access_token']) C::t('connect_pan')->update($value['id'],$token);
- }
- }
-}
-?>
diff --git a/core/cron/cron_imgcache_cleanup_week.php b/core/cron/cron_imgcache_cleanup_week.php
deleted file mode 100644
index 284af6b..0000000
--- a/core/cron/cron_imgcache_cleanup_week.php
+++ /dev/null
@@ -1,38 +0,0 @@
-$time)? unlink($dir):'');
- }
- }
- closedir($handle);
- return !$keepdir ? (@rmdir($dirname) ? TRUE : FALSE) : TRUE;
-}
-?>
diff --git a/core/cron/cron_movetospace_attachment.php b/core/cron/cron_movetospace_attachment.php
deleted file mode 100644
index 6e2264b..0000000
--- a/core/cron/cron_movetospace_attachment.php
+++ /dev/null
@@ -1,22 +0,0 @@
-getRemoteId();
-if($remoteid>1){
- foreach(DB::fetch_all("select * from %t where dateline<%d and remote<2 and filesize>0 ORDER BY dateline DESC limit $limit",array('attachment',$delay,$limit)) as $value){
- io_remote::Migrate($value,$remoteid);
- }
-}
\ No newline at end of file
diff --git a/core/function/cache/cache_fields_optional.php b/core/function/cache/cache_fields_optional.php
deleted file mode 100644
index 76e544d..0000000
--- a/core/function/cache/cache_fields_optional.php
+++ /dev/null
@@ -1,33 +0,0 @@
-fetch_all_by_available_required(1, 0) as $field) {
- $choices = array();
- if($field['selective']) {
- foreach(explode("\n", $field['choices']) as $item) {
- list($index, $choice) = explode('=', $item);
- $choices[trim($index)] = trim($choice);
- }
- $field['choices'] = $choices;
- } else {
- unset($field['choices']);
- }
- $data['field_'.$field['fieldid']] = $field;
- }
-
- savecache('fields_optional', $data);
-}
-
-?>
\ No newline at end of file
diff --git a/core/function/cache/cache_fields_register.php b/core/function/cache/cache_fields_register.php
deleted file mode 100644
index a10b2d2..0000000
--- a/core/function/cache/cache_fields_register.php
+++ /dev/null
@@ -1,26 +0,0 @@
-fetch_all_by_available_showinregister(1, 1) as $field) {
- $choices = array();
- if($field['selective']) {
- foreach(explode("\n", $field['choices']) as $item) {
- list($index, $choice) = explode('=', $item);
- $choices[trim($index)] = trim($choice);
- }
- $field['choices'] = $choices;
- } else {
- unset($field['choices']);
- }
- $data['field_'.$field['fieldid']] = $field;
- }
- savecache('fields_register', $data);
-}
-
-?>
\ No newline at end of file
diff --git a/core/function/cache/cache_fields_required.php b/core/function/cache/cache_fields_required.php
deleted file mode 100644
index 9617a6f..0000000
--- a/core/function/cache/cache_fields_required.php
+++ /dev/null
@@ -1,34 +0,0 @@
-fetch_all_by_available_required(1, 1) as $field) {
- $choices = array();
- if($field['selective']) {
- foreach(explode("\n", $field['choices']) as $item) {
- list($index, $choice) = explode('=', $item);
- $choices[trim($index)] = trim($choice);
- }
- $field['choices'] = $choices;
- } else {
- unset($field['choices']);
- }
- $data['field_'.$field['fieldid']] = $field;
- }
-
- savecache('fields_required', $data);
-}
-
-?>
\ No newline at end of file
diff --git a/core/function/cache/cache_organization.php b/core/function/cache/cache_organization.php
deleted file mode 100644
index db35262..0000000
--- a/core/function/cache/cache_organization.php
+++ /dev/null
@@ -1,22 +0,0 @@
-fetch_uids_by_orgid($value['orgid']);//获取部门所有用户(不包括下级)
- $value['moderators']=C::t('organization_admin')->fetch_moderators_by_orgid($value['orgid']);
- $data[$value['orgid']]=$value;
- }*/
- savecache('organization', $data);
-}
-
-?>
diff --git a/core/function/cache/cache_profilesetting.php b/core/function/cache/cache_profilesetting.php
deleted file mode 100644
index eccaaf2..0000000
--- a/core/function/cache/cache_profilesetting.php
+++ /dev/null
@@ -1,13 +0,0 @@
-fetch_all_by_available(1);
-
- savecache('profilesetting', $data);
-}
-
-?>
\ No newline at end of file
diff --git a/core/function/cache/cache_setting.php b/core/function/cache/cache_setting.php
deleted file mode 100644
index 347bce3..0000000
--- a/core/function/cache/cache_setting.php
+++ /dev/null
@@ -1,135 +0,0 @@
-fetch_all_not_key($skipkeys) as $setting) {
- if($setting['skey'] == 'attachdir') {
- $setting['svalue'] = preg_replace("/\.asp|\\0/i", '0', $setting['svalue']);
- $setting['svalue'] = str_replace('\\', '/', substr($setting['svalue'], 0, 2) == './' ? DZZ_ROOT.$setting['svalue'] : $setting['svalue']);
- $setting['svalue'] .= substr($setting['svalue'], -1, 1) != '/' ? '/' : '';
- } elseif($setting['skey'] == 'attachurl') {
- $setting['svalue'] .= substr($setting['svalue'], -1, 1) != '/' ? '/' : '';
-
- } elseif(in_array($setting['skey'], $serialized)) {
- $setting['svalue'] = @dunserialize($setting['svalue'], $setting['skey']);
- if($setting['skey'] == 'search') {
- foreach($setting['svalue'] as $key => $val) {
- foreach($val as $k => $v) {
- $setting['svalue'][$key][$k] = max(0, intval($v));
- }
- }
- }
- }
- $_G['setting'][$setting['skey']] = $data[$setting['skey']] = $setting['svalue'];
- }
-
- include_once DZZ_ROOT.'./core/core_version.php';
- $_G['setting']['version'] = $data['version'] = CORE_VERSION;
-
- $data['sitemessage']['time'] = !empty($data['sitemessage']['time']) ? $data['sitemessage']['time'] * 1000 : 0;
-
- $data['disallowfloat'] = is_array($data['disallowfloat']) ? implode('|', $data['disallowfloat']) : '';
-
- if(!$data['imagelib']) unset($data['imageimpath']);
-
- $data['iconview']=C::t('iconview')->fetch_all();
-
-
- $data['seccodedata'] = is_array($data['seccodedata']) ? $data['seccodedata'] : array();
- if($data['seccodedata']['type'] == 2) {
- if(extension_loaded('ming')) {
- unset($data['seccodedata']['background'], $data['seccodedata']['adulterate'],
- $data['seccodedata']['ttf'], $data['seccodedata']['angle'],
- $data['seccodedata']['color'], $data['seccodedata']['size'],
- $data['seccodedata']['animator']);
- } else {
- $data['seccodedata']['animator'] = 0;
- }
- } elseif($data['seccodedata']['type'] == 99) {
- $data['seccodedata']['width'] = 50;
- $data['seccodedata']['height'] = 34;
- }
-
- $data['watermarktype'] = !empty($data['watermarktype']) ? dunserialize($data['watermarktype']) : array();
- $data['watermarktext'] = !empty($data['watermarktext']) ? dunserialize($data['watermarktext']) : array();
- foreach($data['watermarktype'] as $k => $v) {
- if($data['watermarktype'][$k] == 'text' && $data['watermarktext']['text'][$k]) {
- if($data['watermarktext']['text'][$k] && strtoupper(CHARSET) != 'UTF-8') {
- $data['watermarktext']['text'][$k] = diconv($data['watermarktext']['text'][$k], CHARSET, 'UTF-8', true);
- }
- $data['watermarktext']['text'][$k] = bin2hex($data['watermarktext']['text'][$k]);
- if(file_exists('static/image/seccode/font/en/'.$data['watermarktext']['fontpath'][$k])) {
- $data['watermarktext']['fontpath'][$k] = 'static/image/seccode/font/en/'.$data['watermarktext']['fontpath'][$k];
- } elseif(file_exists('static/image/seccode/font/ch/'.$data['watermarktext']['fontpath'][$k])) {
- $data['watermarktext']['fontpath'][$k] = 'static/image/seccode/font/ch/'.$data['watermarktext']['fontpath'][$k];
- } else {
- $data['watermarktext']['fontpath'][$k] = 'static/image/seccode/font/'.$data['watermarktext']['fontpath'][$k];
- }
- $data['watermarktext']['color'][$k] = preg_replace_callback('/#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})/', function($matches) { return hexdec($matches[1]).','.hexdec($matches[2]).','.hexdec($matches[3]); }, $data['watermarktext']['color'][$k]);
- $data['watermarktext']['shadowcolor'][$k] = preg_replace_callback('/#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})/', function($matches) { return hexdec($matches[1]).','.hexdec($matches[2]).','.hexdec($matches[3]); }, $data['watermarktext']['shadowcolor'][$k]);
-
-
- } else {
- $data['watermarktext']['text'][$k] = '';
- $data['watermarktext']['fontpath'][$k] = '';
- $data['watermarktext']['color'][$k] = '';
- $data['watermarktext']['shadowcolor'][$k] = '';
- }
- }
- if(!$data['jspath']) {
- $data['jspath'] = 'static/js/';
- }
-
-
- $reginputbwords = array('username', 'password', 'password2', 'email');
- if(in_array($data['reginput']['username'], $reginputbwords) || !preg_match('/^[A-z]\w+?$/', $data['reginput']['username'])) {
- $data['reginput']['username'] = random(6);
- }
- if(in_array($data['reginput']['password'], $reginputbwords) || !preg_match('/^[A-z]\w+?$/', $data['reginput']['password'])) {
- $data['reginput']['password'] = random(6);
- }
- if(in_array($data['reginput']['password2'], $reginputbwords) || !preg_match('/^[A-z]\w+?$/', $data['reginput']['password2'])) {
- $data['reginput']['password2'] = random(6);
- }
- if(in_array($data['reginput']['email'], $reginputbwords) || !preg_match('/^[A-z]\w+?$/', $data['reginput']['email'])) {
- $data['reginput']['email'] = random(6);
- }
-
- $data['verhash']=random(3);
-
- $data['output'] = $output;
-
- savecache('setting', $data);
- $_G['setting'] = $data;
-}
-
-function parsehighlight($highlight) {
- if($highlight) {
- $colorarray = array('', 'red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'purple', 'gray');
- $string = sprintf('%02d', $highlight);
- $stylestr = sprintf('%03b', $string[0]);
-
- $style = ' style="';
- $style .= $stylestr[0] ? 'font-weight: bold;' : '';
- $style .= $stylestr[1] ? 'font-style: italic;' : '';
- $style .= $stylestr[2] ? 'text-decoration: underline;' : '';
- $style .= $string[1] ? 'color: '.$colorarray[$string[1]] : '';
- $style .= '"';
- } else {
- $style = '';
- }
- return $style;
-}
-
-?>
diff --git a/core/function/cache/cache_smileycodes.php b/core/function/cache/cache_smileycodes.php
deleted file mode 100644
index 2e66b1c..0000000
--- a/core/function/cache/cache_smileycodes.php
+++ /dev/null
@@ -1,21 +0,0 @@
-fetch_all_by_type('smiley', 1) as $type) {
- foreach(C::t('smiley')->fetch_all_by_type_code_typeid('smiley', $type['typeid']) as $smiley) {
- if($size = @getimagesize('./static/image/smiley/'.$type['directory'].'/'.$smiley['url'])) {
- $data[$smiley['id']] = $smiley['code'];
- }
- }
- }
-
- savecache('smileycodes', $data);
-}
-
-?>
\ No newline at end of file
diff --git a/core/function/cache/cache_smileytypes.php b/core/function/cache/cache_smileytypes.php
deleted file mode 100644
index e7439af..0000000
--- a/core/function/cache/cache_smileytypes.php
+++ /dev/null
@@ -1,20 +0,0 @@
-fetch_all_by_type('smiley', 1) as $type) {
- $typeid = $type['typeid'];
- unset($type['typeid']);
- if(C::t('smiley')->count_by_type_code_typeid('smiley', $typeid)) {
- $data[$typeid] = $type;
- }
- }
-
- savecache('smileytypes', $data);
-}
-
-?>
\ No newline at end of file
diff --git a/core/function/cache/cache_smilies.php b/core/function/cache/cache_smilies.php
deleted file mode 100644
index 5e12cdc..0000000
--- a/core/function/cache/cache_smilies.php
+++ /dev/null
@@ -1,20 +0,0 @@
- array(), 'replacearray' => array(), 'typearray' => array());
- foreach(C::t('smiley')->fetch_all_cache() as $smiley) {
- $data['searcharray'][$smiley['id']] = '/'.preg_quote(dhtmlspecialchars($smiley['code']), '/').'/';
- $data['replacearray'][$smiley['id']] = $smiley['url'];
- $data['typearray'][$smiley['id']] = $smiley['typeid'];
- }
-
- savecache('smilies', $data);
-}
-
-?>
\ No newline at end of file
diff --git a/core/function/cache/cache_smilies_js.php b/core/function/cache/cache_smilies_js.php
deleted file mode 100644
index 289e8a6..0000000
--- a/core/function/cache/cache_smilies_js.php
+++ /dev/null
@@ -1,57 +0,0 @@
-fetch('fastsmiley', true);
- $return_type = 'var smilies_type = new Array();';
- $return_array = 'var smilies_array = new Array();var smilies_fast = new Array();';
- $spp = $_G['setting']['smcols'] * $_G['setting']['smrows'];
- $fpre = '';
- foreach(C::t('imagetype')->fetch_all_by_type('smiley', 1) as $type) {
- $return_data = array();
- $return_datakey = '';
- $i = 0;$j = 1;$pre = '';
- $return_type .= 'smilies_type[\'_'.$type['typeid'].'\'] = [\''.str_replace('\'', '\\\'', $type['name']).'\', \''.str_replace('\'', '\\\'', $type['directory']).'\'];';
- $return_datakey .= 'smilies_array['.$type['typeid'].'] = new Array();';
- foreach(C::t('smiley')->fetch_all_by_type_code_typeid('smiley', $type['typeid']) as $smiley) {
- if($i >= $spp) {
- $return_data[$j] = 'smilies_array['.$type['typeid'].']['.$j.'] = ['.$return_data[$j].'];';
- $j++;$i = 0;$pre = '';
- }
- if($size = @getimagesize(DZZ_ROOT.'./static/image/smiley/'.$type['directory'].'/'.$smiley['url'])) {
- $smiley['code'] = str_replace('\'', '\\\'', $smiley['code']);
- $smileyid = $smiley['id'];
- $s = smthumb($size, $_G['setting']['smthumb']);
- $smiley['w'] = $s['w'];
- $smiley['h'] = $s['h'];
- $l = smthumb($size);
- $smiley['lw'] = $l['w'];
- unset($smiley['id'], $smiley['directory']);
- $return_data[$j] .= $pre.'[\''.$smileyid.'\', \''.$smiley['code'].'\',\''.str_replace('\'', '\\\'', $smiley['url']).'\',\''.$smiley['w'].'\',\''.$smiley['h'].'\',\''.$smiley['lw'].'\',\''.$smiley['title'].'\']';
- if(is_array($fastsmiley[$type['typeid']]) && in_array($smileyid, $fastsmiley[$type['typeid']])) {
- $return_fast .= $fpre.'[\''.$type['typeid'].'\',\''.$j.'\',\''.$i.'\']';
- $fpre = ',';
- }
- $pre = ',';
- }
- $i++;
- }
- $return_data[$j] = 'smilies_array['.$type['typeid'].']['.$j.'] = ['.$return_data[$j].'];';
- $return_array .= $return_datakey.implode('', $return_data);
- }
- $cachedir = DZZ_ROOT.'./data/cache/';
- if(@$fp = fopen($cachedir.'smilies_var.js', 'w')) {
- fwrite($fp, 'var smthumb = \''.$_G['setting']['smthumb'].'\';'.$return_type.$return_array.'var smilies_fast=['.$return_fast.'];');
- fclose($fp);
- } else {
- exit('Can not write to cache files, please check directory ./data/ and ./data/cache/ .');
- }
-
-}
-
-?>
\ No newline at end of file
diff --git a/core/function/cache/cache_usergroups.php b/core/function/cache/cache_usergroups.php
deleted file mode 100644
index 62df322..0000000
--- a/core/function/cache/cache_usergroups.php
+++ /dev/null
@@ -1,44 +0,0 @@
-fetch_all();
- foreach(C::t('usergroup')->range_orderby_creditshigher() as $key=>$value) {
- $group = array_merge(array('groupid' => $value['groupid'], 'type' => $value['type'], 'grouptitle' => $value['grouptitle'], 'creditshigher' => $value['creditshigher'], 'creditslower' => $value['creditslower'], 'stars' => $value['stars'], 'color' => $value['color'], 'icon' => $value['icon'], 'system' => $value['system']), $data_uf[$key]);
-
- $groupid = $group['groupid'];
- $group['grouptitle'] = $group['color'] ? ''.$group['grouptitle'].'' : $group['grouptitle'];
- unset($group['creditshigher'], $group['creditslower']);
- unset($group['groupid']);
- $data[$groupid] = $group;
- }
- savecache('usergroups', $data);
-
- build_cache_usergroups_single();
-
-
-}
-
-function build_cache_usergroups_single() {
- $data_uf = C::t('usergroup_field')->fetch_all();
- foreach(C::t('usergroup')->range() as $gid => $data) {
- $data = array_merge($data, (array)$data_uf[$gid]);
- $ratearray = array();
- if($data['raterange']) {
- foreach(explode("\n", $data['raterange']) as $rating) {
- $rating = explode("\t", $rating);
- $ratearray[$rating[0]] = array('isself' => $rating[1], 'min' => $rating[2], 'max' => $rating[3], 'mrpd' => $rating[4]);
- }
- }
- $data['raterange'] = $ratearray;
- $data['grouptitle'] = $data['color'] ? ''.$data['grouptitle'].'' : $data['grouptitle'];
- $data['grouptype'] = $data['type'];
- $data['grouppublic'] = $data['system'] != 'private';
- $data['maxspacesize'] = intval($data['maxspacesize']);
- unset($data['type'], $data['system'], $data['creditshigher'], $data['creditslower'], $data['groupavatar'], $data['admingid']);
- savecache('usergroup_'.$data['groupid'], $data);
- }
-}
diff --git a/core/function/cache/cache_userstats.php b/core/function/cache/cache_userstats.php
deleted file mode 100644
index 0944ce5..0000000
--- a/core/function/cache/cache_userstats.php
+++ /dev/null
@@ -1,16 +0,0 @@
-count();
- $member = C::t('user')->range(0, 1, 'DESC');
- $member = current($member);
- $newsetuser = $member['username'];
- $data = array('totalmembers' => $totalmembers, 'newsetuser' => $newsetuser);
- savecache('userstats', $data);
-}
-
-?>
\ No newline at end of file
diff --git a/core/function/function_cache.php b/core/function/function_cache.php
deleted file mode 100644
index 994bb09..0000000
--- a/core/function/function_cache.php
+++ /dev/null
@@ -1,162 +0,0 @@
-read()) {
-
- if(!in_array($entry, array('.', '..')) && preg_match("/^cache\_([\_\w]+)\.php$/", $entry, $entryr) && $entryr[1] != 'setting' && substr($entry, -4) == '.php' && is_file($cachedir.'/'.$entry)) {
- @include_once libfile('cache/'.$entryr[1], 'function');
- call_user_func('build_cache_'.$entryr[1]);
- }
- }
-
- //处理应用的缓存
- foreach(C::t('app_market')->fetch_all_identifier(1) as $value) {
- if(empty($value['app_path'])) $value['app_path']='dzz';
- $appdir=$value['app_path'];
- $dir=$value['identifier'];
- $cachedir = DZZ_ROOT.'./'.$appdir.'/'.$dir.'/cache';
- if(is_dir($cachedir)) {
- $cachedirhandle = dir($cachedir);
- while($entry = $cachedirhandle->read()) {
- if(!in_array($entry, array('.', '..')) && preg_match("/^cache\_([\_\w]+)\.php$/", $entry, $entryr) && substr($entry, -4) == '.php' && is_file($cachedir.'/'.$entry)) {
- try{
- @include_once $cachedir.'/'.$entry;
- //call_user_func('build_cache_'.$dir.'_'.$entryr[1]);
- if(function_exists('build_cache_'.$appdir.'_'.$dir.'_'.$entryr[1])) call_user_func('build_cache_'.$appdir.'_'.$dir.'_'.$entryr[1]);
- elseif(function_exists('build_cache_'.$dir.'_'.$entryr[1])) call_user_func('build_cache_'.$dir.'_'.$entryr[1]);
- elseif(function_exists('build_cache_app_'.$entryr[1])) call_user_func('build_cache_app_'.$entryr[1]);;
- }catch(Exception $e){continue;}
- }
- }
- }
- }
- } else {
-
- foreach($updatelist as $entry) {
- $entrys = explode(':', $entry);
-
- if(count($entrys) == 1) {//核心缓存
- @include_once libfile('cache/'.$entry, 'function');
- call_user_func('build_cache_'.$entry);
- }elseif(count($entrys)==2){//兼容原先默认dzz目录的情况,dzz目录内的可以忽略app_path;
- try{
- @include_once DZZ_ROOT.'./dzz/'.$entrys[0].'/cache/cache_'.$entrys[1].'.php';
- if(function_exists('build_cache_'.$entrys[0].'_'.$entrys[1])) call_user_func('build_cache_'.$entrys[0].'_'.$entrys[1]);
- elseif(function_exists('build_cache_app_'.$entryr[1])) call_user_func('build_cache_app_'.$entrys[1]);
- }catch(Exception $e){continue;}
- }elseif(count($entrys)==3){
- try{
- @include_once DZZ_ROOT.'./'.$entrys[0].'/'.$entrys[1].'/cache/cache_'.$entrys[2].'.php';
- if(function_exists('build_cache_'.$entrys[1].'_'.$entrys[2])) call_user_func('build_cache_'.$entrys[1].'_'.$entrys[2]);
- elseif(function_exists('build_cache_app_'.$entryr[1])) call_user_func('build_cache_app_'.$entrys[1]);
- }catch(Exception $e){continue;}
- } else {//插件缓存
-
- }
- }
- }
-
-}
-function writetocache($script, $cachedata, $prefix = 'cache_') {
- global $_G;
-
- $dir = DZZ_ROOT.'./data/sysdata/';
- if(!is_dir($dir)) {
- dmkdir($dir, 0777);
- }
- if($fp = @fopen("$dir$prefix$script.php", 'wb')) {
- fwrite($fp, "");
- fclose($fp);
- } else {
- exit('Can not write to cache files, please check directory ./data/ and ./data/sysdata/ .');
- }
-}
-function getcachevars($data, $type = 'VAR') {
- $evaluate = '';
- foreach($data as $key => $val) {
- if(!preg_match("/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/", $key)) {
- continue;
- }
- if(is_array($val)) {
- $evaluate .= "\$$key = ".arrayeval($val).";\n";
- } else {
- $val = addcslashes($val, '\'\\');
- $evaluate .= $type == 'VAR' ? "\$$key = '$val';\n" : "define('".strtoupper($key)."', '$val');\n";
- }
- }
- return $evaluate;
-}
-function smthumb($size, $smthumb = 50) {
- if($size[0] <= $smthumb && $size[1] <= $smthumb) {
- return array('w' => $size[0], 'h' => $size[1]);
- }
- $sm = array();
- $x_ratio = $smthumb / $size[0];
- $y_ratio = $smthumb / $size[1];
- if(($x_ratio * $size[1]) < $smthumb) {
- $sm['h'] = ceil($x_ratio * $size[1]);
- $sm['w'] = $smthumb;
- } else {
- $sm['w'] = ceil($y_ratio * $size[0]);
- $sm['h'] = $smthumb;
- }
- return $sm;
-}
-
-
-function arrayeval($array, $level = 0) {
- if(!is_array($array)) {
- return "'".$array."'";
- }
- if(is_array($array) && function_exists('var_export')) {
- return var_export($array, true);
- }
-
- $space = '';
- for($i = 0; $i <= $level; $i++) {
- $space .= "\t";
- }
- $evaluate = "Array\n$space(\n";
- $comma = $space;
- if(is_array($array)) {
- foreach($array as $key => $val) {
- $key = is_string($key) ? '\''.addcslashes($key, '\'\\').'\'' : $key;
- $val = !is_array($val) && (!preg_match("/^\-?[1-9]\d*$/", $val) || strlen($val) > 12) ? '\''.addcslashes($val, '\'\\').'\'' : $val;
- if(is_array($val)) {
- $evaluate .= "$comma$key => ".arrayeval($val, $level + 1);
- } else {
- $evaluate .= "$comma$key => $val";
- }
- $comma = ",\n$space";
- }
- }
- $evaluate .= "\n$space)";
- return $evaluate;
-}
-function cleartemplatecache() {
- clearHooksCache();
- $tpl = dir(DZZ_ROOT.'./data/template');
- while($entry = $tpl->read()) {
- if(preg_match("/(\.tpl\.php|\.js)$/", $entry)) {
- @unlink(DZZ_ROOT.'./data/template/'.$entry);
- }
- }
- $tpl->close();
-}
-function clearHooksCache(){
- @unlink(DZZ_ROOT.'./data/cache/tags.php');
-}
-
-?>
diff --git a/core/function/function_code.php b/core/function/function_code.php
deleted file mode 100644
index d38bd85..0000000
--- a/core/function/function_code.php
+++ /dev/null
@@ -1,527 +0,0 @@
-]*?>(.*?)<\/script>/i", '', $message);
- }
-
- if($allowat) {
- if(strpos($msglower, '[/uid]') !== FALSE) {
- //$message = preg_replace("/\[uid=(\d+)\](.+?)\[\/uid\]/ies", "parseat('\\1', '\\2' ,'uid')", $message);
- $message = preg_replace_callback("/\[uid=(\d+)\](.+?)\[\/uid\]/is", function($matches){ return parseat($matches[1], $matches[2],'uid'); }, $message);
- }
- if(strpos($msglower, '[/org]') !== FALSE) {
- //$message = preg_replace("/\[org=(\d+)\](.+?)\[\/org\]/ies", "parseat('\\1', '\\2','gid')", $message);
- $message = preg_replace_callback("/\[org=(\d+)\](.+?)\[\/org\]/is", function($matches){ return parseat($matches[1], $matches[2],'uid'); }, $message);
- }
- }
- if($allowsmilies) {
- $message = parsesmiles($message);
- }
-
- /*if($allowbbcode) {
- if(strpos($msglower, 'ed2k://') !== FALSE) {
- $message = preg_replace("/ed2k:\/\/(.+?)\//e", "parseed2k('\\1')", $message);
- }
- }*/
-
- if($allowbbcode) {
- if(strpos($msglower, '[/url]') !== FALSE) {
- //$message = preg_replace("/\[url(=((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|thunder|qqdl|synacast){1}:\/\/|www\.|mailto:)?([^\r\n\[\"']+?))?\](.+?)\[\/url\]/ies", "parseurl('\\1', '\\5', '\\2')", $message);
- $message = preg_replace_callback("/\[url(=((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|thunder|qqdl|synacast){1}:\/\/|www\.|mailto:)?([^\r\n\[\"']+?))?\](.+?)\[\/url\]/is", function($matches) { return parseurl($matches[1], $matches[5], $matches[2]); }, $message);
-
-
- }
- if(strpos($msglower, '[/email]') !== FALSE) {
- //$message = preg_replace("/\[email(=([a-z0-9\-_.+]+)@([a-z0-9\-_]+[.][a-z0-9\-_.]+))?\](.+?)\[\/email\]/ies", "parseemail('\\1', '\\4')", $message);
- $message = preg_replace_callback("/\[email(=([a-z0-9\-_.+]+)@([a-z0-9\-_]+[.][a-z0-9\-_.]+))?\](.+?)\[\/email\]/is", function($matches) { return parseemail($matches[1], $matches[4]); }, $message);
-
- }
-
- $nest = 0;
- while(strpos($msglower, '[table') !== FALSE && strpos($msglower, '[/table]') !== FALSE){
- //$message = preg_replace("/\[table(?:=(\d{1,4}%?)(?:,([\(\)%,#\w ]+))?)?\]\s*(.+?)\s*\[\/table\]/ies", "parsetable('\\1', '\\2', '\\3')", $message);
- $message = preg_replace_callback("/\[table(?:=(\d{1,4}%?)(?:,([\(\)%,#\w ]+))?)?\]\s*(.+?)\s*\[\/table\]/is", function($matches) { return parsetable($matches[1], $matches[2], $matches[3]); }, $message);
-
- if(++$nest > 4) break;
- }
- //修复UBB标签不闭合造成的问题,理论上所有标签都可以以此方法处理
- $message=preg_replace(array(
- "/\[u\](.+?)\[\/u\]/i",
- "/\[b\](.+?)\[\/b\]/i",
- "/\[s\](.+?)\[\/s\]/i",
- "/\[i\](.+?)\[\/i\]/i"
- ),
- array(
- "[uu]\\1[/uu]",
- "[bb]\\1[/bb]",
- "[ss]\\1[/ss]",
- "[ii]\\1[/ii]",
- ),$message);
-
- $message = str_replace(array(
- '[/color]', '[/backcolor]', '[/size]', '[/font]', '[/align]', '[bb]', '[/bb]', '[ss]', '[/ss]', '[hr]', '[/p]',
- '[i=s]', '[ii]', '[/ii]', '[uu]', '[/uu]', '[list]', '[list=1]', '[list=a]',
- '[list=A]', "\r\n[*]", '[*]', '[/list]', '[indent]', '[/indent]', '[/float]'
- ), array(
- '', '', '', '', '', '', '', '', '', '
', '
', '', '',
- '', '', '', '', '', '',
- '', '', '
', ''
- ), preg_replace(array(
- "/\[color=([#\w]+?)\]/i",
- "/\[color=((rgb|rgba)\([\d\s,]+?\))\]/i",
- "/\[backcolor=([#\w]+?)\]/i",
- "/\[backcolor=((rgb|rgba)\([\d\s,]+?\))\]/i",
- "/\[size=(\d{1,2}?)\]/i",
- "/\[size=(\d{1,2}(\.\d{1,2}+)?(px|pt)+?)\]/i",
- "/\[font=([^\[\<]+?)\]/i",
- "/\[align=(left|center|right)\]/i",
- "/\[p=(\d{1,2}|null), (\d{1,2}|null), (left|center|right)\]/i",
- "/\[float=left\]/i",
- "/\[float=right\]/i"
-
- ), array(
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "
",
- "",
- ""
- ), $message));
-
- if($allowmediacode){
- if(!defined('IN_MOBILE')) {
- if(strpos($msglower, '[/media]') !== FALSE) {
- //$message = preg_replace("/\[media=([\w,]+)\]\s*([^\[\<\r\n]+?)\s*\[\/media\]/ies", $allowmediacode ? "parsemedia('\\1', '\\2')" : "bbcodeurl('\\2', '{url}')", $message);
- $message = preg_replace_callback("/\[media=([\w,]+)\]\s*([^\[\<\r\n]+?)\s*\[\/media\]/is", function($matches) use($allowmediacode) { return $allowmediacode ? parsemedia($matches[1], $matches[2]) : bbcodeurl($matches[2], '{url}'); }, $message);
-
- }
- if(strpos($msglower, '[/audio]') !== FALSE) {
- //$message = preg_replace("/\[audio(=1)*\]\s*([^\[\<\r\n]+?)\s*\[\/audio\]/ies", $allowmediacode ? "parseaudio('\\2', 400)" : "bbcodeurl('\\2', '{url}')", $message);
- $message = preg_replace_callback("/\[audio(=1)*\]\s*([^\[\<\r\n]+?)\s*\[\/audio\]/is", function($matches) use($allowmediacode) { return $allowmediacode ? parseaudio($matches[2], 400) : bbcodeurl($matches[2], '{url}'); }, $message);
-
- }
- if(strpos($msglower, '[/flash]') !== FALSE) {
- //$message = preg_replace("/\[flash(=(\d+),(\d+))?\]\s*([^\[\<\r\n]+?)\s*\[\/flash\]/ies", $allowmediacode ? "parseflash('\\2', '\\3', '\\4');" : "bbcodeurl('\\4', '{url}')", $message);
- $message = preg_replace_callback("/\[flash(=(\d+),(\d+))?\]\s*([^\[\<\r\n]+?)\s*\[\/flash\]/is", function($matches) use($allowmediacode) { return $allowmediacode ? parseflash($matches[2], $matches[3], $matches[4]) : bbcodeurl($matches[4], '{url}'); }, $message);
-
- }
- } else {
- if(strpos($msglower, '[/media]') !== FALSE) {
- $message = preg_replace("/\[media=([\w,]+)\]\s*([^\[\<\r\n]+?)\s*\[\/media\]/is", "[media]\\2[/media]", $message);
- }
- if(strpos($msglower, '[/audio]') !== FALSE) {
- $message = preg_replace("/\[audio(=1)*\]\s*([^\[\<\r\n]+?)\s*\[\/audio\]/is", "[media]\\2[/media]", $message);
- }
- if(strpos($msglower, '[/flash]') !== FALSE) {
- $message = preg_replace("/\[flash(=(\d+),(\d+))?\]\s*([^\[\<\r\n]+?)\s*\[\/flash\]/is", "[media]\\4[/media]", $message);
- }
- }
- }
- $attrsrc = 'src';
- $allowimgcode=1;
- if(strpos($msglower, '[/img]') !== FALSE) {
- /*$message = preg_replace(array(
- "/\[img\]\s*([^\[\<\r\n]+?)\s*\[\/img\]/ies",
- "/\[img=(\d{1,4})[x|\,](\d{1,4})\]\s*([^\[\<\r\n]+?)\s*\[\/img\]/ies"
- ), $allowimgcode ? array(
- "parseimg(0, 0, '\\1')",
- "parseimg('\\1', '\\2', '\\3')"
- ) : ($allowbbcode ? array(
- (!defined('IN_MOBILE') ? "bbcodeurl('\\1', '{url}')" : "bbcodeurl('\\1', '')"),
- (!defined('IN_MOBILE') ? "bbcodeurl('\\3', '{url}')" : "bbcodeurl('\\3', '')"),
- ) : array("bbcodeurl('\\1', '{url}')", "bbcodeurl('\\3', '{url}')")), $message);*/
-
-
- $message = preg_replace_callback("/\[img\]\s*([^\[\<\r\n]+?)\s*\[\/img\]/is", function($matches) { return parseimg(0, 0, $matches[1]); }, $message);
- $message = preg_replace_callback("/\[img=(\d{1,4})[x|\,](\d{1,4})\]\s*([^\[\<\r\n]+?)\s*\[\/img\]/is", function($matches) { return parseimg($matches[1], $matches[2], $matches[3]);}, $message);
-
- }
- }
-
-
-
- unset($msglower);
-
-
- return $allowhtml ? $message : nl2br(str_replace(array("\t", ' ', ' '), array(' ', ' ', ' '), $message));
-}
-function parseurl($url, $text, $scheme) {
- global $_G;
- if(!$url && preg_match("/((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|thunder|qqdl|synacast){1}:\/\/|www\.)[^\[\"']+/i", trim($text), $matches)) {
- $url = $matches[0];
- $length = 65;
- if(strlen($url) > $length) {
- $text = substr($url, 0, intval($length * 0.5)).' ... '.substr($url, - intval($length * 0.3));
- }
- return ''.$text.'';
- } else {
- $url = substr($url, 1);
- if(substr(strtolower($url), 0, 4) == 'www.') {
- $url = 'http://'.$url;
- }
- $url = !$scheme ? $_G['siteurl'].$url : $url;
- return ''.$text.'';
- }
-}
-function parseat($uid,$text,$idtype='uid'){
- if($idtype=='uid') return ''.$text.'';
- elseif($idtype=='gid'){
- return ''.$text.'';
- }
-}
-function parseed2k($url) {
- global $_G;
- list(,$type, $name, $size,) = explode('|', $url);
- $url = 'ed2k://'.$url.'/';
- $name = addslashes($name);
- if($type == 'file') {
- $ed2kid = 'ed2k_'.random(3);
- return ''.dhtmlspecialchars(urldecode($name)).' ('.sizecount($size).')';
- } else {
- return ''.$url.'';
- }
-}
-function parseflash($w, $h, $url) {
- $w = !$w ? 550 : $w;
- $h = !$h ? 400 : $h;
- preg_match("/((https?){1}:\/\/|www\.)[^\r\n\[\"'\?]+(\.swf|\.flv)(\?[^\r\n\[\"'\?]+)?/i", $url, $matches);
- $url = $matches[0];
- $randomid = 'swf_'.random(3);
- if(fileext($url) != 'flv') {
- return '';
- } else {
- return '';
- }
-
-}
-function parseemail($email, $text) {
- $text = str_replace('\"', '"', $text);
- if(!$email && preg_match("/\s*([a-z0-9\-_.+]+)@([a-z0-9\-_]+[.][a-z0-9\-_.]+)\s*/i", $text, $matches)) {
- $email = trim($matches[0]);
- return ''.$email.'';
- } else {
- return ''.$text.'';
- }
-}
-function parsetable($width, $bgcolor, $message) {
-
- if(strpos($message, '[/tr]') === FALSE && strpos($message, '[/td]') === FALSE) {
- $rows = explode("\n", $message);
- $s = !defined('IN_MOBILE') ? '' : '>') : '';
- foreach($rows as $row) {
- $s .= '| '.str_replace(array('\|', '|', '\n'), array('|', ' | ', "\n"), $row).' |
';
- }
- $s .= '
';
- return $s;
- } else {
- if(!preg_match("/^\[tr(?:=([\(\)\s%,#\w]+))?\]\s*\[td([=\d,%]+)?\]/", $message) && !preg_match("/^]*?>\s*| ]*?>/", $message)) {
- return str_replace('\\"', '"', preg_replace("/\[tr(?:=([\(\)\s%,#\w]+))?\]|\[td([=\d,%]+)?\]|\[\/td\]|\[\/tr\]/", '', $message));
- }
- if(substr($width, -1) == '%') {
- $width = substr($width, 0, -1) <= 98 ? intval($width).'%' : '98%';
- } else {
- $width = intval($width);
- $width = $width ? ($width <= 560 ? $width.'px' : '98%') : '';
- }
- $message = preg_replace_callback("/\[tr(?:=([\(\)\s%,#\w]+))?\]\s*\[td(?:=(\d{1,4}%?))?\]/i", function($matches){
- return parsetrtd($matches[1], 0, 0, $matches[2]);
- }, $message);
- $message = preg_replace_callback("/\[\/td\]\s*\[td(?:=(\d{1,4}%?))?\]/i", function($matches){
- return parsetrtd('td', 0, 0, $matches[1]);
- }, $message);
- $message = preg_replace_callback("/\[tr(?:=([\(\)\s%,#\w]+))?\]\s*\[td(?:=(\d{1,2}),(\d{1,2})(?:,(\d{1,4}%?))?)?\]/i", function($matches){
- return parsetrtd($matches[1], $matches[2], $matches[3], $matches[4]);
- }, $message);
- $message = preg_replace_callback("/\[\/td\]\s*\[td(?:=(\d{1,2}),(\d{1,2})(?:,(\d{1,4}%?))?)?\]/i", function($matches){
- return parsetrtd('td', $matches[1], $matches[2], $matches[3]);
- }, $message);
- $message = preg_replace("/\[\/td\]\s*\[\/tr\]\s*/i", ' |
', $message);
- return (!defined('IN_MOBILE') ? '' : '>') : '').
- str_replace('\\"', '"', $message).'
';
- }
-}
-
-function parsetrtd($bgcolor, $colspan, $rowspan, $width) {
- return ($bgcolor == 'td' ? '' : '').' 1 ? ' colspan="'.$colspan.'"' : '').($rowspan > 1 ? ' rowspan="'.$rowspan.'"' : '').($width && !defined('IN_MOBILE') ? ' width="'.$width.'"' : '').'>';
-}
-
-function parsesmiles($message) {
- global $_G;
- static $enablesmiles;
- if($enablesmiles === null) {
- $enablesmiles = false;
- if(!empty($_G['cache']['smilies']) && is_array($_G['cache']['smilies'])) {
- foreach($_G['cache']['smilies']['replacearray'] as $key => $smiley) {
- $_G['cache']['smilies']['replacearray'][$key] = ' ';
- }
- $enablesmiles = true;
- }
- }
-
- $enablesmiles && $message = preg_replace($_G['cache']['smilies']['searcharray'], $_G['cache']['smilies']['replacearray'], $message);
-
- return $message;
-}
-function parseimg($width, $height, $src) {
-
- $img = ' 0 ? ' width="'.$width.'"' : '').($height > 0 ? ' height="'.$height.'"' : '').' src="{url}" border="0" alt="" />';
-
- $code = bbcodeurl($src, $img);
-
- return $code;
-}
-function parsemedia($params, $url) {
- $params = explode(',', $params);
- $width = intval($params[1]) > 800 ? 800 : intval($params[1]);
- $height = intval($params[2]) > 600 ? 600 : intval($params[2]);
-
- $url = addslashes($url);
- if(!in_array(strtolower(substr($url, 0, 6)), array('http:/', 'https:', 'ftp://', 'rtsp:/', 'mms://')) && !preg_match('/^static\//', $url) && !preg_match('/^data\//', $url)) {
- $url = 'http://'.$url;
- }
-
- if($flv = parseflv($url, $width, $height)) {
- return $flv;
- }
- if(in_array(count($params), array(3, 4))) {
- $type = $params[0];
- $url = htmlspecialchars(str_replace(array('<', '>'), '', str_replace('\\"', '\"', $url)));
- switch($type) {
- case 'mp3':
- case 'wma':
- case 'ra':
- case 'ram':
- case 'wav':
- case 'mid':
- return parseaudio($url, $width);
- case 'rm':
- case 'rmvb':
- case 'rtsp':
- $mediaid = 'media_'.random(3);
- return ' ';
- case 'flv':
- $randomid = 'flv_'.random(3);
- return '';
- case 'swf':
- $randomid = 'swf_'.random(3);
- return '';
- case 'asf':
- case 'asx':
- case 'wmv':
- case 'mms':
- case 'avi':
- case 'mpg':
- case 'mpeg':
- return '';
- case 'mov':
- return '';
- default:
- return ''.$url.'';
- }
- }
- return;
-}
-function parseflv($url, $width = 0, $height = 0) {
- global $_G;
- $lowerurl = strtolower($url);
- $flv = '';
- $imgurl = '';
- if($lowerurl != str_replace(array('player.youku.com/player.php/sid/','tudou.com/v/','player.ku6.com/refer/'), '', $lowerurl)) {
- $flv = $url;
- } elseif(strpos($lowerurl, 'v.youku.com/v_show/') !== FALSE) {
- if(preg_match("/http:\/\/v.youku.com\/v_show\/id_([\w=]+)(.html)(.*?)$/i", $url, $matches)) {
- $flv = 'http://player.youku.com/player.php/sid/'.$matches[1].'/v.swf';
- //exit($flv.'==='.'http://v.youku.com/player/getPlayList/VideoIDS/'.$matches[1]);
- if(!$width && !$height) {
- $api='https://openapi.youku.com/v2/videos/show_basic.json?video_id='.$matches[1].'&client_id=b10ab8588528b1b1';
- //$api = 'http://v.youku.com/player/getPlayList/VideoIDS/'.$matches[1];
- $json = json_decode(dzz_file_get_contents($api),true);
-
- if(is_array($json)){
- $imgurl=$json['thumbnail'];
- }
-
- }
- }
- //http://www.tudou.com/programs/view/TCwDFnpZuH8/
- } elseif(strpos($lowerurl, 'tudou.com/programs/view/') !== FALSE) {
- if(preg_match("/http:\/\/(www.)?tudou.com\/programs\/view\/([^\/]+)/i", $url, $matches)) {
- $flv = 'http://www.tudou.com/v/'.$matches[2];
- if(!$width && !$height) {
- $str = dzz_file_get_contents($url);
- if(!empty($str) && preg_match("/pic:\s\'(.+?)\'/i", $str, $image)) {
- $imgurl = trim($image[1]);
- }
- }
- }
- } elseif(strpos($lowerurl, 'v.ku6.com/show/') !== FALSE) {
- if(preg_match("/http:\/\/v.ku6.com\/show\/([^\/]+).html/i", $url, $matches)) {
- $flv = 'http://player.ku6.com/refer/'.$matches[1].'/v.swf';
- if(!$width && !$height) {
- $api = 'http://vo.ku6.com/fetchVideo4Player/1/'.$matches[1].'.html';
- $str = dzz_file_get_contents($api);
- if(!empty($str) && preg_match("/\"picpath\":\"(.+?)\"/i", $str, $image)) {
- $imgurl = str_replace(array('\u003a', '\u002e'), array(':', '.'), $image[1]);
- }
- }
- }
- } elseif(strpos($lowerurl, 'v.ku6.com/special/show_') !== FALSE) {
- if(preg_match("/http:\/\/v.ku6.com\/special\/show_\d+\/([^\/]+).html/i", $url, $matches)) {
- $flv = 'http://player.ku6.com/refer/'.$matches[1].'/v.swf';
- if(!$width && !$height) {
- $api = 'http://vo.ku6.com/fetchVideo4Player/1/'.$matches[1].'.html';
- $str = dzz_file_get_contents($api);
- if(!empty($str) && preg_match("/\"picpath\":\"(.+?)\"/i", $str, $image)) {
- $imgurl = str_replace(array('\u003a', '\u002e'), array(':', '.'), $image[1]);
- }
- }
- }
- } elseif(strpos($lowerurl, 'www.youtube.com/watch?') !== FALSE) {
- if(preg_match("/http:\/\/www.youtube.com\/watch\?v=([^\/&]+)&?/i", $url, $matches)) {
- $flv = 'http://www.youtube.com/v/'.$matches[1].'&hl=zh_CN&fs=1';
- if(!$width && !$height) {
- $str = dzz_file_get_contents($url);
- if(!empty($str) && preg_match("/'VIDEO_HQ_THUMB':\s'(.+?)'/i", $str, $image)) {
- $url = substr($image[1], 0, strrpos($image[1], '/')+1);
- $filename = substr($image[1], strrpos($image[1], '/')+3);
- $imgurl = $url.$filename;
- }
- }
- }
- } elseif(strpos($lowerurl, 'tv.mofile.com/') !== FALSE) {
- if(preg_match("/http:\/\/tv.mofile.com\/([^\/]+)/i", $url, $matches)) {
- $flv = 'http://tv.mofile.com/cn/xplayer.swf?v='.$matches[1];
- if(!$width && !$height) {
- $str = dzz_file_get_contents($url);
- if(!empty($str) && preg_match("/thumbpath=\"(.+?)\";/i", $str, $image)) {
- $imgurl = trim($image[1]);
- }
- }
- }
- } elseif(strpos($lowerurl, 'v.mofile.com/show/') !== FALSE) {
- if(preg_match("/http:\/\/v.mofile.com\/show\/([^\/]+).shtml/i", $url, $matches)) {
- $flv = 'http://tv.mofile.com/cn/xplayer.swf?v='.$matches[1];
- if(!$width && !$height) {
- $str = dzz_file_get_contents($url);
- if(!empty($str) && preg_match("/thumbpath=\"(.+?)\";/i", $str, $image)) {
- $imgurl = trim($image[1]);
- }
- }
- }
- //http://you.video.sina.com.cn/b/9809684-1268992255.html
- } elseif(strpos($lowerurl, 'you.video.sina.com.cn/b/') !== FALSE) {
- if(preg_match("/http:\/\/you.video.sina.com.cn\/b\/(\d+)-(\d+).html/i", $url, $matches)) {
- $flv = 'http://vhead.blog.sina.com.cn/player/outer_player.swf?vid='.$matches[1];
- if(!$width && !$height) {
- $api = 'http://interface.video.sina.com.cn/interface/common/getVideoImage.php?vid='.$matches[1];
- $str = dzz_file_get_contents($api);
- if(!empty($str)) {
- $imgurl = str_replace('imgurl=', '', trim($str));
- }
- }
- }
- } elseif(strpos($lowerurl, 'http://v.blog.sohu.com/u/') !== FALSE) {
- if(preg_match("/http:\/\/v.blog.sohu.com\/u\/[^\/]+\/(\d+)/i", $url, $matches)) {
- $flv = 'http://v.blog.sohu.com/fo/v4/'.$matches[1];
- if(!$width && !$height) {
- $api = 'http://v.blog.sohu.com/videinfo.jhtml?m=view&id='.$matches[1].'&outType=3';
- $str = dzz_file_get_contents($api);
- if(!empty($str) && preg_match("/\"cutCoverURL\":\"(.+?)\"/i", $str, $image)) {
- $imgurl = str_replace(array('\u003a', '\u002e'), array(':', '.'), $image[1]);
- }
- }
- }
- } elseif(strpos($lowerurl, 'http://www.ouou.com/fun_funview') !== FALSE) {
- $str = dzz_file_get_contents($url);
- if(!empty($str) && preg_match("/var\sflv\s=\s'(.+?)';/i", $str, $matches)) {
- $flv = $_G['style']['imgdir'].'/flvplayer.swf?&autostart=true&file='.urlencode($matches[1]);
- if(!$width && !$height && preg_match("/var\simga=\s'(.+?)';/i", $str, $image)) {
- $imgurl = trim($image[1]);
- }
- }
- } elseif(strpos($lowerurl, 'http://www.56.com') !== FALSE) {
-
- if(preg_match("/http:\/\/www.56.com\/\S+\/play_album-aid-(\d+)_vid-(.+?).html/i", $url, $matches)) {
- $flv = 'http://player.56.com/v_'.$matches[2].'.swf';
- $matches[1] = $matches[2];
- } elseif(preg_match("/http:\/\/www.56.com\/\S+\/([^\/]+).html/i", $url, $matches)) {
- $flv = 'http://player.56.com/'.$matches[1].'.swf';
- }
- if(!$width && !$height && !empty($matches[1])) {
- $api = 'http://vxml.56.com/json/'.str_replace('v_', '', $matches[1]).'/?src=out';
- $str = dzz_file_get_contents($api);
- if(!empty($str) && preg_match("/\"img\":\"(.+?)\"/i", $str, $image)) {
- $imgurl = trim($image[1]);
- }
- }
- }
- if($flv) {
- if(!$width && !$height) {
- return array('url' => $flv, 'img' => $imgurl);
- } else {
- $width = addslashes($width);
- $height = addslashes($height);
- $flv = addslashes($flv);
- $randomid = 'flv_'.random(3);
- return '';
- }
- } else {
- return FALSE;
- }
-}
-function bbcodeurl($url, $tags) {
- if(!preg_match("/<.+?>/s", $url)) {
- if(!in_array(strtolower(substr($url, 0, 6)), array('http:/', 'https:', 'ftp://', 'rtsp:/', 'mms://')) && !preg_match('/^static\//', $url) && !preg_match('/^data\//', $url)) {
- $url = 'http://'.$url;
- }
- return str_replace(array('submit', 'member.php?mod=logging'), array('', ''), str_replace('{url}', addslashes($url), $tags));
- } else {
- return ' '.$url;
- }
-}
-function parseaudio($url, $width = 400) {
- $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
- switch($ext) {
- case 'mp3':
- $randomid = 'mp3_'.random(3);
- return '';
- case 'wma':
- case 'mid':
- case 'wav':
- return '';
- case 'ra':
- case 'rm':
- case 'ram':
- $mediaid = 'media_'.random(3);
- return '';
- }
-}
-
-
-?>
diff --git a/core/function/function_core.php b/core/function/function_core.php
deleted file mode 100644
index 4a96945..0000000
--- a/core/function/function_core.php
+++ /dev/null
@@ -1,3569 +0,0 @@
- $_G['setting']['sitename'],
- '{xhversion}' => CORE_XHVERSION,
- '{xversion}' => CORE_VERSION,
- '{years}' => date("Y"),
- '{time}' => dgmdate(TIMESTAMP, 'Y-n-j H:i'),
- '{adminemail}' => $_G['setting']['adminemail'],
- '{username}' => $_G['member']['username'],
- '{myname}' => $_G['member']['username']
- );
- $replaces = array_merge($sitevars, $replaces);
- return str_replace(array_keys($replaces), array_values($replaces), $string);
-}
-
-function getfileinfo($icoid)
-{
- if (preg_match('/^dzz:[gu]id_\d+:.+?/i', $icoid)) {
- $dir = dirname($icoid) . '/';
-
- if (!$pfid = C::t('resources_path')->fetch_fid_bypath($dir)) {
- return false;
- }
- $filename = basename($icoid);
- if (!$rid = DB::result_first("select rid from %t where pfid = %d and name = %s", array('resources', $pfid, $filename))) {
- return false;
- }
- return C::t('resources')->fetch_by_rid($rid);
- } elseif (preg_match('/\w{32}/i', $icoid)) {
- return C::t('resources')->fetch_by_rid($icoid);
- }
-}
-
-function dzzMD5($file, $maxchunk = 100, $chunksize_first = 256)
-{
- /*
- 获取文件的dzzhash值
- $file:文件地址,仅支持本地文件地址;
- $maxchunk:获取多少块数据
- $chunksize_first:每块取多少字节计算md5;
- return:第一块md5和所有块的md5;
-*/
- if (!is_file($file)) return false;
- $filesize = filesize($file);
- $chunk = round($filesize / $maxchunk);
- if ($chunk < $chunksize_first) $chunk = $chunksize_first;
- if (!$fp = fopen($file)) {
- return false;
- }
- $i = 0;
- $arr = array();
- while (!feof($fp)) {
- fseek($fp, $chunk * $i, SEEK_SET);
- $arr[] = md5(fread($fp, $chunksize_first));
- $i++;
- }
- fclose($fp);
- return array($arr[0], md5(implode('', $arr)));
-}
-
-function getCode62($url)
-{//获取url的code62码
- $url = crc32($url);
- $x = sprintf("%u", $url);
- $show = '';
- while ($x > 0) {
- $s = $x % 62;
- if ($s > 35) {
- $s = chr($s + 61);
- } elseif ($s > 9 && $s <= 35) {
- $s = chr($s + 55);
- }
- $show .= $s;
- $x = floor($x / 62);
- }
- return $show;
-}
-
-function hookscriptoutput()
-{
-}
-
-define('DZZ_CORE_FUNCTION', true);
-function getOauthRedirect($url)
-{//获取链接的auth地址
- $wx = new qyWechat(array('appid' => getglobal('setting/CorpID'), 'appsecret' => getglobal('setting/CorpSecret')));
- return $wx->getOauthRedirect(getglobal('siteurl') . 'index.php?mod=system&op=wxredirect&url=' . dzzencode($url));
-}
-
-function fix_integer_overflow($size)
-{ //处理整数溢出
- if ($size < 0) {
- $size += 2.0 * (PHP_INT_MAX + 1);
- }
- return $size;
-}
-
-function formatsize($size)
-{
- $prec = 3;
- $size = round(abs($size));
- $units = array(0 => " B ", 1 => " KB", 2 => " MB", 3 => " GB", 4 => " TB");
- if ($size < 0) return '';//增加负数判断
- if ($size == 0) return str_repeat(" ", $prec) . "0$units[0]";
- $unit = min(4, floor(log($size) / log(2) / 10));
- $size = $size * pow(2, -10 * $unit);
- $digi = $prec - 1 - floor(log($size) / log(10));
- $size = round($size * pow(10, $digi)) * pow(10, -$digi);
- return $size . $units[$unit];
-}
-
-function url_implode($gets)
-{
- $arr = array();
- foreach ($gets as $key => $value) {
- if ($value) {
- $arr[] = $key . '=' . urlencode($value);
- }
- }
- return implode('&', $arr);
-}
-
-function getstr($string, $length = 0, $in_slashes = 0, $out_slashes = 0, $bbcode = 0, $html = 0)
-{
- global $_G;
-
- $string = trim($string);
- $sppos = strpos($string, chr(0) . chr(0) . chr(0));
- if ($sppos !== false) {
- $string = substr($string, 0, $sppos);
- }
- if ($in_slashes) {
- $string = dstripslashes($string);
- }
- $string = preg_replace("/\[hide=?\d*\](.*?)\[\/hide\]/is", '', $string);
- if ($html < 0) {
- $string = preg_replace("/(\<[^\<]*\>|\r|\n|\s|\[.+?\])/is", ' ', $string);
- } elseif ($html == 0) {
- $string = dhtmlspecialchars($string);
- }
-
- if ($length) {
- $string = cutstr($string, $length);
- }
-
- if ($bbcode) {
- require_once DZZ_ROOT . './core/class/class_bbcode.php';
- $bb = &bbcode::instance();
- $string = $bb->bbcode2html($string, $bbcode);
- }
- if ($out_slashes) {
- $string = daddslashes($string);
- }
- return trim($string);
-}
-
-function getuserprofile($field)
-{
- global $_G;
- if (isset($_G['member'][$field])) {
- return $_G['member'][$field];
- }
- static $tablefields = array(
- 'status' => array('regip', 'lastip', 'lastvisit', 'lastactivity', 'lastsendmail'),
- //'profile' => (C::t('user_profile_setting')->fetch_all_fields_by_available()),
- );
- $profiletable = '';
- foreach ($tablefields as $table => $fields) {
- if (in_array($field, $fields)) {
- $profiletable = $table;
- break;
- }
- }
- if ($profiletable) {
-
- if (is_array($_G['member']) && $_G['member']['uid']) {
- space_merge($_G['member'], $profiletable);
- } else {
- foreach ($tablefields[$profiletable] as $k) {
- $_G['member'][$k] = '';
- }
- }
- return $_G['member'][$field];
- }
- return null;
-}
-
-function cpurl($type = 'parameter', $filters = array('sid', 'frames'))
-{
- parse_str($_SERVER['QUERY_STRING'], $getarray);
- $extra = $and = '';
- foreach ($getarray as $key => $value) {
- if (!in_array($key, $filters)) {
- @$extra .= $and . $key . ($type == 'parameter' ? '%3D' : '=') . rawurlencode($value);
- $and = $type == 'parameter' ? '%26' : '&';
- }
- }
- return $extra;
-}
-
-function stripsearchkey($string)
-{
- $string = trim($string);
- $string = str_replace('*', '%', addcslashes($string, '%_'));
- return $string;
-}
-
-
-function system_error($message, $show = true, $save = true, $halt = true)
-{
- dzz_error::system_error($message, $show, $save, $halt);
-}
-
-function updatesession()
-{
- return C::app()->session->updatesession();
-}
-
-function setglobal($key, $value, $group = null)
-{
- global $_G;
- if (is_null($group) && C::setConfig($key, $value)) {
- return true;
- }
- $key = explode('/', $group === null ? $key : $group . '/' . $key);
- $p = &$_G;
- foreach ($key as $k) {
- if (!isset($p[$k]) || !is_array($p[$k])) {
- $p[$k] = array();
- }
- $p = &$p[$k];
- }
- $p = $value;
- return true;
-}
-
-function getglobal($key, $group = null)
-{
- global $_G;
- if (isset($_config[$key])) {
- return $_config[$key];
- }
- $key = explode('/', $group === null ? $key : $group . '/' . $key);
- $v = &$_G;
- foreach ($key as $k) {
- if (!isset($v[$k])) {
- return null;
- }
- $v = &$v[$k];
- }
- return $v;
-}
-
-function getgpc($k, $type = 'GP')
-{
- $type = strtoupper($type);
- switch ($type) {
- case 'G':
- $var = &$_GET;
- break;
- case 'P':
- $var = &$_POST;
- break;
- case 'C':
- $var = &$_COOKIE;
- break;
- default:
- if (isset($_GET[$k])) {
- $var = &$_GET;
- } else {
- $var = &$_POST;
- }
- break;
- }
-
- return isset($var[$k]) ? $var[$k] : NULL;
-
-}
-
-function getuserbyuid($uid, $fetch_archive = 0)
-{
- static $users = array();
- if (empty($users[$uid])) {
- $users[$uid] = C::t('user')->fetch($uid);
- }
- if (!isset($users[$uid]['self']) && $uid == getglobal('uid') && getglobal('uid')) {
-
- }
- if ($users[$uid]['adminid'] == 1) $users[$uid]['self'] = 2;
- return $users[$uid];
-}
-
-function chk_submitroule($type)
-{
-
- if (empty($_GET['formhash']) || $_GET['formhash'] != formhash()) {
-
- showTips(array('error' => '提交方式不合法', 'error_code' => 403), $type, 'common/illegal_operation');
- }
-}
-
-function daddslashes($string, $force = 1)
-{
- if (is_array($string)) {
- $keys = array_keys($string);
- foreach ($keys as $key) {
- $val = $string[$key];
- unset($string[$key]);
- $string[addslashes($key)] = daddslashes($val, $force);
- }
- } else {
- $string = addslashes($string);
- }
- return $string;
-}
-
-function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0, $ckey_length = 4)
-{
- //$ckey_length = 4;
- $key = md5($key != '' ? $key : getglobal('authkey'));
- $keya = md5(substr($key, 0, 16));
- $keyb = md5(substr($key, 16, 16));
- $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length) : substr(md5(microtime()), -$ckey_length)) : '';
-
- $cryptkey = $keya . md5($keya . $keyc);
- $key_length = strlen($cryptkey);
-
- $string = $operation == 'DECODE' ? base64_decode(substr(str_replace(array('_', '-'), array('/', '+'), $string), $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0) . substr(md5($string . $keyb), 0, 16) . $string;
- $string_length = strlen($string);
-
- $result = '';
- $box = range(0, 255);
-
- $rndkey = array();
- for ($i = 0; $i <= 255; $i++) {
- $rndkey[$i] = ord($cryptkey[$i % $key_length]);
- }
-
- for ($j = $i = 0; $i < 256; $i++) {
- $j = ($j + $box[$i] + $rndkey[$i]) % 256;
- $tmp = $box[$i];
- $box[$i] = $box[$j];
- $box[$j] = $tmp;
- }
-
- for ($a = $j = $i = 0; $i < $string_length; $i++) {
- $a = ($a + 1) % 256;
- $j = ($j + $box[$a]) % 256;
- $tmp = $box[$a];
- $box[$a] = $box[$j];
- $box[$j] = $tmp;
- $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
- }
-
- if ($operation == 'DECODE') {
- if ((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26) . $keyb), 0, 16)) {
- return substr($result, 26);
- } else {
- return '';
- }
- } else {
- return $keyc . str_replace(array('/', '+'), array('_', '-'), str_replace('=', '', base64_encode($result)));
- }
-}
-function urlsafe_b64encode($string) {
- $data = base64_encode($string);
- $data = str_replace(array('+','/','='),array('-','_',''),$data);
- return $data;
-}
-
-function urlsafe_b64decode($string) {
- $data = str_replace(array('-','_'),array('+','/'),$string);
- $mod4 = strlen($data) % 4;
- if ($mod4) {
- $data .= substr('====', $mod4);
- }
- return base64_decode($data);
-}
-//key的格式以|隔开,参数支持全局函数,如地址为 index.php?mod=io&op=getStream&path=***&key=uid|setting/authkey|username
-//这种格式,加密时,需要把|分割的每个参数都带上,dzzencode($string,'1|'.getglobal('setting/authkey').'|管理员',$expiry);
-//如果解密时,|隔开的部分使用getglobal函数获取不到值,将会使用原值,如index.php?mod=io&op=getStream&path=***&key=xxxxx|ppppp
-//解密时的key会使用原值 xxxxx|ppppp ;
-function dzzencode($string, $key = '', $expiry = 0, $ckey_length = 0)
-{
- $key = md5($key != '' ? $key : getglobal('setting/authkey'));
- return urlsafe_b64encode(authcode($string, 'ENCODE', $key, $expiry, $ckey_length));
-}
-
-function dzzdecode($string, $key = '', $ckey_length = 0)
-{
- if ($key) {
- $tarr = explode('|', $key);
- foreach ($tarr as $key => $v) {
- if (getglobal($v)) $tarr[$key] = getglobal($v);
- }
- $key = implode('|', $tarr);
- }
- $key = md5($key != '' ? $key : getglobal('setting/authkey'));
- if (!$ret = authcode(urlsafe_b64decode($string), 'DECODE', $key, 0, $ckey_length)) {
- $ret = authcode(urlsafe_b64decode($string), 'DECODE', $key, 0, 4);
- }
- return $ret;
-}
-
-function fsocketopen($hostname, $port = 80, &$errno, &$errstr, $timeout = 15)
-{
- $fp = '';
- if (function_exists('fsockopen')) {
- $fp = @fsockopen($hostname, $port, $errno, $errstr, $timeout);
- } elseif (function_exists('pfsockopen')) {
- $fp = @pfsockopen($hostname, $port, $errno, $errstr, $timeout);
- } elseif (function_exists('stream_socket_client')) {
- $fp = @stream_socket_client($hostname . ':' . $port, $errno, $errstr, $timeout);
- }
- return $fp;
-}
-
-function dfsockopen($url, $limit = 0, $post = '', $cookie = '', $bysocket = FALSE, $ip = '', $timeout = 15, $block = TRUE, $encodetype = 'URLENCODE', $allowcurl = TRUE, $position = 0, $files = array()) {
- require_once libfile('function/filesock');
- return _dfsockopen($url, $limit, $post, $cookie, $bysocket, $ip, $timeout, $block, $encodetype, $allowcurl, $position, $files);
-}
-
-function dhtmlspecialchars($string, $flags = null)
-{
- if (is_array($string)) {
- foreach ($string as $key => $val) {
- $string[$key] = dhtmlspecialchars($val, $flags);
- }
- } else {
- if ($flags === null) {
- $string = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string);
- if (strpos($string, '&#') !== false) {
- $string = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4}));)/', '&\\1', $string);
- }
- } else {
- if (PHP_VERSION < '5.4.0') {
- $string = htmlspecialchars($string, $flags);
- } else {
- if (strtolower(CHARSET) == 'utf-8') {
- $charset = 'UTF-8';
- } else {
- $charset = 'ISO-8859-1';
- }
- $string = htmlspecialchars($string, $flags, $charset);
- }
- }
- }
- return $string;
-}
-
-function dexit($message = '')
-{
- echo $message;
- output();
- exit();
-}
-
-function dheader($string, $replace = true, $http_response_code = 0)
-{
- $islocation = substr(strtolower(trim($string)), 0, 8) == 'location';
- if (defined('IN_MOBILE') && strpos($string, 'mobile') === false && $islocation) {
- if (strpos($string, '?') === false) {
- $string = $string . '?mobile=' . IN_MOBILE;
- } else {
- if (strpos($string, '#') === false) {
- $string = $string . '&mobile=' . IN_MOBILE;
- } else {
- $str_arr = explode('#', $string);
- $str_arr[0] = $str_arr[0] . '&mobile=' . IN_MOBILE;
- $string = implode('#', $str_arr);
- }
- }
- }
- $string = str_replace(array("\r", "\n"), array('', ''), $string);
- if (empty($http_response_code) || PHP_VERSION < '4.3') {
- @header($string, $replace);
- } else {
- @header($string, $replace, $http_response_code);
- }
- if ($islocation) {
- exit();
- }
-}
-
-function dsetcookie($var, $value = '', $life = 0, $prefix = 1, $httponly = false)
-{
-
- global $_G;
-
- $config = $_G['config']['cookie'];
-
- $_G['cookie'][$var] = $value;
- $var = ($prefix ? $config['cookiepre'] : '') . $var;
- $_COOKIE[$var] = $value;
-
- if ($value == '' || $life < 0) {
- $value = '';
- $life = -1;
- }
-
- if (defined('IN_MOBILE')) {
- $httponly = false;
- }
-
- $life = $life > 0 ? getglobal('timestamp') + $life : ($life < 0 ? getglobal('timestamp') - 31536000 : 0);
- $path = $httponly && PHP_VERSION < '5.2.0' ? $config['cookiepath'] . '; HttpOnly' : $config['cookiepath'];
-
- $secure = $_SERVER['SERVER_PORT'] == 443 ? 1 : 0;
- if (PHP_VERSION < '5.2.0') {
- setcookie($var, $value, $life, $path, $config['cookiedomain'], $secure);
- } else {
- setcookie($var, $value, $life, $path, $config['cookiedomain'], $secure, $httponly);
- }
-}
-
-function getcookie($key)
-{
- global $_G;
- return isset($_G['cookie'][$key]) ? $_G['cookie'][$key] : '';
-}
-
-function fileext($filename)
-{
- return addslashes(strtolower(substr(strrchr($filename, '.'), 1, 10)));
-}
-
-function formhash($specialadd = '')
-{
- global $_G;
- $hashadd = defined('IN_ADMINCP') ? 'Only For Dzz! Admin Control Panel' : '';
- return substr(md5(substr($_G['timestamp'], 0, -7) . $_G['username'] . $_G['uid'] . $_G['authkey'] . $hashadd . $specialadd), 8, 8);
-}
-
-function checkrobot($useragent = '')
-{
- static $kw_spiders = array('bot', 'crawl', 'spider', 'slurp', 'sohu-search', 'lycos', 'robozilla');
- static $kw_browsers = array('msie', 'netscape', 'opera', 'konqueror', 'mozilla');
-
- $useragent = strtolower(empty($useragent) ? $_SERVER['HTTP_USER_AGENT'] : $useragent);
- if (strpos($useragent, 'http://') === false && dstrpos($useragent, $kw_browsers)) return false;
- if (dstrpos($useragent, $kw_spiders)) return true;
- return false;
-}
-
-function checkmobile()
-{
- global $_G;
- $mobile = array();
- static $mobilebrowser_list = array('iphone', 'android', 'phone', 'mobile', 'wap', 'netfront', 'java', 'opera mobi', 'opera mini',
- 'ucweb', 'windows ce', 'symbian', 'series', 'webos', 'sony', 'blackberry', 'dopod', 'nokia', 'samsung',
- 'palmsource', 'xda', 'pieplus', 'meizu', 'midp', 'cldc', 'motorola', 'foma', 'docomo', 'up.browser',
- 'up.link', 'blazer', 'helio', 'hosin', 'huawei', 'novarra', 'coolpad', 'webos', 'techfaith', 'palmsource',
- 'alcatel', 'amoi', 'ktouch', 'nexian', 'ericsson', 'philips', 'sagem', 'wellcom', 'bunjalloo', 'maui', 'smartphone',
- 'iemobile', 'spice', 'bird', 'zte-', 'longcos', 'pantech', 'gionee', 'portalmmm', 'jig browser', 'hiptop',
- 'benq', 'haier', '^lct', '320x320', '240x320', '176x220');
- static $wmlbrowser_list = array('cect', 'compal', 'ctl', 'lg', 'nec', 'tcl', 'alcatel', 'ericsson', 'bird', 'daxian', 'dbtel', 'eastcom',
- 'pantech', 'dopod', 'philips', 'haier', 'konka', 'kejian', 'lenovo', 'benq', 'mot', 'soutec', 'nokia', 'sagem', 'sgh',
- 'sed', 'capitel', 'panasonic', 'sonyericsson', 'sharp', 'amoi', 'panda', 'zte');
-
- $pad_list = array('pad', 'gt-p1000');
-
- $useragent = strtolower($_SERVER['HTTP_USER_AGENT']);
-
- if (dstrpos($useragent, $pad_list)) {
- return false;
- }
- if (($v = dstrpos($useragent, $mobilebrowser_list, true))) {
- $_G['mobile'] = $v;
- return '2';
- }
- if (($v = dstrpos($useragent, $wmlbrowser_list))) {
- $_G['mobile'] = $v;
- return '3'; //wml版
- }
- $brower = array('mozilla', 'chrome', 'safari', 'opera', 'm3gate', 'winwap', 'openwave', 'myop');
- if (dstrpos($useragent, $brower)) return false;
-
- $_G['mobile'] = 'unknown';
- if (isset($_G['mobiletpl'][$_GET['mobile']])) {
- return true;
- } else {
- return false;
- }
-}
-
-function dstrpos($string, $arr, $returnvalue = false)
-{
- if (empty($string)) return false;
- foreach ((array)$arr as $v) {
- if (strpos($string, $v) !== false) {
- $return = $returnvalue ? $v : true;
- return $return;
- }
- }
- return false;
-}
-
-function isemail($email)
-{
- return strlen($email) > 6 && strlen($email) <= 32 && preg_match("/^([A-Za-z0-9\-_.+]+)@([A-Za-z0-9\-]+[.][A-Za-z0-9\-.]+)$/", $email);
-}
-
-function quescrypt($questionid, $answer)
-{
- return $questionid > 0 && $answer != '' ? substr(md5($answer . md5($questionid)), 16, 8) : '';
-}
-
-function random($length, $numeric = 0)
-{
- $seed = base_convert(md5(microtime() . $_SERVER['DOCUMENT_ROOT']), 16, $numeric ? 10 : 35);
- $seed = $numeric ? (str_replace('0', '', $seed) . '012340567890') : ($seed . 'zZ' . strtoupper($seed));
- if ($numeric) {
- $hash = '';
- } else {
- $hash = chr(rand(1, 26) + rand(0, 1) * 32 + 64);
- $length--;
- }
- $max = strlen($seed) - 1;
- for ($i = 0; $i < $length; $i++) {
- $hash .= $seed{mt_rand(0, $max)};
- }
- return $hash;
-}
-
-function strexists($string, $find)
-{
- return !(strpos($string, $find) === FALSE);
-}
-
-function avatar($uid, $size = 'middle', $returnsrc = FALSE, $real = FALSE, $static = FALSE, $ucenterurl = '')
-{
- global $_G;
-
- static $staticavatar;
- if ($staticavatar === null) {
- $staticavatar = $_G['setting']['avatarmethod'];
- }
-
- $size = in_array($size, array('big', 'middle', 'small')) ? $size : 'middle';
- $uid = abs(intval($uid));
- if (!$staticavatar && !$static) {
- return $returnsrc ? 'avatar.php?uid=' . $uid . '&size=' . $size : ' ';
- } else {
- $uid = sprintf("%09d", $uid);
- $dir1 = substr($uid, 0, 3);
- $dir2 = substr($uid, 3, 2);
- $dir3 = substr($uid, 5, 2);
- $file = 'data/avatar/' . $dir1 . '/' . $dir2 . '/' . $dir3 . '/' . substr($uid, -2) . ($real ? '_real' : '') . '_avatar_' . $size . '.jpg';
- return $returnsrc ? $file : ' ';
- }
-}
-
-/*获取用户头像模板,如果没有会生成背景+首字母的头像
- * param:$uid 需要生成的用户UID;
- * param:$headercolors 传递的用户头像信息数组格式为array('1'=>'#e9308d','2'=>'#e74856'),键为UID,值为颜色值
- */
-function avatar_block($uid=0,$headercolors=array(),$class="img-avatar"){
- static $colors=array('#6b69d6','#a966ef','#e9308d','#e74856','#f35b42','#00cc6a','#0078d7','#5290f3','#00b7c3','#0099bc','#018574','#c77c52','#ff8c00','#68768a','#7083cb','#26a255');
-
- if(!$uid){
- $uid=getglobal('uid');
- }
- if($uid){
- $user=getuserbyuid($uid);
- }else{
- $user=array('uid' => 0, 'username' => 'guest', 'avatarstatus' => 0 ,'adminid' => 0, 'groupid' => 7, 'credits' => 0, 'timeoffset' => 9999);
- }
- if(empty($user)) return '';
- if($user['avatarstatus']){//用户已经上传头像
- return ' ';
- }else{//没有上传头像,使用背景+首字母
- if($uid){
- if($headercolors[$uid]) $headerColor=$headercolors[$uid];
- else $headerColor = C::t('user_setting')->fetch_by_skey('headerColor',$user['uid']);
- if(empty($headerColor)){//没有设置时,创建头像背景色,并且入库
- $colorkey = rand(1,15);
- $headerColor = $colors[$colorkey];
- C::t('user_setting')->insert_by_skey('headerColor',$headerColor,$user['uid']);
- }
- }else{//游客默认使用第一个值;
- $headerColor = $colors[0];
- }
- return ''. new_strsubstr(ucfirst($user['username']),1,'').'';
- }
-}
-/*获取群组机构头像模板,如果没有会生成背景+首字母的头像
- * param:$gid 需要生成的群组机构的gid;
- * param:$groupcolors 传递的群组机构(organization表的记录;array('1'=>array('aid'=>'#e9308d','orgname'=>'机构群组名称'),键为gid,值为organization表的记录(最少包含aid和orgname字段);
- */
-function avatar_group($gid,$groupcolors=array(),$class='iconFirstWord'){
- static $colors=array('#6b69d6','#a966ef','#e9308d','#e74856','#f35b42','#00cc6a','#0078d7','#5290f3','#00b7c3','#0099bc','#018574','#c77c52','#ff8c00','#68768a','#7083cb','#26a255');
- $gid = intval($gid);
- if($groupcolors[$gid]){
- if($groupcolor = $groupcolors[$gid]['aid']){
- if(preg_match('/^\#.+/',$groupcolor)){
- return ''.strtoupper(new_strsubstr($groupcolors[$gid]['orgname'],1,'')).'';
- }elseif(preg_match('/^\d+$/',$groupcolor) && $groupcolors > 0){
- return ' ';
- }
- }else{
- $colorkey = rand(1,15);
- $groupcolor = $colors[$colorkey];
- C::t('organization')->update($gid,array('aid'=>$groupcolor));
- return ''.strtoupper(new_strsubstr($groupcolors[$gid]['orgname'],1,'')).'';
- }
- }else{
- if(!$groupinfo = C::t('organization')->fetch($gid)){
- return '';
- }
- if($groupinfo['aid']){
- if(preg_match('/^\#.+/',$groupinfo['aid'])){
- return ''.strtoupper(new_strsubstr($groupinfo['orgname'],1,'')).'';
- }elseif(preg_match('/^\d+$/',$groupinfo['aid']) && $groupinfo['aid'] > 0){
- return ' ';
- }
- }else{
-
- $colorkey = rand(1,15);
- $groupcolor = $colors[$colorkey];
- C::t('organization')->update($gid,array('aid'=>$groupcolor));
- return ''.strtoupper(new_strsubstr($groupinfo['orgname'],1,'')).'';
- }
- }
-}
-function getResourceByLang($flag){
- $langset=getglobal('language');
- if(empty($langset)) return '';
- switch($flag){
- case 'select2':
- $t="static/select2/select2_locale_{lang}.js";
- $src=str_replace('{lang}',$langset,$t);
- if(file_exists($src)){
- return $src;
- }else{
- return '';
- }
- break;
- case 'datepicker':
- $t="static/datepicker/i18n/datepicker-{lang}.js";
- $src=str_replace('{lang}',$langset,$t);
- if(file_exists($src)){
- return $src;
- }else{
- return '';
- }
- break;
- case 'timepicker':
- $t="static/datepicker/timepicker/i18n/jquery-ui-timepicker-{lang}.js";
- $src=str_replace('{lang}',$langset,$t);
- if(file_exists($src)){
- return $src;
- }else{
- return '';
- }
- break;
- case 'ueditor':
- $t="dzz/system/ueditor/lang/{lang}/{lang}.js";
- $src=str_replace('{lang}',strtolower($langset),$t);
- if(file_exists($src)){
- return $src;
- }else{
- return '';
- }
- break;
-
- }
-}
-function checkLanguage()
-{
- global $_G;
- $uid = getglobal('uid');
- $langList = $_G['config']['output']['language_list'];
- $langSet = '';
-
- if($_G['cookie']['language']) $langSet=$_G['cookie']['language'];
- else{
- if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {// 自动侦测浏览器语言
- preg_match('/^([a-z\d\-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
- $langSet = strtolower($matches[1]);
- if ($langSet == 'zh-hans-cn' || $langSet == 'zh-cn') {
- $langSet = 'zh-cn';
- } elseif ($langSet == 'zh-tw') {
- $langSet = 'zh-tw';
- } else {
- $langSet = $matches[1];
- }
- }
- }
- if (!in_array($langSet, array_keys($langList))) { // 非法语言参数
- $langSet = $_G['config']['output']['language'];
- }
- return $langSet;
-}
-
-function lang($langvar = null, $vars = array(), $default = null, $curpath = '')
-{
-
- global $_G;
- $checkLanguage = $_G['language'];
- if ($curpath) {
- include DZZ_ROOT . './' . $curpath . '/language/' . $checkLanguage . '/' . 'lang.php';
- $_G['lang']['template'] = $lang;
- } else {
- if (defined('CURSCRIPT')) {
- $key1 = CURSCRIPT . '_template';
- }
- if (defined('CURSCRIPT') && defined('CURMODULE')) {
- $key2 = CURSCRIPT . '_' . CURMODULE . '_template';
- }
-
- if (!isset($_G['lang']['template'])) {
- $_G['lang']['template'] = array();
-
- if (file_exists(DZZ_ROOT . './core/language/' . $checkLanguage . '/' . 'lang.php')) {
- include DZZ_ROOT . './core/language/' . $checkLanguage . '/' . 'lang.php';
- $_G['lang']['template'] = $lang;
- }
- }
-
- if (isset($key1) && !isset($_G['lang'][$key1])) {
- if (file_exists(DZZ_ROOT . './' . CURSCRIPT . '/language/' . $checkLanguage . '/' . 'lang.php')) {
- include DZZ_ROOT . './' . CURSCRIPT . '/language/' . $checkLanguage . '/' . 'lang.php';
- $_G['lang']['template'] = array_merge($_G['lang']['template'], $lang);
-
- }
- }
-
- if (isset($key2) && !isset($_G['lang'][$key2])) {
- if (file_exists(DZZ_ROOT . './' . CURSCRIPT . '/' . CURMODULE . '/language/' . $checkLanguage . '/' . 'lang.php')) {
-
- include DZZ_ROOT . './' . CURSCRIPT . '/' . CURMODULE . '/language/' . $checkLanguage . '/' . 'lang.php';
- $_G['lang']['template'] = array_merge($_G['lang']['template'], $lang);
- }
- }
-
- }
- $returnvalue = &$_G['lang'];
-
- $return = $langvar !== null ? (isset($returnvalue['template'][$langvar]) ? $returnvalue['template'][$langvar] : null) : $returnvalue['template'];
- $return = $return === null ? ($default !== null ? $default : $langvar) : $return;
- $searchs = $replaces = array();
-
- if ($vars && is_array($vars)) {
-
- foreach ($vars as $k => $v) {
- $searchs[] = '{' . $k . '}';
- $replaces[] = $v;
- }
- }
-
- if (is_string($return) && strpos($return, '{_G/') !== false) {
- preg_match_all('/\{_G\/(.+?)\}/', $return, $gvar);
- foreach ($gvar[0] as $k => $v) {
-
- $searchs[] = $v;
- $replaces[] = getglobal($gvar[1][$k]);
- }
- }
-
- $return = str_replace($searchs, $replaces, $return);
- return $return;
-}
-
-/*
- * 模板函数
- * $file=>模板,$tpldir=>模板文件夹,$templateNotMust=>模板不存在时返回空字符串,屏蔽错误提示,默认不开启
- * */
-function template($file, $tpldir = '', $templateNotMust = false)
-{
- global $_G;
- static $tplrefresh, $timestamp, $targettplname;
-
- $file .= !empty($_G['inajax']) && ($file == 'common/header' || $file == 'common/footer') ? '_ajax' : '';
-
- $tplfile = $file;
-
- if ($tplrefresh === null) {
- $tplrefresh = getglobal('config/output/tplrefresh');
- $timestamp = getglobal('timestamp');
- }
-
- if (empty($timecompare) || $tplrefresh == 1 || ($tplrefresh > 1 && !($timestamp % $tplrefresh))) {
- require_once DZZ_ROOT . '/core/class/class_template.php';
- $template = new template();
- $cachefile = $template->fetch_template($tplfile, $tpldir, $templateNotMust);
- return $cachefile;
- }
- return FALSE;
-
-}
-
-function dsign($str, $length = 16)
-{
- return substr(md5($str . getglobal('security/authkey')), 0, ($length ? max(8, $length) : 16));
-}
-
-function modauthkey($id)
-{
- return md5(getglobal('username') . getglobal('uid') . getglobal('authkey') . substr(TIMESTAMP, 0, -7) . $id);
-}
-
-
-function loadcache($cachenames, $force = false)
-{
- global $_G;
- static $loadedcache = array();
- $cachenames = is_array($cachenames) ? $cachenames : array($cachenames);
- $caches = array();
- foreach ($cachenames as $k) {
- if (!isset($loadedcache[$k]) || $force) {
- $caches[] = $k;
- $loadedcache[$k] = true;
- }
- }
-
- if (!empty($caches)) {
-
- $cachedata = C::t('syscache')->fetch_all($caches);
- foreach ($cachedata as $cname => $data) {
- if ($cname == 'setting') {
- $_G['setting'] = $data;
- } elseif ($cname == 'usergroup_' . $_G['groupid']) {
- $_G['cache'][$cname] = $_G['group'] = $data;
- } else {
- $_G['cache'][$cname] = $data;
- }
- }
- }
- return true;
-}
-
-function getpath($path)
-{
- $path = trim($path);
- $path = substr(strrchr($path, ':'), 1);
- $path = array_filter(explode('/', $path));
- return $path;
-}
-
-function dgmdate($timestamp, $format = 'dt', $timeoffset = '9999', $uformat = '')
-{
- global $_G;
- $format == 'u' && !$_G['setting']['dateconvert'] && $format = 'dt';
- static $dformat, $tformat, $dtformat, $offset, $lang;
- if ($dformat === null) {
- $dformat = getglobal('setting/dateformat');
- $tformat = getglobal('setting/timeformat');
- $dtformat = $dformat . ' ' . $tformat;
- $offset = getglobal('member/timeoffset');
- $lang = lang('date');
- }
- $timeoffset = $timeoffset == 9999 ? $offset : $timeoffset;
- $timestamp += $timeoffset * 3600;
- $format = empty($format) || $format == 'dt' ? $dtformat : ($format == 'd' ? $dformat : ($format == 't' ? $tformat : $format));
- if ($format == 'u') {
- $todaytimestamp = TIMESTAMP - (TIMESTAMP + $timeoffset * 3600) % 86400 + $timeoffset * 3600;
- $s = gmdate(!$uformat ? $dtformat : $uformat, $timestamp);
- $time = TIMESTAMP + $timeoffset * 3600 - $timestamp;
- if ($timestamp >= $todaytimestamp) {
- if ($time > 3600) {
- $return = intval($time / 3600) . ' ' . $lang['hour'] . $lang['before'];
- } elseif ($time > 1800) {
- $return = $lang['half'] . $lang['hour'] . $lang['before'];
- } elseif ($time > 60) {
- $return = intval($time / 60) . ' ' . $lang['min'] . $lang['before'];
- } elseif ($time > 0) {
- $return = $time . ' ' . $lang['sec'] . $lang['before'];
- } elseif ($time == 0) {
- $return = $lang['now'];
- } else {
- $return = $s;
- }
- if ($time >= 0 && !defined('IN_MOBILE')) {
- $return = '' . $return . '';
- }
- } elseif (($days = intval(($todaytimestamp - $timestamp) / 86400)) >= 0 && $days < 7) {
- if ($days == 0) {
- $return = $lang['yday'] . ' ' . gmdate($tformat, $timestamp);
- } elseif ($days == 1) {
- $return = $lang['byday'] . ' ' . gmdate($tformat, $timestamp);
- } else {
- $return = ($days + 1) . ' ' . $lang['day'] . $lang['before'];
- }
- if (!defined('IN_MOBILE')) {
- $return = '' . $return . '';
- }
- } else {
- $return =''.gmdate('Y-m-d', $timestamp) .' ' . gmdate('H:s', $timestamp) . '';
- }
- return $return;
- } else {
- return gmdate($format, $timestamp);
- }
-}
-
-function dmktime($date)
-{
- if (strpos($date, '-')) {
- $time = explode('-', $date);
- return mktime(0, 0, 0, $time[1], $time[2], $time[0]);
- }
- return 0;
-}
-
-function dnumber($number)
-{
- return abs($number) > 10000 ? '' . intval($number / 10000) . lang('10k') . '' : $number;
-}
-
-function savecache($cachename, $data)
-{
- C::t('syscache')->insert($cachename, $data);
-}
-
-function save_syscache($cachename, $data)
-{
- savecache($cachename, $data);
-}
-
-
-function dimplode($array)
-{
-
- if (!empty($array)) {
-
- $array = array_map('addslashes', $array);
-
- return "'" . implode("','", is_array($array) ? $array : array($array)) . "'";
- } else {
- return 0;
- }
-}
-
-function libfile($libname, $folder = '', $curpath = '')
-{ //$path 标志是那个模块内的,不指定则调用默认当前模块和核心模块的
- $libpath = '';
- if (strstr($libname, '/')) {
- list($pre, $name) = explode('/', $libname);
- $path = "{$pre}/{$pre}_{$name}";
- } else {
- $path = "{$libname}";
- }
- if ($curpath) {
- $libpath = DZZ_ROOT . '/' . $curpath . '/' . $path . '.php';
- } else {
- if ($folder) {
- $libpath0 = DZZ_ROOT . './core/' . $folder;
- if (defined('CURSCRIPT')) {
- $libpath1 = DZZ_ROOT . './' . CURSCRIPT . '/' . $folder;
- if (defined('CURMODULE')) $libpath2 = DZZ_ROOT . '/' . CURSCRIPT . '/' . CURMODULE . '/' . $folder;
- }
- } else {
- $libpath0 = DZZ_ROOT . './core';
- if (defined('CURSCRIPT')) {
- $libpath1 = DZZ_ROOT . './' . CURSCRIPT;
- if (defined('CURMODULE')) $libpath2 = DZZ_ROOT . '/' . CURSCRIPT . '/' . CURMODULE;
- }
- }
- if (isset($libpath0) && file_exists($libpath0 . '/' . $path . '.php')) {
- $libpath = $libpath0 . '/' . $path . '.php';
- } elseif (isset($libpath2) && file_exists($libpath2 . '/' . $path . '.php')) {
- $libpath = $libpath2 . '/' . $path . '.php';
- } elseif ((isset($libpath1) && file_exists($libpath1 . '/' . $path . '.php'))) {
- $libpath = $libpath1 . '/' . $path . '.php';
- }
- }
- /*if(empty($libpath)){
- exit('dfdfd');
- return false;
- }*/
-
- return $libpath;
-}
-
-function dstrlen($str)
-{
- if (strtolower(CHARSET) != 'utf-8') {
- return strlen($str);
- }
- $count = 0;
- for ($i = 0; $i < strlen($str); $i++) {
- $value = ord($str[$i]);
- if ($value > 127) {
- $count++;
- if ($value >= 192 && $value <= 223) $i++;
- elseif ($value >= 224 && $value <= 239) $i = $i + 2;
- elseif ($value >= 240 && $value <= 247) $i = $i + 3;
- }
- $count++;
- }
- return $count;
-}
-
-function showTips($message = '', $type = 'json', $template = 'common/showtips')
-{
- core\dzz\Datareturn::data_return($type, $message, $template);
-}
-
-function cutstr($string, $length, $dot = ' ...')
-{
- if (strlen($string) <= $length) {
- return $string;
- }
-
- $pre = chr(1);
- $end = chr(1);
- $string = str_replace(array('&', '"', '<', '>'), array($pre . '&' . $end, $pre . '"' . $end, $pre . '<' . $end, $pre . '>' . $end), $string);
-
- $strcut = '';
- if (strtolower(CHARSET) == 'utf-8') {
-
- $n = $tn = $noc = 0;
- while ($n < strlen($string)) {
-
- $t = ord($string[$n]);
- if ($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
- $tn = 1;
- $n++;
- $noc++;
- } elseif (194 <= $t && $t <= 223) {
- $tn = 2;
- $n += 2;
- $noc += 2;
- } elseif (224 <= $t && $t <= 239) {
- $tn = 3;
- $n += 3;
- $noc += 2;
- } elseif (240 <= $t && $t <= 247) {
- $tn = 4;
- $n += 4;
- $noc += 2;
- } elseif (248 <= $t && $t <= 251) {
- $tn = 5;
- $n += 5;
- $noc += 2;
- } elseif ($t == 252 || $t == 253) {
- $tn = 6;
- $n += 6;
- $noc += 2;
- } else {
- $n++;
- }
-
- if ($noc >= $length) {
- break;
- }
-
- }
- if ($noc > $length) {
- $n -= $tn;
- }
-
- $strcut = substr($string, 0, $n);
-
- } else {
- $_length = $length - 1;
- for ($i = 0; $i < $length; $i++) {
- if (ord($string[$i]) <= 127) {
- $strcut .= $string[$i];
- } else if ($i < $_length) {
- $strcut .= $string[$i] . $string[++$i];
- }
- }
- }
-
- $strcut = str_replace(array($pre . '&' . $end, $pre . '"' . $end, $pre . '<' . $end, $pre . '>' . $end), array('&', '"', '<', '>'), $strcut);
-
- $pos = strrpos($strcut, chr(1));
- if ($pos !== false) {
- $strcut = substr($strcut, 0, $pos);
- }
- return $strcut . $dot;
-}
-
-function dstripslashes($string)
-{
- if (empty($string)) return $string;
- if (is_array($string)) {
- foreach ($string as $key => $val) {
- $string[$key] = dstripslashes($val);
- }
- } else {
- $string = stripslashes($string);
- }
- return $string;
-}
-
-function aidencode($aid, $type = 0, $tid = 0)
-{
- global $_G;
- $s = !$type ? $aid . '|' . substr(md5($aid . md5($_G['config']['security']['authkey']) . TIMESTAMP . $_G['uid']), 0, 8) . '|' . TIMESTAMP . '|' . $_G['uid'] . '|' . $tid : $aid . '|' . md5($aid . md5($_G['config']['security']['authkey']) . TIMESTAMP) . '|' . TIMESTAMP;
- return rawurlencode(base64_encode($s));
-}
-
-
-function output()
-{
- global $_G;
- if (defined('DZZ_OUTPUTED')) {
- return;
- } else {
- define('DZZ_OUTPUTED', 1);
- }
- if ($_G['config']['rewritestatus']) {
- $content = ob_get_contents();
- $content = output_replace($content);
- ob_end_clean();
- $_G['gzipcompress'] ? ob_start('ob_gzhandler') : ob_start();
- echo $content;
- }
- if (defined('DZZ_DEBUG') && DZZ_DEBUG && @include(libfile('function/debug'))) {
- function_exists('debugmessage') && debugmessage();
- }
-}
-
-
-function outputurl( $url="" )
-{
- global $_G;
- if ($_G['config']['rewritestatus']) {
- $url = output_replace($url);
- }
- return $url;
-}
-
-function output_replace($content)
-{
- global $_G;
- if (defined('IN_ADMINCP')) return $content;
- if (!empty($_G['setting']['output']['str']['search'])) {
-
- $content = str_replace($_G['setting']['rewrite']['str']['search'], $_G['setting']['rewrite']['str']['replace'], $content);
- }
- if (!empty($_G['config']['rewrite']['preg']['search'])) {
-
- //处理js中 app_url,mod_url
- $string1 = "APP_URL='".MOD_URL."'";//",APP_URL='".MOD_URL."',MOD_URL = '".MOD_URL."'";
- $string2 = "MOD_URL='".MOD_URL."'";
- $string=array($string1,$string2);
- $md5[]=md5($string1);
- $md5[]=md5($string2);
- //end
-
- //处理非本地连接
- $reg = "/(https?|ftp|news):[\/]{2}([\w+\d+]+[.]{1})?[\w+\d]+[.]{1}[\w+\d]*+([^(\s|\"|\')]+)/";
- preg_match_all($reg,$content,$links);
- if( isset($links[0]) && $links[0]){
- $siteurl = $_G["siteurl"];
- //echo $siteurl."******";
- foreach($links[0] as $k=>$v){
- //echo $v."------------";
- if( strpos($v,$siteurl)!==false){
- //echo $v."---------- ";
- }else{
- $string[]=$v;
- $md5[]=md5($v);
- }
- }
- }
- //end
-
- $content=str_replace($string,$md5,$content);
-
- $search_arr = $_G['config']['rewrite']['preg']['search'];
- $replace_arr = $_G['config']['rewrite']['preg']['replace'];
- $search_new=array();
- $replace_new=array();
- foreach($search_arr as $k=>$v ){
- $s=$v;
- $v2 = substr_replace($v, '\&/i',-2,2);
- array_push($search_new,$v2);
- $v = substr_replace($v, '\&/i',-2,2);
- array_push($search_new,$v);
- array_push($search_new,$s);
- array_push($replace_new,$replace_arr[$k]."?");
- array_push($replace_new,$replace_arr[$k]."?");
- array_push($replace_new,$replace_arr[$k]);
- }
- $content = preg_replace($search_new, $replace_new, $content);
-
- $content=str_replace($md5,$string,$content);
- }
-
- return $content;
-}
-
-function output_ajax()
-{
- global $_G;
-
- $s = ob_get_contents();
- ob_end_clean();
- $s = preg_replace("/([\\x01-\\x08\\x0b-\\x0c\\x0e-\\x1f])+/", ' ', $s);
- $s = str_replace(array(chr(0), ']]>'), array(' ', ']]>'), $s);
- if (defined('DZZ_DEBUG') && DZZ_DEBUG && @include(libfile('function/debug'))) {
- function_exists('debugmessage') && $s .= debugmessage(1);
- }
-
- $havedomain = isset($_G['setting']['domain']['app']) ? implode('', $_G['setting']['domain']['app']) : '';
- if ((isset($_G['setting']['rewritestatus']) && $_G['setting']['rewritestatus']) || !empty($havedomain)) {
- $s = output_replace($s);
- }
- return $s;
-}
-
-
-function debug($var = null, $vardump = false)
-{
- echo '';
- $vardump = empty($var) ? true : $vardump;
- if ($vardump) {
- var_dump($var);
- } else {
- print_r($var);
- }
- exit();
-}
-
-function debuginfo()
-{
- global $_G;
- if (getglobal('config/debug')) {
- $db = &DB::object();
- $_G['debuginfo'] = array(
- 'time' => number_format((microtime(true) - $_G['starttime']), 6),
- 'queries' => $db->querynum,
- 'memory' => ucwords(C::memory()->type)
- );
- if ($db->slaveid) {
- $_G['debuginfo']['queries'] = 'Total ' . $db->querynum . ', Slave ' . $db->slavequery;
- }
- return TRUE;
- } else {
- return FALSE;
- }
-}
-
-function check_seccode($value, $idhash)
-{
- return helper_form::check_seccode($value, $idhash);
-}
-
-function check_secqaa($value, $idhash)
-{
- return helper_form::check_secqaa($value, $idhash);
-}
-
-function showmessage($message, $url_forward = '', $values = array(), $extraparam = array(), $custom = 0)
-{
- require_once libfile('function/message');
- return dshowmessage($message, $url_forward, $values, $extraparam, $custom);
-}
-
-function submitcheck($var, $allowget = 0, $seccodecheck = 0, $secqaacheck = 0)
-{
- if (!getgpc($var)) {
- return FALSE;
- } else {
- return helper_form::submitcheck($var, $allowget, $seccodecheck, $secqaacheck);
- }
-}
-
-function multi($num, $perpage, $curpage, $mpurl, $classname = '', $maxpages = 0, $page = 5, $autogoto = FALSE, $simple = FALSE, $jsfunc = FALSE)
-{
- return $num > $perpage ? helper_page::multi($num, $perpage, $curpage, $mpurl, $classname, $maxpages, $page, $autogoto, $simple, $jsfunc) : '';
-}
-
-function simplepage($num, $perpage, $curpage, $mpurl)
-{
- return helper_page::simplepage($num, $perpage, $curpage, $mpurl);
-}
-
-function censor($message)
-{
- $censor = dzz_censor::instance();
- return $censor->replace($message);
-}
-
-function space_merge(&$values, $tablename, $isarchive = false)
-{
- global $_G;
-
- $uid = empty($values['uid']) ? $_G['uid'] : $values['uid'];
- $var = "user_{$uid}_{$tablename}";
- if ($uid) {
- $ext = '';//$isarchive ? '_archive' :'' ;
- if (!isset($_G[$var])) {
- if (($_G[$var] = C::t('user_' . $tablename . $ext)->fetch($uid)) !== false) {
- //C::t('user_'.$tablename.$ext)->insert(array('uid'=>$uid));
-
- if ($tablename == 'field') {
- $_G['setting']['privacy'] = empty($_G['setting']['privacy']) ? array() : (is_array($_G['setting']['privacy']) ? $_G['setting']['privacy'] : dunserialize($_G['setting']['privacy']));
- $_G[$var]['privacy'] = empty($_G[$var]['privacy']) ? array() : is_array($_G[$var]['privacy']) ? $_G[$var]['privacy'] : dunserialize($_G[$var]['privacy']);
- } elseif ($tablename == 'profile') {
- if ($_G[$var]['department']) {
- $_G[$var]['department_tree'] = C::t('organization')->getPathByOrgid(intval($_G[$var]['department']));
- } else {
- $_G[$var]['department_tree'] = lang('please_select_a_organization_or_department');
- }
- }
- } else {
- $_G[$var] = array();
- }
- }
- $values = array_merge($values, $_G[$var]);
- }
-}
-
-function runlog($file, $message, $halt = 0)
-{
- helper_log::runlog($file, $message, $halt);
-}
-
-
-function dmkdir($dir, $mode = 0777, $makeindex = TRUE)
-{
- if (!is_dir($dir)) {
- dmkdir(dirname($dir), $mode, $makeindex);
- @mkdir($dir, $mode);
- if (!empty($makeindex)) {
- @touch($dir . '/index.html');
- @chmod($dir . '/index.html', 0777);
- }
- }
- return true;
-}
-
-function dreferer($default = '')
-{
- global $_G;
-
- $default = '';
- $_G['referer'] = !empty($_GET['referer']) ? $_GET['referer'] : (isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '');
- $_G['referer'] = substr($_G['referer'], -1) == '?' ? substr($_G['referer'], 0, -1) : $_G['referer'];
-
- if (strpos($_G['referer'], 'user.php?mod=login&op=logging&action=login')) {
- $_G['referer'] = $default;
- }
- $_G['referer'] = dhtmlspecialchars($_G['referer'], ENT_QUOTES);
- $_G['referer'] = str_replace('&', '&', $_G['referer']);
- $reurl = parse_url($_G['referer']);
-
- if ($reurl['port']) $reurl['host'] .= ':' . $reurl['port'];
- if (!empty($reurl['host']) && !in_array($reurl['host'], array($_SERVER['HTTP_HOST'], 'www.' . $_SERVER['HTTP_HOST'])) && !in_array($_SERVER['HTTP_HOST'], array($reurl['host'], 'www.' . $reurl['host']))) {
- $_G['referer'] = 'index.php';
-
- } elseif (empty($reurl['host'])) {
- $_G['referer'] = $_G['siteurl'] . './' . $_G['referer'];
- }
-
- return strip_tags($_G['referer']);
-}
-
-
-function diconv($str, $in_charset, $out_charset = CHARSET, $ForceTable = FALSE)
-{
- global $_G;
-
- $in_charset = strtoupper($in_charset);
- $out_charset = strtoupper($out_charset);
-
- if (empty($str) || $in_charset == $out_charset) {
- return $str;
- }
-
- $out = '';
-
- if (!$ForceTable) {
- if (function_exists('iconv')) {
- $out = iconv($in_charset, $out_charset . '//IGNORE', $str);
- } elseif (function_exists('mb_convert_encoding')) {
- $out = mb_convert_encoding($str, $out_charset, $in_charset);
- }
- }
-
- if ($out == '') {
- $chinese = new Chinese($in_charset, $out_charset, true);
- $out = $chinese->Convert($str);
- }
-
- return $out;
-}
-
-
-function renum($array)
-{
- $newnums = $nums = array();
- foreach ($array as $id => $num) {
- $newnums[$num][] = $id;
- $nums[$num] = $num;
- }
- return array($nums, $newnums);
-}
-
-function sizecount($size)
-{
- if ($size >= 1073741824) {
- $size = round($size / 1073741824 * 100) / 100 . ' GB';
- } elseif ($size >= 1048576) {
- $size = round($size / 1048576 * 100) / 100 . ' MB';
- } elseif ($size >= 1024) {
- $size = round($size / 1024 * 100) / 100 . ' KB';
- } else {
- $size = $size . ' Bytes';
- }
- return $size;
-}
-
-function swapclass($class1, $class2 = '')
-{
- static $swapc = null;
- $swapc = isset($swapc) && $swapc != $class1 ? $class1 : $class2;
- return $swapc;
-}
-
-function writelog($file, $log)
-{
- helper_log::writelog($file, $log);
-}
-
-function getstatus($status, $position)
-{
- $t = $status & pow(2, $position - 1) ? 1 : 0;
- return $t;
-}
-
-function setstatus($position, $value, $baseon = null)
-{
- $t = pow(2, $position - 1);
- if ($value) {
- $t = $baseon | $t;
- } elseif ($baseon !== null) {
- $t = $baseon & ~$t;
- } else {
- $t = ~$t;
- }
- return $t & 0xFFFF;
-}
-
-
-function memory($cmd, $key = '', $value = '', $ttl = 0, $prefix = '')
-{
- if ($cmd == 'check') {
- return C::memory()->enable ? C::memory()->type : '';
- } elseif (C::memory()->enable && in_array($cmd, array('set', 'get', 'rm', 'inc', 'dec'))) {
- if (defined('DZZ_DEBUG') && DZZ_DEBUG) {
- if (is_array($key)) {
- foreach ($key as $k) {
- C::memory()->debug[$cmd][] = ($cmd == 'get' || $cmd == 'rm' ? $value : '') . $prefix . $k;
- }
- } else {
- C::memory()->debug[$cmd][] = ($cmd == 'get' || $cmd == 'rm' ? $value : '') . $prefix . $key;
- }
- }
- switch ($cmd) {
- case 'set':
- return C::memory()->set($key, $value, $ttl, $prefix);
- break;
- case 'get':
- return C::memory()->get($key, $value);
- break;
- case 'rm':
- return C::memory()->rm($key, $value);
- break;
- case 'inc':
- return C::memory()->inc($key, $value ? $value : 1);
- break;
- case 'dec':
- return C::memory()->dec($key, $value ? $value : -1);
- break;
- }
- }
- return null;
-}
-
-function ipaccess($ip, $accesslist)
-{
- return preg_match("/^(" . str_replace(array("\r\n", ' '), array('|', ''), preg_quote($accesslist, '/')) . ")/", $ip);
-}
-
-function ipbanned($onlineip)
-{
- global $_G;
-
- if ($_G['setting']['ipaccess'] && !ipaccess($onlineip, $_G['setting']['ipaccess'])) {
- return TRUE;
- }
-
- loadcache('ipbanned');
- if (empty($_G['cache']['ipbanned'])) {
- return FALSE;
- } else {
- if ($_G['cache']['ipbanned']['expiration'] < TIMESTAMP) {
- require_once libfile('function/cache');
- updatecache('ipbanned');
- }
- return preg_match("/^(" . $_G['cache']['ipbanned']['regexp'] . ")$/", $onlineip);
- }
-}
-
-
-function sysmessage($message)
-{
- helper_sysmessage::show($message);
-}
-
-function getexpiration()
-{
- global $_G;
- $date = getdate($_G['timestamp']);
- return mktime(0, 0, 0, $date['mon'], $date['mday'], $date['year']) + 86400;
-}
-
-function return_bytes($val)
-{
- $val = trim($val);
- $last = strtolower($val{strlen($val) - 1});
- switch ($last) {
- case 'g':
- $val *= 1024;
- case 'm':
- $val *= 1024;
- case 'k':
- $val *= 1024;
- }
- return $val;
-}
-
-
-function getimgthumbname($fileStr, $extend = '.thumb.jpg', $holdOldExt = true)
-{
- if (empty($fileStr)) {
- return '';
- }
- if (!$holdOldExt) {
- $fileStr = substr($fileStr, 0, strrpos($fileStr, '.'));
- }
- $extend = strstr($extend, '.') ? $extend : '.' . $extend;
- return $fileStr . $extend;
-}
-
-
-function dintval($int, $allowarray = false)
-{
- $ret = intval($int);
- if ($int == $ret || !$allowarray && is_array($int)) return $ret;
- if ($allowarray && is_array($int)) {
- foreach ($int as &$v) {
- $v = dintval($v, true);
- }
- return $int;
- } elseif ($int <= 0xffffffff) {
- $l = strlen($int);
- $m = substr($int, 0, 1) == '-' ? 1 : 0;
- if (($l - $m) === strspn($int, '0987654321', $m)) {
- return $int;
- }
- }
- return $ret;
-}
-
-function strhash($string, $operation = 'DECODE', $key = '')
-{
- $key = md5($key != '' ? $key : getglobal('authkey'));
- if ($operation == 'DECODE') {
- $hashcode = gzuncompress(base64_decode(($string)));
- $string = substr($hashcode, 0, -16);
- $hash = substr($hashcode, -16);
- unset($hashcode);
- }
-
- $vkey = substr(md5($string . substr($key, 0, 16)), 4, 8) . substr(md5($string . substr($key, 16, 16)), 18, 8);
-
- if ($operation == 'DECODE') {
- return $hash == $vkey ? $string : '';
- }
-
- return base64_encode(gzcompress($string . $vkey));
-}
-
-function dunserialize($data)
-{
- if (($ret = unserialize($data)) === false) {
- $ret = unserialize(stripslashes($data));
- }
- return $ret;
-}
-
-function browserversion($type)
-{
- static $return = array();
- static $types = array('ie' => 'msie', 'firefox' => '', 'chrome' => '', 'opera' => '', 'safari' => '', 'mozilla' => '', 'webkit' => '', 'maxthon' => '', 'qq' => 'qqbrowser');
- if (!$return) {
- $useragent = strtolower($_SERVER['HTTP_USER_AGENT']);
- $other = 1;
- foreach ($types as $i => $v) {
- $v = $v ? $v : $i;
- if (strpos($useragent, $v) !== false) {
- preg_match('/' . $v . '(\/|\s)([\d\.]+)/i', $useragent, $matches);
- $ver = $matches[2];
- $other = $ver !== 0 && $v != 'mozilla' ? 0 : $other;
- } else {
- $ver = 0;
- }
- $return[$i] = $ver;
- }
- $return['other'] = $other;
- }
- return $return[$type];
-}
-
-function removedirectory($dirname, $keepdir = FALSE, $time = 0)
-{
- $dirname = str_replace(array("\n", "\r", '..'), array('', '', ''), $dirname);
-
- if (!is_dir($dirname)) {
- return FALSE;
- }
- $handle = opendir($dirname);
- while (($file = readdir($handle)) !== FALSE) {
- if ($file != '.' && $file != '..') {
- $dir = $dirname . DIRECTORY_SEPARATOR . $file;
- $mtime = filemtime($dir);
- is_dir($dir) ? removedirectory($dir) : (((TIMESTAMP - $mtime) > $time) ? unlink($dir) : '');
- }
- }
- closedir($handle);
- return !$keepdir ? (@rmdir($dirname) ? TRUE : FALSE) : TRUE;
-}
-
-global $documentexts, $textexts, $unRunExts, $docexts, $imageexts, $idtype2type;
-$documentexts = array('DZZDOC', 'HTM', 'HTML', 'SHTM', 'SHTML', 'HTA', 'HTC', 'XHTML', 'STM', 'SSI', 'JS', 'JSON', 'AS', 'ASC', 'ASR', 'XML', 'XSL', 'XSD', 'DTD', 'XSLT', 'RSS', 'RDF', 'LBI', 'DWT', 'ASP', 'ASA', 'ASPX', 'ASCX', 'ASMX', 'CONFIG', 'CS', 'CSS', 'CFM', 'CFML', 'CFC', 'TLD', 'TXT', 'PHP', 'PHP3', 'PHP4', 'PHP5', 'PHP-DIST', 'PHTML', 'JSP', 'WML', 'TPL', 'LASSO', 'JSF', 'VB', 'VBS', 'VTM', 'VTML', 'INC', 'SQL', 'JAVA', 'EDML', 'MASTER', 'INFO', 'INSTALL', 'THEME', 'CONFIG', 'MODULE', 'PROFILE', 'ENGINE', 'DOC', 'DOCX', 'XLS', 'XLSX', 'PPT', 'PPTX', 'ODT', 'ODS', 'ODG', 'RTF', 'ET', 'DPX', 'WPS');
-$textexts = array('DZZDOC', 'HTM', 'HTML', 'SHTM', 'SHTML', 'HTA', 'HTC', 'XHTML', 'STM', 'SSI', 'JS', 'JSON', 'AS', 'ASC', 'ASR', 'XML', 'XSL', 'XSD', 'DTD', 'XSLT', 'RSS', 'RDF', 'LBI', 'DWT', 'ASP', 'ASA', 'ASPX', 'ASCX', 'ASMX', 'CONFIG', 'CS', 'CSS', 'CFM', 'CFML', 'CFC', 'TLD', 'TXT', 'PHP', 'PHP3', 'PHP4', 'PHP5', 'PHP-DIST', 'PHTML', 'JSP', 'WML', 'TPL', 'LASSO', 'JSF', 'VB', 'VBS', 'VTM', 'VTML', 'INC', 'SQL', 'JAVA', 'EDML', 'MASTER', 'INFO', 'INSTALL', 'THEME', 'CONFIG', 'MODULE', 'PROFILE', 'ENGINE');
-$unRunExts = array('htm', 'html', 'js', 'php', 'jsp', 'asp', 'aspx', 'xml', 'htc', 'shtml', 'shtm', 'vbs'); //需要阻止运行的后缀名;
-$docexts = array('DOC', 'DOCX', 'XLS', 'XLSX', 'PPT', 'PPTX', 'ODT', 'ODS', 'ODG', 'RTF', 'ET', 'DPX', 'WPS');
-//echo strtolower(implode(',',$docexts));
-$imageexts = array('JPG', 'JPEG', 'GIF', 'PNG', 'BMP');
-$videoexts =
-$idtype2type = array(
- 'picid' => 'image',
- 'lid' => 'link',
- 'mid' => 'music',
- 'vid' => 'video',
- 'did' => 'document',
- 'appid' => 'app',
- 'qid' => 'attach',
- 'uid' => 'user'
-);
-function get_os($agent = '')
-{
- if (!$agent) $agent = $_SERVER['HTTP_USER_AGENT'];
- $os = 'unknow';
- if (stristr($agent, 'iPad')) {
- $os = "iPad";
- } elseif (preg_match('/Android (([0-9_.]{1,3})+)/i', $agent, $version)) {
- $os = "Android " . $version[1];
- } elseif (preg_match('/iPhone OS (([0-9_.]{1,3})+)/i', $agent, $version)) {
- $os = "iPhone " . $version[1];
- } elseif (preg_match('/win/i', $agent) && strpos($agent, '95')) {
- $os = 'Windows 95';
- } elseif (preg_match('/win 9x/i', $agent) && strpos($agent, '4.90')) {
- $os = 'Windows ME';
- } elseif (preg_match('/win/i', $agent) && preg_match('/98/i', $agent)) {
- $os = 'Windows 98';
- } elseif (preg_match('/win/i', $agent) && preg_match('/nt 6.0/i', $agent)) {
- $os = 'Windows Vista';
- } elseif (preg_match('/win/i', $agent) && preg_match('/nt 6.1/i', $agent)) {
- $os = 'Windows 7';
- } elseif (preg_match('/win/i', $agent) && preg_match('/nt 6.2/i', $agent)) {
- $os = 'Windows 8';
- } elseif (preg_match('/win/i', $agent) && preg_match('/nt 10.0/i', $agent)) {
- $os = 'Windows 10';
- } elseif (preg_match('/win/i', $agent) && preg_match('/nt 5.1/i', $agent)) {
- $os = 'Windows XP';
- } elseif (preg_match('/win/i', $agent) && preg_match('/nt 5/i', $agent)) {
- $os = 'Windows 2000';
- } elseif (preg_match('/win/i', $agent) && preg_match('/nt/i', $agent)) {
- $os = 'Windows NT';
- } elseif (preg_match('/win/i', $agent) && preg_match('/32/i', $agent)) {
- $os = 'Windows 32';
- } elseif (preg_match('/linux/i', $agent)) {
- $os = 'Linux';
- } elseif (preg_match('/unix/i', $agent)) {
- $os = 'Unix';
- } elseif (preg_match('/sun/i', $agent) && preg_match('/os/i', $agent)) {
- $os = 'SunOS';
- } elseif (preg_match('/ibm/i', $agent) && preg_match('/os/i', $agent)) {
- $os = 'IBM OS/2';
- } elseif (preg_match('/Mac/i', $agent) && preg_match('/PC/i', $agent)) {
- $os = 'Macintosh';
- } elseif (preg_match('/PowerPC/i', $agent)) {
- $os = 'PowerPC';
- } elseif (preg_match('/AIX/i', $agent)) {
- $os = 'AIX';
- } elseif (preg_match('/HPUX/i', $agent)) {
- $os = 'HPUX';
- } elseif (preg_match('/NetBSD/i', $agent)) {
- $os = 'NetBSD';
- } elseif (preg_match('/BSD/i', $agent)) {
- $os = 'BSD';
- } elseif (preg_match('/OSF1/i', $agent)) {
- $os = 'OSF1';
- } elseif (preg_match('/IRIX/i', $agent)) {
- $os = 'IRIX';
- } elseif (preg_match('/FreeBSD/i', $agent)) {
- $os = 'FreeBSD';
- } elseif (preg_match('/teleport/i', $agent)) {
- $os = 'teleport';
- } elseif (preg_match('/flashget/i', $agent)) {
- $os = 'flashget';
- } elseif (preg_match('/webzip/i', $agent)) {
- $os = 'webzip';
- } elseif (preg_match('/offline/i', $agent)) {
- $os = 'offline';
- } else {
- $os = 'unkonow';
- }
- return $os;
-}
-
-
-function array_sort($arr, $keys, $type = 'asc')
-{ //二维数组排序;
- $keysvalue = $new_array = array();
- foreach ($arr as $k => $v) {
- $keysvalue[$k] = $v[$keys];
- }
- if ($type == 'asc') {
- asort($keysvalue);
- } else {
- arsort($keysvalue);
- }
- reset($keysvalue);
- foreach ($keysvalue as $k => $v) {
- $new_array[$k] = $arr[$k];
- }
- return $new_array;
-}
-
-
-if (!function_exists('json_decode')) {
- function json_decode($content, $assoc = false)
- {
- require_once DZZ_ROOT . '/dzz/class/class_json.php';
- if ($assoc) {
- $json = new Services_JSON(SERVICES_JSON_LOOSE_TYPE);
- } else {
- $json = new Services_JSON;
- }
- return $json->decode($content);
- }
-}
-
-if (!function_exists('json_encode')) {
- function json_encode($content)
- {
- require_once DZZ_ROOT . '/dzz/class/class_json.php';
- $json = new Services_JSON;
- return $json->encode($content);
- }
-}
-
-function arr_encode(&$array)
-{
- foreach ($array as $key => $value) {
- if (is_array($value)) {
- arr_encode($array[$key]);
- } else {
- $array[$key] = (diconv(stripslashes($value), CHARSET, 'UTF-8'));
- }
- }
-}
-
-function json_encode_gbk($array)
-{
- global $_G;
- arr_encode($array);
- $json = json_encode($array);
- return ($json);
-}
-
-function getThames()
-{//处理风格
- global $_G;
- $thames = DB::fetch_first("SELECT * FROM " . DB::table('user_thame') . " WHERE uid='{$_G['uid']}'");
- $return = $data = array();
- $arr = array();
- if (empty($thames['thame']) || (!$arr = DB::fetch_first("select * from " . DB::table('thame') . " where id='{$thames['thame']}'"))) {
- $arr = DB::fetch_first("select * from " . DB::table('thame') . " where 1 ORDER BY `default` DESC LIMIT 1");
- }
- if (empty($arr['folder'])) $arr['folder'] = 'colorful';
- $arr['modules'] = unserialize(stripslashes($arr['modules']));
-
- if (empty($arr['modules']['window'])) {
- $arr['modules']['window'] = 'colorful';
- }
- if (empty($arr['modules']['filemanage'])) {
- $arr['modules']['filemanage'] = 'window_jd';
- }
- if (empty($arr['modules']['icoblock'])) {
- $arr['modules']['icoblock'] = 'default';
- }
- if (empty($arr['modules']['menu'])) {
- $arr['modules']['menu'] = 'default';
- }
- if (empty($arr['modules']['startmenu'])) {
- $arr['modules']['startmenu'] = 'default';
- }
- if (empty($arr['modules']['taskbar'])) {
- $arr['modules']['taskbar'] = 'default';
- }
- if (!$arr['backimg']) $arr['backimg'] = 'dzz/styles/thame/' . $arr['folder'] . '/back.jpg';
- $data['system'] = $arr;
- $data['custom'] = array(
- 'custom_backimg' => !empty($thames['custom_backimg']) ? $thames['custom_backimg'] : '',
- 'custom_url' => !empty($thames['custom_url']) ? $thames['custom_url'] : '',
- 'custom_color' => !empty($thames['custom_color']) ? $thames['custom_color'] : '',
- 'custom_btype' => !empty($thames['custom_btype']) ? $thames['custom_btype'] : '',
-
- );
-
- $return['data'] = $data;
- $return['thame'] = array(
- 'folder' => $arr['folder'],
- 'backimg' => !empty($thames['custom_backimg']) ? $thames['custom_backimg'] : $arr['backimg'],
- 'color' => !empty($arr['enable_color']) ? (!empty($thames['custom_color']) ? $thames['custom_color'] : $arr['color']) : '',
- 'modules' => $arr['modules'],
- );
- return $return;
-}
-
-function getTableBytype($type)
-{
- switch ($type) {
- case 'folder':
- return array('fid', 'folder');
- case 'attach':
- return array('qid', 'source_attach');
- case 'document':
- return array('did', 'source_document');
- case 'image':
- return array('picid', 'source_image');
- case 'link':
- return array('lid', 'source_link');
- case 'video':
- return array('vid', 'source_video');
- case 'music':
- return array('mid', 'source_music');
- case 'topic':
- return array('tid', 'source_topic');
- case 'app':
- return array('appid', 'app_market');
- case 'user':
- return array('uid', 'user');
- }
- return false;
-}
-
-function getsource_by_idtype($type, $oid)
-{
- global $_G;
- if ($arr = getTableBytype($type)) {
- return C::t($arr[1])->fetch($oid);
- } else {
- return false;
- }
-}
-
-function topshowmessage($msg)
-{
- include template('common/header_common');
- echo "";
- include template('common/footer_reload');
- exit();
-}
-
-function SpaceSize($size, $gid=0, $isupdate = 0, $uid=0)
-{
- //size: 增加的话为正值,减少的话为负值;
- //gid : 大于零位群组空间,否则为$_G['uid']的空间,
- //isupdate: 为true,则实际改变空间,否则只是检查是否有空间
- //$uid:留空为当前用户
- global $_G, $space;
- if (empty($uid)) $uid = $_G['uid'];
- if ($gid > 0) {
- if (!$org = C::t('organization')->fetch($gid)) { //机构不存在时,返回错误;
- //return false;
- }
- $spacearr['usesize'] = intval($org['usesize']);
-
- $spacearr['maxspacesize'] = C::t('organization')->get_usespace_size_by_orgid($gid);
- } else {
- if (!$space) {
- $space = dzzgetspace($uid);
- } else {
- $space['usesize'] = DB::result_first("select usesize from %t where uid=%d", array('user_field', $uid));
- }
- $spacearr = $space;
- }
- if ($isupdate) {
- $new_usesize = ($spacearr['usesize'] + $size) > 0 ? ($spacearr['usesize'] + $size) : 0;
- if ($gid > 0) {
- C::t('organization')->update($gid, array('usesize' => $new_usesize));
- } else {
- C::t('user_field')->update($uid, array('usesize' => $new_usesize));
- }
- return true;
- } else {
- if ($gid) {
- if ($spacearr['maxspacesize'] == 0) return true; //机构最大空间为0 表示不限制
- if ($size > $spacearr['maxspacesize']) {
- return false;
- } else {
- return true;
- }
- return true;
- } else {
- if ($space['maxspacesize'] == 0) return true; //用户组最大空间为0 表示不限制
- elseif ($space['maxspacesize'] < 0) return false; //用户组最大空间<0 表示没有空间
- if (($spacearr['usesize'] + $size) > $spacearr['maxspacesize']) {
- return false;
- } else {
- return true;
- }
- }
- }
-}
-
-function getPositionName($fid)
-{
- $return = '';
- $folder = C::t('folder')->fetch($fid);
- if ($folder['flag'] == 'dock') {
- $return = lang('dock');
-
- } elseif ($folder['flag'] == 'desktop') {
- $return = lang('desktop');
- } else {
- $return = $folder['fname'];
- }
- if ($return) return '"' . $return . '"';
- else return '';
-}
-
-function getPathByPfid($pfid, $arr = array(), $count = 0)
-{
- //static $arr=array();
- //static $count=0;
- if ($count > 100) return $arr; //防止死循环;
- else $count++;
- if ($value = DB::fetch_first("select pfid,fid,fname from " . DB::table('folder') . " where fid='{$pfid}'")) {
- $arr[$value['fid']] = $value['fname'];
- if ($value['pfid'] > 0 && $value['pfid'] != $pfid) $arr = getPathByPfid($value['pfid'], $arr, $count);
- }
- //$arr=array_reverse($arr);
-
- return $arr;
-
-}
-
-
-
-//返回自己和上级目录fid数组;
-function getTopFid($fid, $i = 0, $arr = array())
-{
- $arr[] = $fid;
- if ($i > 100) return $arr; //防止死循环;
- else $i++;
- if ($pfid = DB::result_first("select pfid from " . DB::table('folder') . " where fid='{$fid}'")) {
- if ($pfid != $fid) $arr = getTopFid($pfid, $i, $arr);
- }
- return $arr;
-}
-
-function getGidByContainer($container)
-{
- global $_G;
- if (strpos($container, 'icosContainer_folder_') !== false) {
- $fid = intval(str_replace('icosContainer_folder_', '', $container));
- if ($fid > 0) return DB::result_first("select gid from " . DB::table('folder') . " where fid='{$fid}'");
- else return 0;
- } else {
- return 0;
- }
-}
-
-function getFidByContainer($container)
-{
- global $_G;
- if (strpos($container, 'icosContainer_body_') !== false) {
- $fid = intval(str_replace('icosContainer_folder_', '', $container));
- return DB::result_first("select fid from " . DB::table('folder') . " where flag='desktop' and uid='" . $_G['uid'] . "'");
- } elseif (strpos($container, 'icosContainer_folder_') !== false) {
- $fid = intval(str_replace('icosContainer_folder_', '', $container));
- return DB::result_first("select fid from " . DB::table('folder') . " where fid='{$fid}'");
- } elseif (strpos($container, '_dock_') !== false) {
- return DB::result_first("select fid from " . DB::table('folder') . " where flag='dock' and uid='" . $_G['uid'] . "'");
- } elseif ($container == '_dock') {
- return DB::result_first("select fid from " . DB::table('folder') . " where flag='dock' and uid='" . $_G['uid'] . "'");
- } else {
- return false;
- }
-}
-
-function getContainerByFid($pfid)
-{
- global $_G;
- $folder = C::t('folder')->fetch($pfid);
- switch ($folder['flag']) {
- case 'desktop':
- return 'icosContainer_body_' . $pfid;
- case 'dock':
- return '_dock';
- case 'folder':
- return 'icosContainer_folder_' . $pfid;
- case 'organization':
- return 'icosContainer_folder_' . $pfid;
- default:
- return '';
- }
-}
-
-
-/*function replace_remote($icoarr){
- global $_G;
- switch($icoarr['type']){
- case 'attach':case 'document':
- $icoarr['url']='';
- break;
- case 'image':
- if($icoarr['thumb']) $icoarr['img']=$_G['setting']['attachurl'].getimgthumbname($icoarr['url']);
- else $icoarr['img']=getAttachUrl(array('attachment'=>$icoarr['url'],'remote'=>$icoarr['remote']),true);
- $icoarr['_bz']=$bz;
- $icoarr['url']=getAttachUrl(array('attachment'=>$icoarr['url'],'remote'=>$icoarr['remote']),true);
- break;
- }
- return $icoarr;
-}*/
-function replace_canshu($str, $data = array())
-{
- global $_G;
- $replacearr = array('{dzzscript}' => 'index.php', '{DZZSCRIPT}' => 'index.php', '{adminscript}' => 'admin.php', '{ADMINSCRIPT}' => 'admin.php', '{uid}' => $_G['uid']);
- $search = array();
- $replace = array();
- foreach ($replacearr as $key => $value) {
- $search[] = $key;
- $replace[] = $value;
- }
- return str_replace($search, $replace, $str);
-}
-
-function dzz_libfile($libname, $folder = '')
-{
- $libpath = DZZ_ROOT . '/dzz/' . $folder;
- if (strstr($libname, '/')) {
- list($pre, $name) = explode('/', $libname);
- return realpath("{$libpath}/{$pre}/{$pre}_{$name}.php");
- } else {
- return realpath("{$libpath}/{$libname}.php");
- }
-}
-
-function dzzlang($file, $langvar = null, $vars = array(), $default = null)
-{
- global $_G;
-// return lang($file,$langvar,$vars,$defualt,'dzz/admin');
- list($path, $file) = explode('/', $file);
- if (!$file) {
- $file = $path;
- $path = '';
- }
-
- if ($path == '') {
- $vars1 = explode(':', $file);
- if (count($vars1) == 2) {
- list($plugfolder, $file) = explode(':', $file);
- $key = 'plugin_' . $plugfolder . '_' . $file;
- if (!isset($_G['lang'][$key])) {
- include DZZ_ROOT . './dzz/plugin/' . $plugfolder . '/language/' . 'lang_' . $file . '.php';
- $_G['lang'][$key] = $lang;
- }
- } else {
- $key = $file;
- if (!isset($_G['lang'][$key])) {
- include DZZ_ROOT . './dzz/language/' . ($path == '' ? '' : $path . '/') . 'lang_' . $file . '.php';
- $_G['lang'][$key] = $lang;
- }
- }
- $returnvalue = &$_G['lang'];
- } else {
- $key = $path == '' ? $file : $path . '_' . $file;
- if (!isset($_G['lang'][$key])) {
- include DZZ_ROOT . './dzz/' . $path . '/language/lang_' . $file . '.php';
- $_G['lang'][$key] = $lang;
- }
-
- $returnvalue = &$_G['lang'];
- }
- $return = $langvar !== null ? (isset($returnvalue[$key][$langvar]) ? $returnvalue[$key][$langvar] : null) : $returnvalue[$key];
- $return = $return === null ? ($default !== null ? $default : $langvar) : $return;
- $searchs = $replaces = array();
- if ($vars && is_array($vars)) {
- foreach ($vars as $k => $v) {
- $searchs[] = '{' . $k . '}';
- $replaces[] = $v;
- }
- }
- if (is_string($return) && strpos($return, '{_G/') !== false) {
- preg_match_all('/\{_G\/(.+?)\}/', $return, $gvar);
- foreach ($gvar[0] as $k => $v) {
- $searchs[] = $v;
- $replaces[] = getglobal($gvar[1][$k]);
- }
- }
- $return = str_replace($searchs, $replaces, $return);
- return $return;
-}
-
-function getFileTypeName($type, $ext)
-{
- $typename = '';
- switch ($type) {
- case 'image':
- $typename = lang('typename_image');
- break;
- case 'video':
- $typename = lang('typename_video');
- break;
- case 'music':
- $typename = lang('typename_music');
- break;
- case 'attach':
- $typename = lang('typename_attach');
- break;
- case 'app':
- $typename = lang('typename_app');
- break;
- case 'user':
- $typename = lang('typename_user');
- break;
- case 'link':
- $typename = lang('typename_link');
- break;
- case 'folder':
- $typename = lang('typename_folder');
- break;
- case 'document':
- $typename = lang('typename_document');
- break;
- case 'pan':
- $typename = lang('typename_pan');
- break;
- case 'storage':
- $typename = lang('typename_storage');
- break;
- case 'shortcut':
- $typename = lang('typename_shortcut');
- return $typename;
- }
-
- $name = '';
- if ($ext == 'dzzdoc') {
- $name = lang('extname_dzzdoc');
- } elseif ($ext == 'txt') {
- $name = lang('extname_txt');
- } else {
- $name = strtoupper($ext) . ' ' . $typename;
- }
-
- return $name;
-}
-
-
-
-function dzzgetspace($uid)
-{
- global $_G;
- $space = array();
- if ($uid == 0) {
- $space = array('uid' => 0, 'self' => 0, 'username' => '', 'adminid' => 0, 'groupid' => 7, 'credits' => 0, 'timeoffset' => 9999, 'usesize' => 0, 'maxspacesize' => -1, 'attachextensions' => '');
- } else {
- $space = getuserbyuid($uid);
- }
-
- if ($_G['adminid'] == 1) {
- $space['self'] = 2;
- }
- //用户组信息
- if (!isset($_G['cache']['usergroups'])) loadcache('usergroups');
- $usergroup = $_G['cache']['usergroups'][$space['groupid']];
- //$space['groupsize']=$usergroup['maxspacesize']*1024*1024;
-
- //获取相关设置信息
- $setting = $_G['setting'];
- if ($config = DB::fetch_first("select usesize,attachextensions,maxattachsize,addsize,buysize,perm,taskbar,userspace from " . DB::table('user_field') . " where uid='{$uid}'")) {
- $config['perm'] = ($config['perm'] < 1) ? $usergroup['perm'] : $config['perm'];
- $config['attachextensions'] = ($config['attachextensions'] < 0) ? $usergroup['attachextensions'] : $config['attachextensions'];
- $config['maxattachsize'] = ($config['maxattachsize'] < 0) ? $usergroup['maxattachsize'] * 1024 * 1024 : $config['maxattachsize'] * 1024 * 1024;
-
- /* //如果用户存储功能未开启,用户空间大小为-1
- if (isset($setting['usermemoryOn']) && !$setting['usermemoryOn']) {
-
- $config['maxspacesize'] = -1;
-
- } else {*/
- //判断是否有用户独享空间设置
- if ($config['userspace'] > 0 || $config['userspace'] == -1) {
- $config['maxspacesize'] = ($config['userspace'] > 0) ? $config['userspace'] * 1024 * 1024 : $config['userspace'];
-
- } elseif ($config['userspace'] == 0) {//如果未设置用户空间
-
- /* //判断是否为指定用户开启用户存储
- $spaceon = isset($setting['mermoryusersetting']) ? $setting['mermoryusersetting'] : '';
- $memorySpace = isset($setting['memorySpace']) ? $setting['memorySpace'] : '';
-
- //指定用户时,并指定用户空间
- if ($spaceon == 'appoint' && $memorySpace != 0) {
-
- $usersarr = explode(',', $setting['memoryorgusers']);
- $uesrs = array();
- foreach ($usersarr as $v) {
- //群组id
- if (preg_match('/\d+/', $v)) {
- foreach (C::t('organization_user')->fetch_user_byorgid($v) as $val) {
- $users[] = $val['uid'];
- }
- } elseif ($v == 'other') {
- foreach (C::t('user')->fetch_uid_by_groupid(9) as $val) {
- $users[] = $val['uid'];
- }
- } elseif (preg_match('/uid_\d+/', $v)) {
- $users[] = preg_replace('/uid_/', '');
- }
-
- }
- $users = array_unique($users);
- //判断用户是否在指定用户中
- if (in_array($uid, $users)) {
- $config['maxspacesize'] = ($memorySpace > 0) ? $memorySpace * 1024 * 1024 : $memorySpace;
- }else{
- $config['maxspacesize'] = -1;
- }
- } else {*///如果未指定开启存储用户或设置指定用户空间为0
- //用户组空间(去掉额外空间和购买空间)
- if ($usergroup['maxspacesize'] == 0) {
- $config['maxspacesize'] = 0;
- } elseif ($usergroup['maxspacesize'] < 0) {
- /*if(($config['addsize']+$config['buysize'])>0){
- $config['maxspacesize']=($config['addsize']+$config['buysize'])*1024*1024;
- }else{*/
- $config['maxspacesize'] = -1;
- //}
- } else {
- //$config['maxspacesize']=($usergroup['maxspacesize']+$config['addsize']+$config['buysize'])*1024*1024;
- $config['maxspacesize'] = $usergroup['maxspacesize'] * 1024 * 1024;
- }
- // }
- }
- // }
- $space = array_merge($space, $config);
- }
- $space['fusesize'] = formatsize($space['usesize']);
- if ($space['maxspacesize'] > 0) {
- $space['fmaxspacesize'] = formatsize($space['maxspacesize']);
- } elseif ($space['maxspacesize'] == 0) {
- $space['fmaxspacesize'] = '无限制';
- } else {
- $space['fmaxspacesize'] = '未分配空间';
- }
- $space['attachextensions'] = str_replace(' ', '', $space['attachextensions']);
- $typefid = array();
-
- $space['typefid'] = C::t('folder')->fetch_typefid_by_uid($uid);
- $space['maxChunkSize'] = $_G['setting']['maxChunkSize'];
- return $space;
-
-}
-
-function microtime_float()
-{
- list($usec, $sec) = explode(' ', microtime());
- return (floatval($usec) + floatval($sec));
-}
-
-function dzz_file_get_contents($source, $redirect = 0, $proxy = '')
-{
- if (function_exists('curl_init') !== false) {
- return curl_file_get_contents($source, $redirect, $proxy);
- } else {
- return file_get_contents($source);
- }
-}
-
-function curl_file_get_contents($durl, $redirect = 0, $proxy = '')
-{
- global $_SERVER;
- set_time_limit(0);
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $durl);
- curl_setopt($ch, CURLOPT_TIMEOUT, 5);
- if ($proxy) {
- curl_setopt($ch, CURLOPT_PROXY, $proxy);
- }
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
- curl_setopt($ch, CURLOPT_ENCODING, '');
- curl_setopt($ch, CURLOPT_USERAGENT, '');
- curl_setopt($ch, CURLOPT_REFERER, '');
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_MAXREDIRS, 5);
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
- if ($redirect) $r = curl_redir_exec($ch);
- else $r = curl_exec($ch);
- curl_close($ch);
- return $r;
-}
-
-function curl_redir_exec($ch, $debug = "")
-{
- static $curl_loops = 0;
- static $curl_max_loops = 20;
- set_time_limit(0);
- if ($curl_loops++ >= $curl_max_loops) {
- $curl_loops = 0;
- return FALSE;
- }
- curl_setopt($ch, CURLOPT_HEADER, true);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- $data = curl_exec($ch);
- $debbbb = $data;
- list($header, $data) = explode("\n\n", $data, 2);
- $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
- if ($http_code == 301 || $http_code == 302) {
- $matches = array();
- preg_match('/Location:(.*?)\n/', $header, $matches);
- $url = @parse_url(trim(array_pop($matches)));
- if (!$url) {
- //couldn't process the url to redirect to
- $curl_loops = 0;
- return $data;
- }
- $last_url = parse_url(curl_getinfo($ch, CURLINFO_EFFECTIVE_URL));
- /* if (!$url['scheme'])
- $url['scheme'] = $last_url['scheme'];
- if (!$url['host'])
- $url['host'] = $last_url['host'];
- if (!$url['path'])
- $url['path'] = $last_url['path'];*/
- $new_url = $url['scheme'] . '://' . $url['host'] . $url['path'] . ($url['query'] ? '?' . $url['query'] : '');
- curl_setopt($ch, CURLOPT_URL, $new_url);
- // debug('Redirecting to', $new_url);
-
- return curl_redir_exec($ch);
- } else {
- $curl_loops = 0;
- return $debbbb;
- }
-}
-
-function ico_png($source, $target, $proxy = '')
-{
- $ext = strtolower(substr(strrchr($source, '.'), 1, 10));
- $imgexts = array('png', 'jpg', 'jpeg', 'gif');
- if (in_array($ext, $imgexts)) {
- exit($source);
- $data = dzz_file_get_contents($source, 0, $proxy);
- if ($data && file_put_contents($target, $data)) {
- return true;
- } else {
- return false;
- }
- } elseif ($ext == 'ico') {
- require_once dzz_libfile('class/ico');
- $oico = new Ico($source, $proxy);
- $max = -1;
- $data_length = 0;
- for ($i = 0; $i < $oico->TotalIcons(); $i++) {
- $data = $oico->GetIconInfo($i);
- if ($data['data_length'] > $data_length) {
- $data_length = $data['data_length'];
- $max = $i;
- }
- }
- if ($max >= 0 && imagepng($oico->GetIcon($max), $target)) {
- return true;
- } else return false;
- } else {
- return false;
- }
-}
-
-function check_remote_file_exists($url, $proxy = '')
-{
- set_time_limit(0);
- $u = parse_url($url);
- if (!$u || !isset($u['host'])) return false;
- if (function_exists('curl_init') !== false) {
- $curl = curl_init();
- curl_setopt($curl, CURLOPT_URL, $url);
- //curl_setopt($curl, CURLOPT_CONNECTTIMEOUT_MS, 500);
- curl_setopt($curl, CURLOPT_TIMEOUT, 5);
-
- if ($proxy) {
- curl_setopt($curl, CURLOPT_PROXY, $proxy);
- }
- // 不取回数据
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
- curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
- curl_setopt($curl, CURLOPT_NOBODY, true);
- curl_setopt($curl, CURLOPT_REFERER, '');
- curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET'); //不加这个会返回403,加了才返回正确的200,原因不明
- // 发送请求
- $result = curl_exec($curl);
- $found = false;
- // 如果请求没有发送失败
- if ($result !== false) {
- // 再检查http响应码是否为200
- $statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
- if ($statusCode == 200) {
- $found = true;
- }
- }
- curl_close($curl);
- return $found;
- } else {
- $h = get_headers($url);
- //print_r($h);
- if (!$h || !isset($h[0])) return false;
- $status = $h[0];
- //echo $status;
- return preg_match("/.*?200\s*OK/i", $status) ? true : false;
- }
-}
-
-function imagetolocal($source, $dir = 'appimg', $target = '')
-{
- global $_G;
- if (empty($source)) return false;
- if (!$data = dzz_file_get_contents($source)) {
- return false;
- }
- if ($target == 'dzz/images/default/icodefault.png' || $target == 'dzz/images/default/widgetdefault.png' || preg_match("/^(http|ftp|https|mms)\:\/\/(.+?)/i", $target)) {
- $target = '';
- }
- if (!$target) {
- $imageext = array('jpg', 'jpeg', 'png', 'gif');
- $ext = strtolower(substr(strrchr($source, '.'), 1, 10));
- if (!in_array($ext, $imageext)) return false;
- $subdir = $subdir1 = $subdir2 = '';
- $subdir1 = date('Ym');
- $subdir2 = date('d');
- $subdir = $subdir1 . '/' . $subdir2 . '/';
- $target1 = $_G['setting']['attachdir'] . $dir . '/' . $subdir . '' . date('His') . '' . strtolower(random(16)) . '.' . $ext;
- $target = str_replace($_G['setting']['attachdir'], '', $target1);
- } else {
- $target1 = $_G['setting']['attachdir'] . $target;
- }
- $targetpath = dirname($target1);
- dmkdir($targetpath);
- if (file_put_contents($target1, $data)) {
- if (@filesize($target1) < 200) {
- @unlink($target1);
- return false;
- }
- return $target;
- } else return false;
-}
-
-function image_to_icon($source, $target, $domain)
-{
- global $_G;
- if (!$data = dzz_file_get_contents($source)) {
- return false;
- }
- if (!$target) {
- $imageext = array('jpg', 'jpeg', 'png', 'gif');
- $ext = str_replace("/\?.+?/i", '', strtolower(substr(strrchr($source, '.'), 1, 10)));
- if (!in_array($ext, $imageext)) $ext = 'jpg';
- $subdir = $subdir1 = $subdir2 = '';
- $subdir1 = date('Ym');
- $subdir2 = date('d');
- $subdir = $subdir1 . '/' . $subdir2 . '/';
- $target = 'icon/' . $subdir . '' . $domain . '_' . strtolower(random(8)) . '.' . $ext;
- $target_attach = $_G['setting']['attachdir'] . $target;
- } else {
- $target_attach = $_G['setting']['attachdir'] . $target;
- }
- $targetpath = dirname($target_attach);
- dmkdir($targetpath);
- if (file_put_contents($target_attach, $data)) {
- return $target;
- } else {
- return false;
- }
-}
-
-
-function getTxtAttachByMd5($message, $filename_title, $ext)
-{
- global $_G;
- @set_time_limit(0);
- $filename = date('His') . '' . strtolower(random(16));
- //$ext=strtolower(substr(strrchr($filename_title, '.'), 1, 10));
-
- if (!$ext) $ext = 'dzzdoc';
- if ($ext && in_array($ext, $_G['setting']['unRunExts'])) {
- $unrun = 1;
- } else {
- $unrun = 0;
- }
- //保存附件并且生成附件MD5;
- $subdir = $subdir1 = $subdir2 = '';
- $subdir1 = date('Ym');
- $subdir2 = date('d');
- $subdir = $subdir1 . '/' . $subdir2 . '/';
- $target1 = 'dzz/' . $subdir . 'index.html';
- $target = 'dzz/' . $subdir;
- $target_attach = $_G['setting']['attachdir'] . $target1;
- $targetpath = dirname($target_attach);
- dmkdir($targetpath);
-
- if (is_resource($message)) {
- while (!feof($message)) {
- if (!file_put_contents($_G['setting']['attachdir'] . $target . $filename . '.' . ($unrun ? 'dzz' : $ext), fread($message, 8192), FILE_APPEND)) {
- return false;
- }
- }
- fclose($message);
- } else {
- if ($message == '') $message = ' ';
- if (!file_put_contents($_G['setting']['attachdir'] . $target . $filename . '.' . ($unrun ? 'dzz' : $ext), $message)) {
- return false;
- }
- }
- $size = @filesize($_G['setting']['attachdir'] . $target . $filename . '.' . ($unrun ? 'dzz' : $ext));
-
- $md5 = md5_file($_G['setting']['attachdir'] . $target . $filename . '.' . ($unrun ? 'dzz' : $ext));
- if ($md5 && $attach = C::t('attachment')->fetch_by_md5($md5)) {
- $attach['filename'] = $filename_title;
- $attach['filetype'] = strtolower($ext);
- @unlink($_G['setting']['attachdir'] . $target . $filename . '.' . ($unrun ? 'dzz' : $ext));
-
- } else {
- $remote = 0;
- $attach = array(
- 'filesize' => $size,
- 'attachment' => $target . $filename . '.' . ($unrun ? 'dzz' : $ext),
- 'filetype' => strtolower($ext),
- 'filename' => $filename_title,
- 'remote' => $remote,
- 'copys' => 0,
- 'md5' => $md5,
- 'unrun' => $unrun,
- 'dateline' => $_G['timestamp'],
- );
- if (!$attach['aid'] = C::t('attachment')->insert($attach, 1)) {
- return false;
- }
- try {
- if ($remoteid = io_remote::MoveToSpace($attach)) {
- $attach['remote'] = $remoteid;
- C::t('attachment')->update($attach['aid'], array('remote' => $remoteid));
- @unlink($_G['setting']['attachdir'] . $target . $filename . '.' . ($unrun ? 'dzz' : $ext));
- }
- } catch (Exception $e) {
- //return array('error'=>$e->getMessage());
- return false;
- }
- }
- return $attach;
-}
-
-
-function checkCopy($icoid = 0, $sourcetype = '', $iscut = 0, $obz, $tbz)
-{
- global $_G;
- $copy = 1;
- if ($sourcetype == 'uid') {
- return 1;
- } elseif ($iscut == 2) {
- return 1;
- } elseif ($iscut == 1) {
- return 0;
- } elseif ($obz != $tbz) {
- return 1;//不同api之间复制 ;
- } elseif ($obz == $tbz) {
- return 0;//相同api之间移动;
-
- }
- return $copy;
-}
-
-function delete_icoid_from_container($icoid, $pfid)
-{
- global $_G;
- $typefid = C::t('folder')->fetch_typefid_by_uid($_G['uid']);
- if ($pfid == $typefid['dock']) {
- $docklist = DB::result_first("select docklist from " . DB::table('user_field') . " where uid='{$_G[uid]}'");
- $docklist = $docklist ? explode(',', $docklist) : array();
- foreach ($docklist as $key => $value) {
- if ($value == $icoid) {
- unset($docklist[$key]);
- }
- }
- C::t('user_field')->update($_G['uid'], array('docklist' => implode(',', $docklist)));
- } elseif ($pfid == $typefid['desktop']) {
-
- $icos = DB::result_first("select screenlist from " . DB::table('user_field') . " where uid='{$_G[uid]}'");
- $icos = $icos ? explode(',', $icos) : array();
- foreach ($icos as $key => $value) {
- if ($value == $icoid) {
- unset($icos[$key]);
- }
- }
- C::t('user_field')->update($_G['uid'], array('screenlist' => implode(',', $icos)));
- }
-}
-
-function dzz_update_source($type, $oid, $data, $istype = false)
-{
- $idtypearr = array('lid', 'vid', 'mid', 'qid', 'picid', 'did', 'fid');
- $typearr = array('link', 'video', 'music', 'attach', 'image', 'document', 'folder');
- $table = '';
- $idtype = '';
- $pre = 'source_';
- if ($isidtype) {
- if (in_array($type, $idtypearr)) {
- if ($type == 'fid') $pre = '';
- $table = '' . $pre . str_replace($idtypearr, $typearr, $type);
- $idtype = $type;
- }
- } else {
- if ($type == 'folder') $pre = '';
- if (in_array($type, $typearr)) {
- $table = '' . $pre . $type;
- $idtype = str_replace($typearr, $idtypearr, $type);
- }
- }
- if ($table) return C::t($table)->update($oid, $data);
- else return false;
-}
-
-function getAttachUrl($attach, $absolute = false)
-{
- global $_G;
- $attachment = '';
- $bz = io_remote::getBzByRemoteid($attach['remote']);
- if ($bz == 'dzz') {
- if ($absolute) {
- $attachment = $_G['setting']['attachdir'] . './' . $attach['attachment'];
- } else {
- $attachment = $_G['siteurl'] . $_G['setting']['attachurl'] . $attach['attachment'];
- }
- return $attachment;
- } elseif (strpos($bz, 'FTP') === 0) {
- return $_G['siteurl'] . DZZSCRIPT . '?mod=io&op=getStream&path=' . dzzencode($bz . '/' . $attach['attachment']);
- } else {
- return IO::getFileUri($bz . '/' . $attach['attachment']);
- }
-
-}
-
-function getBzByPath($path)
-{
- $bzarr = explode(':', $path);
- $allowbz = C::t('connect')->fetch_all_bz();
- if (strpos($path, 'dzz::') !== false) {
- return '';
- } elseif (strpos($path, 'attach::') !== false) {
- return '';
- } elseif (is_numeric($bzarr[0])) {
- return '';
- } elseif (in_array($bzarr[0], $allowbz)) {
- return $bzarr[0];
- } else {
- return '';
- }
-}
-
-function getDzzPath($attach)
-{
- global $_G;
- $url = '';
- $bz = io_remote::getBzByRemoteid($attach['remote']);
- if ($bz == 'dzz') {
- $url = 'attach::' . $attach['aid'];
- } else {
- $url = $bz . '/' . $attach['attachment'];
- }
- return $url;
-}
-
-function geticonfromext($ext, $type='')
-{
- global $_G;
- $img = 'dzz/images/extimg/' . strtolower($ext) . '.png';
- if (!is_file(DZZ_ROOT . $img)) {
- switch ($type) {
- case 'video':
- $img = 'dzz/images/extimg/video.png';
- break;
- case 'music':
- $img = 'dzz/images/extimg/music.png';
- break;
- case 'document':
- $img = 'dzz/images/extimg/document.png';
- break;
- case 'folder':
- $img = '';
- break;
- case 'link':
- $img = 'dzz/images/extimg/link.png';
- break;
- case 'dzzdoc':
- $img = 'dzz/images/extimg/dzzdoc.png';
- break;
- case 'topic':
- $img = 'dzz/images/extimg/topic.png';
- break;
- default:
- $img = 'dzz/images/extimg/unknow.png';
- }
- }
- return $img;
-}
-
-function getUrlIcon($link)
-{
- global $_G;
- $rarr = array();
- $parse_url = parse_url($link);
- $host = $parse_url['host'];
- $host = preg_replace("/^www./", '', $host);//strstr('.',$host);
- //查询网址特征库
-
- if ($icon = C::t('icon')->fetch_by_link($link)) {
- return array('img' => $_G['setting']['attachurl'] . $icon['pic'], 'did' => $icon['did'], 'ext' => $icon['ext']);
- } else {
-
- require_once dzz_libfile('class/caiji');
- $caiji = new caiji($link);
- $source = $caiji->getFavicon();
- if ($source) {
- $subdir = $subdir1 = $subdir2 = '';
- $subdir1 = date('Ym');
- $subdir2 = date('d');
- $subdir = $subdir1 . '/' . $subdir2 . '/';
- $target = 'icon/' . $subdir . '' . $host . '_' . strtolower(random(8)) . '.png';
- $target_attach = $_G['setting']['attachdir'] . $target;
- $targetpath = dirname($target_attach);
- dmkdir($targetpath);
- ico_png($source, $target_attach, $caiji->getProxy());
- if (is_file($target_attach)) {
- if ($did = C::t("icon")->insert(array('domain' => $host, 'pic' => $target, 'check' => 0, 'dateline' => $_G['timestamp'], 'uid' => $_G['uid'], 'username' => $_G['username'], 'copys' => 0), 1)) {
- return array('img' => $_G['setting']['attachurl'] . $target, 'did' => $did);
- }
- }
- }
- }
- return array('img' => 'dzz/images/default/e.png', 'did' => 0);
-}
-
-function addtoconfig($icoarr, $ticoid = 0)
-{
- global $_G, $space;
- $oposition = 10000;
- $icoid = $icoarr['rid'];
- if ($folder = C::t('folder')->fetch($icoarr['pfid'])) {
- if ($folder['flag'] == 'dock') {
- if ($docklistarr = C::t('user_field')->fetch($_G['uid'])) {
- $docklist = $docklistarr['docklist'] ? explode(',', $docklistarr['docklist']) : array();
- if (in_array($icoid, $docklist)) {//已经存在则先删除
- foreach ($docklist as $key => $id) {
- if (intval($id) < 0 || $id == $icoid) {
- unset($docklist[$key]);
- $oposition = $key;
- }
- }
- }
- if ($ticoid && in_array($ticoid, $docklist)) {
- $temp = array();
- foreach ($docklist as $key => $id) {
- if ($id == $ticoid) {
- if ($oposition > $key) {
- $temp[] = $icoid;
- $temp[] = $id;
- } else {
- $temp[] = $id;
- $temp[] = $icoid;
- }
- } else {
- $temp[] = $id;
- }
- }
- $docklist = $temp;
- } else {
- $docklist[] = $icoid;
- }
- C::t('user_field')->update($_G['uid'], array('docklist' => trim(implode(',', $docklist), ',')));
- }
-
-
- } elseif ($folder['flag'] == 'desktop') {
-
- if ($nav = C::t('user_field')->fetch($_G['uid'])) {
- $icos = $nav['screenlist'] ? explode(',', $nav['screenlist']) : array();
- if (in_array($icoid, $icos)) {//已经存在则先删除
- foreach ($icos as $key => $id) {
- if (intval($id) < 0 || $id == $icoid) {
- unset($icos[$key]);
- $oposition = $key;
- }
- }
- }
- if ($ticoid && in_array($ticoid, $icos)) {
- $temp = array();
- foreach ($icos as $key => $id) {
- if ($id == $ticoid) {
- if ($oposition > $key) {
- $temp[] = $icoid;
- $temp[] = $id;
- } else {
- $temp[] = $id;
- $temp[] = $icoid;
- }
- } else {
- $temp[] = $id;
- }
- }
- $icos = $temp;
- } else {
- $icos[] = $icoid;
- }
- C::t('user_field')->update($_G['uid'], array('screenlist' => implode(',', $icos)));
- }
- }
- if ($icoarr['type'] == 'folder' && $icoarr['flag'] == '') {
- C::t('folder')->update($icoarr['oid'], array('pfid' => $folder['fid'], 'gid' => $folder['gid']));
- }
- }
- return true;
-}
-
-function is_upload_files($source)
-{
- return $source && ($source != 'none') && (is_uploaded_file($source) || is_uploaded_file(str_replace('\\\\', '\\', $source)));
-}
-
-function save_to_local($source, $target)
-{
- $targetpath = dirname($target);
- dmkdir($targetpath);
- if (!is_upload_files($source)) {
- $succeed = false;
- } elseif (@copy($source, $target)) {
- $succeed = true;
- } elseif (function_exists('move_uploaded_file') && @move_uploaded_file($source, $target)) {
- $succeed = true;
- } elseif (@is_readable($source) && (@$fp_s = fopen($source, 'rb')) && (@$fp_t = fopen($target, 'wb'))) {
- while (!feof($fp_s)) {
- $s = @fread($fp_s, 1024 * 512);
- @fwrite($fp_t, $s);
- }
- fclose($fp_s);
- fclose($fp_t);
- $succeed = true;
- }
-
- if ($succeed) {
- @chmod($target, 0644);
- @unlink($source);
- }
- return $succeed;
-}
-
-
-function uploadtolocal($upload, $dir = 'appimg', $target = '', $exts = array('jpg', 'jpeg', 'png', 'gif'))
-{
- global $_G;
- if ($target == 'dzz/images/default/icodefault.png' || $target == 'dzz/images/default/widgetdefault.png' || preg_match("/^(http|ftp|https|mms)\:\/\/(.+?)/i", $target)) {
- $target = '';
- }
- $source = $upload['tmp_name'];
- $ext = strtolower(substr(strrchr($upload['name'], '.'), 1, 10));
- if (!in_array($ext, $exts)) return false;
- if ($target) {
- $target1 = $_G['setting']['attachdir'] . $target;
- } else {
- $subdir = $subdir1 = $subdir2 = '';
- $subdir1 = date('Ym');
- $subdir2 = date('d');
- $subdir = $subdir1 . '/' . $subdir2 . '/';
- $target1 = $_G['setting']['attachdir'] . $dir . '/' . $subdir . '' . date('His') . '' . strtolower(random(16)) . '.' . $ext;
- $target = str_replace($_G['setting']['attachdir'], '', $target1);
- }
-
- if (save_to_local($source, $target1)) {
- return $target;
- } else {
- return false;
- }
-}
-
-function upload_to_icon($upload, $target, $domain='')
-{
- global $_G;
- $source = $upload['tmp_name'];
- if (!$target) {
- $imageext = array('jpg', 'jpeg', 'png', 'gif');
- $ext = strtolower(substr(strrchr($upload['name'], '.'), 1, 10));
- if (!in_array($ext, $imageext)) return false;
- $subdir = $subdir1 = $subdir2 = '';
- $subdir1 = date('Ym');
- $subdir2 = date('d');
- $subdir = $subdir1 . '/' . $subdir2 . '/';
- $target = 'icon/' . $subdir . '' . $domain . '_' . strtolower(random(8)) . '.' . $ext;
- $target_attach = $_G['setting']['attachdir'] . $target;
- } else {
- $target_attach = $_G['setting']['attachdir'] . $target;
- }
- if (save_to_local($source, $target_attach)) {
- return $target;
- } else {
- return false;
- }
-}
-
-function dzz_app_pic_save($FILE, $dir = 'appimg')
-{
- global $_G;
- $imageext = array('jpg', 'jpeg', 'png', 'gif');
- $ext = strtolower(substr(strrchr($FILE['name'], '.'), 1, 10));
- if (!in_array($ext, $imageext)) return '文件格式不允许';
- $subdir = $subdir1 = $subdir2 = '';
- $subdir1 = date('Ym');
- $subdir2 = date('d');
- $subdir = $subdir1 . '/' . $subdir2 . '/';
- $target = $dir . '/' . $subdir;
- $filename = date('His') . '' . strtolower(random(16));
- if (!$attach = io_dzz::UploadSave($FILE)) {
- return '应用图片上传失败';
- }
- $setarr = array(
- 'uid' => $_G['uid'],
- 'username' => $_G['username'],
- 'dateline' => $_G['timestamp'],
- 'aid' => $attach['aid'],
- );
- if ($setarr['picid'] = DB::insert('app_pic', $setarr, 1)) {
- C::t('attachment')->addcopy_by_aid($attach['aid']);
- return $setarr;
- }
- return false;
-}
-
-function get_permsarray()
-{
- $perms = array_merge_recursive(perm_binPerm::getPowerTitle(), perm_binPerm::getPowerArr(),perm_binPerm::getPowerIcos());//获取所有权限
- unset($perms['flag']);
- return $perms;
-}
-
-/**
- * 根据PHP各种类型变量生成唯一标识号
- * @param mixed $mix 变量
- * @return string
- */
-function to_guid_string($mix)
-{
- if (is_object($mix)) {
- return spl_object_hash($mix);
- } elseif (is_resource($mix)) {
- $mix = get_resource_type($mix) . strval($mix);
- } else {
- $mix = serialize($mix);
- }
- return md5($mix);
-}
-
-/**
- * 字符串命名风格转换
- * type 0 将Java风格转换为C的风格 1 将C风格转换为Java的风格
- * @param string $name 字符串
- * @param integer $type 转换类型
- * @return string
- */
-function parse_name($name, $type = 0)
-{
- if ($type) {
- return ucfirst(preg_replace_callback('/_([a-zA-Z])/', function ($match) {
- return strtoupper($match[1]);
- }, $name));
- } else {
- return strtolower(trim(preg_replace("/[A-Z]/", "_\\0", $name), "_"));
- }
-}
-
-//增加函数处理网盘权限判断
-function get_resources_some_setting()
-{
- global $_G;
- $setting = $_G['setting'];
- $data = array(
- 'useronperm' => false,
- 'orgonperm' => false,
- 'grouponperm' => false,
- 'fileVersion' => true,
- 'fileVersionNumber' => 0,
- 'userallowonperm' => array(),
- 'left_topcontent' => true,
- 'allownewgroup'=>false,
- 'allownewcat'=>false,
- 'finallydelete'=>false
- );
- //用户存储开启
- if ($setting['explorer_usermemoryOn'] == 1) {
- $spaceon = isset($setting['explorer_mermoryusersetting']) ? $setting['explorer_mermoryusersetting'] : '';
- if ($spaceon == 'appoint') {//指定用户时
- $usersarr = explode(',', $setting['explorer_memoryorgusers']);
- $uesrs = array();
- foreach ($usersarr as $v) {
- //群组id
- if (preg_match('/^\d+$/', $v)) {
- foreach (C::t('organization_user')->get_all_user_byorgid($v) as $val) {
- $users[] = $val['uid'];
- }
- } elseif ($v == 'other') {
- foreach (C::t('user')->fetch_uid_by_groupid(9) as $val) {
- $users[] = $val['uid'];
- }
- } elseif (preg_match('/^uid_\d+$/', $v)) {
- $users[] = preg_replace('/uid_/', '',$v);
- }
-
- }
- $users = array_unique($users);
- $data['userallowonperm'] = $users;
- if (!in_array($_G['uid'], $data['userallowonperm'])) {
- $data['useronperm'] = true;
- }
-
- } else {//未指定用户时
- $data['useronperm'] = true;
- }
- }else {//未指定用户时
- $data['useronperm'] = true;
- }
-
- if (!isset($setting['fileVersion']) || (isset($setting['fileVersion']) && $setting['fileVersion'] == 1)) {
- $data['fileVersion'] = true;
- } else {
- $data['fileVersion'] = false;
- }
- if (isset($setting['fileVersionNumber']) && $setting['fileVersionNumber']) {
- $data['fileVersionNumber'] = $setting['fileVersionNumber'];
- }
-
- if ((isset($setting['explorer_organizationOn']) && $setting['explorer_organizationOn'] == 1) || !isset($setting['explorer_organizationOn'])) {
- $data['orgonperm'] = true;
- }
-
- if ((isset($setting['explorer_groupOn']) && $setting['explorer_groupOn'] == 1) || !isset($setting['explorer_groupOn'])) {
- $data['grouponperm'] = true;
- }
-
- if (!$data['grouponperm'] && !$data['useronperm'] && !$data['orgonperm']) {
- $data['left_topcontent'] = false;
- }
- if(!isset($setting['explorer_groupcreate'])){
- $data['allownewgroup'] = true;
- }else{
- if ($setting['explorer_groupcreate'] == 1) {
- $groupcreateon = isset($setting['explorer_mermorygroupsetting']) ? $setting['explorer_mermorygroupsetting'] : '';
- if ($groupcreateon == 'appoint') {//指定用户时
- $usersarr = explode(',', $setting['explorer_memorygroupusers']);
- $uesrs = array();
- foreach ($usersarr as $v) {
- //群组id
- if (preg_match('/^\d+$/', $v)) {
- foreach (C::t('organization_user')->get_all_user_byorgid($v) as $val) {
- $users[] = $val['uid'];
- }
- } elseif ($v == 'other') {
- foreach (C::t('user')->fetch_uid_by_groupid(9) as $val) {
- $users[] = $val['uid'];
- }
- } elseif (preg_match('/^uid_\d+$/', $v)) {
- $users[] = preg_replace('/uid_/', '',$v);
- }
-
- }
- $users = array_unique($users);
- $data['userallowgroupcreate'] = $users;
- if (in_array($_G['uid'], $data['userallowgroupcreate'])) {
- $data['allownewgroup'] = true;
- }
-
- } else {//未指定用户时
- $data['allownewgroup'] = true;
- }
- }
- }
- if(!isset($setting['explorer_catcreate'])){
- $data['allownewcat'] = true;
- }else{
- $data['allownewcat'] = ($setting['explorer_catcreate'] == 1) ? true:false;
- }
- if(!isset($setting['explorer_finallydelete']) || $setting['explorer_finallydelete'] < 0){
- $data['finallydelete'] = false;
- }else{
- $data['finallydelete'] = intval($setting['explorer_finallydelete']);
- }
- return $data;
-}
-
-//增加字符串截取函数
-function new_strsubstr($string,$length=1,$dot ='...')
-{
- if(strlen($string) <= $length )
- {
- return $string;
- }
- else
- {
- $i = 0;
- while ($i < $length)
- {
- $stringTMP = substr($string,$i,1);
- if ( ord($stringTMP) >=224 )
- {
- $stringTMP = substr($string,$i,3);
- $i = $i + 3;
- }
- elseif( ord($stringTMP) >=192 )
- {
- $stringTMP = substr($string,$i,2);
- $i = $i + 2;
- }
- else
- {
- $i = $i + 1;
- }
- $stringLast[] = $stringTMP;
- }
- $stringLast = implode("",$stringLast);
- return $stringLast.$dot;
- }
-}
-
-/**
- * 获取需要更新的应用数量
- * @return string
- */
-function get_update_app_num()
-{
- $map = array();
- $map["upgrade_version"] = array("neq", "");
- $map["available"] = array("gt", "0");
- $num = DB::result_first("select COUNT(*) from %t where `available`>0 and upgrade_version!=''",array('app_market'));// C::tp_t('app_market')->where($map)->count("*");
- return $num;
-}
-
-function getimportdata($name = '', $addslashes = 0, $ignoreerror = 0,$data='') {
- global $_G;
-
- if(empty($data)){
- if($_GET['importtype'] == 'file') {
- $data = @implode('', file($_FILES['importfile']['tmp_name']));
- @unlink($_FILES['importfile']['tmp_name']);
- } else {
- if(!empty($_GET['importtxt'])) {
- $data = $_GET['importtxt'];
- } else {
- $data = $GLOBALS['importtxt'];
-
- }
- }
- }
- require_once libfile('class/xml');
-
- $xmldata = xml2array($data);
- $_attributes=xmlattribute($data); //item 属性获取
- if(!is_array($xmldata) || !$xmldata) {
- if(!$ignoreerror) {
- showmessage('data_import_error', dreferer());
- } else {
- return array();
- }
- } else {
- if($name && $name != $xmldata['Title']) {
- if(!$ignoreerror) {
- showmessage('function_admin_error');
- } else {
- return array();
- }
- }
- $data = exportarray($xmldata['Data'], 0);
- }
- if($addslashes) {
- $data = daddslashes($data, 1);
- }
- if($data && $_attributes) $data["_attributes"]=$_attributes["Data"];
- return $data;
-}
-
-function exportarray($array, $method='') {
- $tmp = $array;
- if($method) {
- foreach($array as $k => $v) {
- if(is_array($v)) {
- $tmp[$k] = exportarray($v, 1);
- } else {
- $uv = unserialize($v);
- if($uv && is_array($uv)) {
- $tmp['__'.$k] = exportarray($uv, 1);
- unset($tmp[$k]);
- } else {
- $tmp[$k] = $v;
- }
- }
- }
- } else {
- foreach($array as $k => $v) {
- if(is_array($v)) {
- if(substr($k, 0, 2) == '__') {
- $tmp[substr($k, 2)] = serialize(exportarray($v, 0));
- unset($tmp[$k]);
- } else {
- $tmp[$k] = exportarray($v, 0);
- }
- } else {
- $tmp[$k] = $v;
- }
- }
- }
- return $tmp;
-}
-function set_space_progress($usespace,$totalspace = 0){
- if($usespace == 0 && $totalspace >= 0){
- return 0;
- }elseif($totalspace < 0){
- return -1;
- }elseif($usespace > 0 && $totalspace == 0){
- $k = 10;
- $p = 1;
- $totalspace = 1024;
- $num = floor(log10($usespace));
- if($usespace < 1024){
- $k = 1000;
- }else{
- $p = floor(log($usespace) / log(2) / 10);
- if($num == 6) $k=0.9;
- elseif($num == 7) $k=8;
- elseif($num == 8) $k=50;
- elseif($num == 9) $k=2;
- for($i = 0; $i < $p;$i++){
- $totalspace *= 200;
- }
- }
-
- if($p <= 0) $p =1;
- $percent = round(($usespace/$totalspace)*$p,5)*100/$k;
- if($percent > 100) $percent = 90;
- }else{
- $percent= round(($usespace/$totalspace),2)*100;
- if($percent > 100) $percent = 100;
- }
- return $percent;
-
-}
-
-//ajax返回成功信息数据
-function success($info="",$data=array(),$ajax=true){
- $return= array(
- 'status' => 1,
- 'info' => $info ? $info : "操作成功",
- 'data' =>$data
- );
- if( $ajax ){
- // 返回JSON数据格式到客户端 包含状态信息
- header('Content-Type:application/json; charset=utf-8');
- exit(json_encode($return));
- }else{
- return $return;
- }
-
-}
-
-//ajax返回错误信息数据
-function error($info="",$data=array(),$ajax=true){
- $return= array(
- 'status' => 0,
- 'info' => $info ? $info : "操作失败",
- 'data' =>$data
- );
- if( $ajax ){
- // 返回JSON数据格式到客户端 包含状态信息
- header('Content-Type:application/json; charset=utf-8');
- exit(json_encode($return));
- }else{
- return $return;
- }
-}
-function dzz_userconfig_init()
-{ //初始化用户信息
- global $_G;
- //建立用户设置主表
- $userconfig = array(
- 'uid' => $_G['uid'],
- 'applist' => array(),
- 'screenlist' => array(),
- 'docklist' => array(),
- 'dateline' => $_G['timestamp'],
- 'updatetime' => $_G['timestamp'],
- 'wins' => serialize(array()),
- 'perm' => 0,
- 'iconview' => $_G['setting']['desktop_default']['iconview'] ? $_G['setting']['desktop_default']['iconview'] : 2,
- 'taskbar' => $_G['setting']['desktop_default']['taskbar'] ? $_G['setting']['desktop_default']['taskbar'] : 'bottom',
- 'iconposition' => intval($_G['setting']['desktop_default']['iconposition']),
- 'direction' => intval($_G['setting']['desktop_default']['direction']),
- );
-
-
- //处理理默认应用;
- $apps = C::t('app_market')->fetch_all_by_default($_G['uid']);
-
- foreach ($apps as $appid => $app) {
-
- $userconfig['applist'][] = $appid;
- if ($app['position'] == 1) {
- continue;
- } elseif ($app['position'] == 2) { //桌面
- $fid = DB::result_first("select fid from " . DB::table('folder') . " where uid='{$_G[uid]}' and flag='desktop'");
- } else { //dock条
- $fid = DB::result_first("select fid from " . DB::table('folder') . " where uid='{$_G[uid]}' and flag='dock'");
- }
- if (!$fid) continue;
- if ($rid = DB::result_first("select rid from " . DB::table('resources') . " where uid='{$_G[uid]}' and oid='{$appid}' and type='app'")) {
- C::t('resources')->update_by_rid($rid, array('pfid' => $fid, 'isdelete' => 0));
- if ($app['position'] == 2) $userconfig['screenlist'][] = $rid;
- else $userconfig['docklist'][] = $rid;
- } else {
- $icoarr = array(
- 'uid' => $_G['uid'],
- 'username' => $_G['username'],
- 'oid' => $appid,
- 'name' => '',
- 'type' => 'app',
- 'dateline' => $_G['timestamp'],
- 'pfid' => $fid,
- 'ext' => '',
- 'size' => 0,
- );
- if ($icoarr['rid'] = C::t('resources')->insert_data($icoarr, 1)) {
- if ($app['position'] == 2) $userconfig['screenlist'][] = $icoarr['rid'];
- else $userconfig['docklist'][] = $icoarr['rid'];
- }
- }
-
- }
- $userconfig['applist'] = $userconfig['applist'] ? implode(',', $userconfig['applist']) : '';
- $userconfig['screenlist'] = $userconfig['screenlist'] ? implode(',', $userconfig['screenlist']) : '';
- $userconfig['docklist'] = $userconfig['docklist'] ? implode(',', $userconfig['docklist']) : '';
- C::t('user_field')->insert($userconfig, false, true);
- if ($userconfig['applist']) C::t('app_user')->insert_by_uid($_G['uid'], $userconfig['applist'], 1);
- return C::t('user_field')->fetch($_G['uid']);
-}
-/*判断字符串是否是序列化后的数据*/
-/* @param string $data Value to check to see if was serialized.
- * @param bool $strict Optional. Whether to be strict about the end of the string. Default true.
- * @return bool False if not serialized and true if it was.
- */
- function is_serialized( $data, $strict = true ) {
- // if it isn't a string, it isn't serialized.
- if ( ! is_string( $data ) ) {
- return false;
- }
- $data = trim( $data );
- if ( 'N;' == $data ) {
- return true;
- }
- if ( strlen( $data ) < 4 ) {
- return false;
- }
- if ( ':' !== $data[1] ) {
- return false;
- }
- if ( $strict ) {
- $lastc = substr( $data, -1 );
- if ( ';' !== $lastc && '}' !== $lastc ) {
- return false;
- }
- } else {
- $semicolon = strpos( $data, ';' );
- $brace = strpos( $data, '}' );
- // Either ; or } must exist.
- if ( false === $semicolon && false === $brace )
- return false;
- // But neither must be in the first X characters.
- if ( false !== $semicolon && $semicolon < 3 )
- return false;
- if ( false !== $brace && $brace < 4 )
- return false;
- }
- $token = $data[0];
- switch ( $token ) {
- case 's' :
- if ( $strict ) {
- if ( '"' !== substr( $data, -2, 1 ) ) {
- return false;
- }
- } elseif ( false === strpos( $data, '"' ) ) {
- return false;
- }
- case 'a' :
- case 'O' :
- return (bool) preg_match( "/^{$token}:[0-9]+:/s", $data );
- case 'b' :
- case 'i' :
- case 'd' :
- $end = $strict ? '$' : '';
- return (bool) preg_match( "/^{$token}:[0-9.E-]+;$end/", $data );
- }
- return false;
- }
- /**
- * 短信发送函数
- * @$param $tplsign string 模板标识
- * @$param $to number 短信接收手机号
- * @$param $params array 拓展参数 expire 过期时间 codelength 验证码长度 gateways指定网关
- * @return 如果发送成功则返回 验证码发送时间 验证码 过期时间,如果失败返回错误信息
- * */
- function sms($tplsign,$to,$params=array('expire'=>15,'codelength'=>6)){
- $params['tplsign'] = $tplsign;
- $params['to'] = $to;
- $result = Hook::listen('sms',$params);
- return $result[0];
-
- }
\ No newline at end of file
diff --git a/core/function/function_filesock.php b/core/function/function_filesock.php
deleted file mode 100644
index 6f341c7..0000000
--- a/core/function/function_filesock.php
+++ /dev/null
@@ -1,183 +0,0 @@
- $v) {
- if(isset($files[$k])) {
- $post[$k] = '@'.$files[$k];
- }
- }
- foreach($files as $k => $file) {
- if(!isset($post[$k]) && file_exists($file)) {
- $post[$k] = '@'.$file;
- }
- }
- curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
- }
- }
- if($cookie) {
- curl_setopt($ch, CURLOPT_COOKIE, $cookie);
- }
- curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
- curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
- $data = curl_exec($ch);
- $status = curl_getinfo($ch);
- $errno = curl_errno($ch);
- curl_close($ch);
- if($errno || $status['http_code'] != 200) {
- return;
- } else {
- $GLOBALS['filesockheader'] = substr($data, 0, $status['header_size']);
- $data = substr($data, $status['header_size']);
- return !$limit ? $data : substr($data, 0, $limit);
- }
- }
-
- if($post) {
- if($encodetype == 'URLENCODE') {
- $data = http_build_query($post);
- } else {
- $data = '';
- foreach($post as $k => $v) {
- $data .= "--$boundary\r\n";
- $data .= 'Content-Disposition: form-data; name="'.$k.'"'.(isset($files[$k]) ? '; filename="'.basename($files[$k]).'"; Content-Type: application/octet-stream' : '')."\r\n\r\n";
- $data .= $v."\r\n";
- }
- foreach($files as $k => $file) {
- if(!isset($post[$k]) && file_exists($file)) {
- if($fp = @fopen($file, 'r')) {
- $v = fread($fp, filesize($file));
- fclose($fp);
- $data .= "--$boundary\r\n";
- $data .= 'Content-Disposition: form-data; name="'.$k.'"; filename="'.basename($file).'"; Content-Type: application/octet-stream'."\r\n\r\n";
- $data .= $v."\r\n";
- }
- }
- }
- $data .= "--$boundary\r\n";
- }
- $out = "POST $path HTTP/1.0\r\n";
- $header = "Accept: */*\r\n";
- $header .= "Accept-Language: zh-cn\r\n";
- $header .= $encodetype == 'URLENCODE' ? "Content-Type: application/x-www-form-urlencoded\r\n" : "Content-Type: multipart/form-data; boundary=$boundary\r\n";
- $header .= 'Content-Length: '.strlen($data)."\r\n";
- $header .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";
- $header .= "Host: $host:$port\r\n";
- $header .= "Connection: Close\r\n";
- $header .= "Cache-Control: no-cache\r\n";
- $header .= "Cookie: $cookie\r\n\r\n";
- $out .= $header;
- $out .= $data;
- } else {
- $out = "GET $path HTTP/1.0\r\n";
- $header = "Accept: */*\r\n";
- $header .= "Accept-Language: zh-cn\r\n";
- $header .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";
- $header .= "Host: $host:$port\r\n";
- $header .= "Connection: Close\r\n";
- $header .= "Cookie: $cookie\r\n\r\n";
- $out .= $header;
- }
-
- $fpflag = 0;
- if(!$fp = @fsocketopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout)) {
- $context = array(
- 'http' => array(
- 'method' => $post ? 'POST' : 'GET',
- 'header' => $header,
- 'content' => $post,
- 'timeout' => $timeout,
- ),
- );
- $context = stream_context_create($context);
- $fp = @fopen($scheme.'://'.($ip ? $ip : $host).':'.$port.$path, 'b', false, $context);
- $fpflag = 1;
- }
-
- if(!$fp) {
- return '';
- } else {
- stream_set_blocking($fp, $block);
- stream_set_timeout($fp, $timeout);
- @fwrite($fp, $out);
- $status = stream_get_meta_data($fp);
- if(!$status['timed_out']) {
- while (!feof($fp) && !$fpflag) {
- $header = @fgets($fp);
- $headers .= $header;
- if($header && ($header == "\r\n" || $header == "\n")) {
- break;
- }
- }
- $GLOBALS['filesockheader'] = $headers;
-
- if($position) {
- for($i=0; $i<$position; $i++) {
- $char = fgetc($fp);
- /*if($char == "\n" && $oldchar != "\r") {
- $i++;
- }*/
- $oldchar = $char;
- }
- }
-
- if($limit) {
- $return = stream_get_contents($fp, $limit);
- } else {
- $return = stream_get_contents($fp);
- }
- }
- @fclose($fp);
- return $return;
- }
-}
-
-function _format_postkey($post, &$result, $key = '') {
- foreach($post as $k => $v) {
- $_k = $key ? $key.'['.$k.']' : $k;
- if(is_array($v)) {
- _format_postkey($v, $result, $_k);
- } else {
- $result[$_k] = $v;
- }
- }
-}
-
-
-?>
\ No newline at end of file
diff --git a/core/function/function_mail.php b/core/function/function_mail.php
deleted file mode 100644
index 5747dfa..0000000
--- a/core/function/function_mail.php
+++ /dev/null
@@ -1,306 +0,0 @@
-
-
-
- $subject
-
-
-
-
-
-
- |
-
-
-
-
-
-
-
- | $subject
- $message
-
-
-
-
- -
-
此致
-
- $sitename 团队
-
-
-
- |
- |
-
-
-
-
-
-
-
-
- |
-
- 此为系统邮件,请勿回复
-
- $sitename $_G[siteurl]
-
- $sitecopyright
-
-
- |
- |
-
-
-
-
- |
- |
-
-
-
-
-
- |