<?php
if(!defined('IN_DZZ')) {
exit('Access Denied');
}
function checkAtPerm($gid) global $_G;
$range=$at_range=$_G['setting']['at_range'][$_G['groupid']];
if($range==3) return true;
}elseif($range==2) $orgids=C::t('organization_user')->fetch_orgids_by_uid($_G['uid']);
foreach($orgids as $orgid){
$toporgids= C::t('organization')->fetch_parent_by_orgid($orgid);
if(in_array($gid,$toporgids)) return true;
}
return false;
}elseif($range==1) $orgids=C::t('organization_user')->fetch_orgids_by_uid($_G['uid']);
if(in_array($gid,$orgids)) return true;
return false;
}
return false;
}function getPathByOrgid($orgid,$path=array()){
return C::t('organization')->getPathByOrgid($orgid,false);
}function getDepartmentOption($orgid,$url='',$all=false,$i=0,$pname=array()){
$html='';
if( $i<1){
if($all){
$html.='<li role="presentation">';
$html.='<a href="'.($url?($url.'&depid=0'):'javascript:;').'" tabindex="-1" role="menuitem" _orgid="0" '.(!$url?'onclick="selDepart(this)"':'').'>';
$html.='<div class="child-org">';
for($j=0;$j<$i-1;$j++){
$html.='<span class="child-tree tree-su"> </span>';
}
$html.=lang('all');
$html.='</div>';
$html.='</a></li>';
}
if($org=C::t('organization')->fetch($orgid)){
$pname[$i]=$org['orgname'];
$html.='<li role="presentation">';
$html.='<a href="'.($url?($url.'&depid='.$org['orgid']):'javascript:;').'" tabindex="-1" role="menuitem" _orgid="'.$org['orgid'].'" '.(!$url?'onclick="selDepart(this)"':'').' data-orgname='.implode('-',$pname).'>';
$html.='<div class="child-org">';
for($j=0;$j<$i-1;$j++){
$html.='<span class="child-tree tree-su"> </span>';
}
$html.=$org['orgname'];
$html.='</div>';
$html.='</a></li>';
}
}
$i++;
$count=C::t('organization')->fetch_all_by_forgid($orgid,true,0);
if($count){
$k=1;
foreach(C::t('organization')->fetch_all_by_forgid($orgid) as $key=> $value){
$pname[$i]=$value['orgname'];
$html.='<li role="presentation">';
$html.='<a href="'.($url?($url.'&depid='.$value['orgid']):'javascript:;').'" tabindex="-1" role="menuitem" _orgid="'.$value['orgid'].'" '.(!$url?'onclick="selDepart(this)"':'').' data-orgname='.implode('-',$pname).'>';
$html.='<div class="child-org">';
for($j=0;$j<$i-1;$j++){
$html.='<span class="child-tree tree-su"> </span>';
}
$html.='<span class="child-tree '.($k<$count?'tree-heng':'tree-heng1').'"> </span>'.$value['orgname'];
$html.='</div>';
$html.='</a></li>';
$html.=getDepartmentOption($value['orgid'],$url,false,$i,$pname);
$k++;
}
</tbody>';
}
return $html;
}function getDepartmentOption_admin($orgid,$url='',$all=false,$i=0,$tree=array()){
global $_G;
$html='';
if($i<1 && ($org=C::t('organization')->fetch($orgid)) && $org['forgid']<1){
$tree[]=$org['orgname'];
if(!$all){
$ismoderator=C::t('organization_admin')->ismoderator_by_uid_orgid($org['orgid'],$_G['uid']);
}else{
$ismoderator=1;
}
if($ismoderator){
$html.='<li role="presentation">';
}else{
$html.='<li role="presentation" class="disabled">';
}
$html.='<a href="'.($url?($url.'&depid='.$org['orgid']):'javascript:;').'" tabindex="-1" role="menuitem" _orgid="'.$org['orgid'].'" '.(!$url?($ismoderator?'onclick="selDepart(this)"':''):'').' data-text="'.implode(' - ',$tree).'">'.$org['orgname'].'</a>';
$html+'</li>';
}
$i++;
$count=C::t('organization')->fetch_all_by_forgid($orgid,true);
if($count){
$k=1;
$value=array();
foreach(C::t('organization')->fetch_all_by_forgid($orgid) as $key=> $value){
if(!$all){
$ismoderator=C::t('organization_admin')->ismoderator_by_uid_orgid($value['orgid'],$_G['uid']);
}else{
$ismoderator=1;
}
if($ismoderator){
$html.='<li role="presentation">';
}else{
$html.='<li role="presentation" class="disabled">';
}
$html.='<a href="'.($url?($url.'&depid='.$value['orgid']):'javascript:;').'" tabindex="-1" role="menuitem" _orgid="'.$value['orgid'].'" '.(!$url?($ismoderator?'onclick="selDepart(this)"':''):'').' data-text="'.($tree?(implode(' - ',$tree).' - '):'').$value['orgname'].'">';
$html.='<div class="child-org">';
for($j=0;$j<$i-1;$j++){
$html.='<span class="child-tree tree-su"> </span>';
}
$html.='<span class="child-tree '.($k<$count?'tree-heng':'tree-heng1').'"> </span>'.$value['orgname'];
$html.='</div>';
$html.='</a></li>';
$html.=getDepartmentOption_admin($value['orgid'],$url,$all,$i,array_merge($tree,array($value['orgname'])));
$k++;
}
</tbody>';
}
return $html;
}function getDepartmentJStree($orgid=0,$notin=array()){
static $uids=array();
$html='';
foreach(C::t('organization')->fetch_all_by_forgid($orgid) as $key=> $value){
$html.='<li data-jstree=\'{"type":"org","icon":"dzz/system/images/organization.png"}\'>'.$value['orgname'];
$html.='<ul>';
if(C::t('organization')->fetch_all_by_forgid($value['orgid'],true)){
$re=getDepartmentJStree($value['orgid'],$notin,$html);
$html.= $re['html'];
}
$users=getUserByOrgid($value['orgid'],0,$notin);
foreach($users as $value1){
$uids[]=$value1['uid'];
$html.='<li uid="'.$value1['uid'].'" data-jstree=\'{"type":"user","icon":"dzz/system/images/user.png"}\'>'.$value1['username'].'</li>';
}
$html.='</ul>';
$html.=' </li>';
}
return array('html'=>$html,'uids'=>$uids);
}function getDepartmentByUid($uid,$getManage=0){
$data=array();
$orgids=C::t('organization_user')->fetch_orgids_by_uid($uid);
if($getManage && $orgids_m=C::t('organization_admin')->fetch_orgids_by_uid($uid)){
$orgids=array_merge($orgids,$orgids_m);
}
foreach($orgids as $orgid){
if($tree=getTreeByOrgid($orgid)){
$data[$orgid]=$tree;
}
}
return $data;
}
function getOrgByUid($uid,$getManage=0){
$orglist=array();
$arr=getDepartmentByUid($uid,$getManage);
foreach($arr as $key => $value){
$orglist[$value[0]['orgid']]=$value[0];
}
foreach($arr as $key => $value){
if(count($value)>1){
$orglist[$value[0]['orgid']]['sublist'][$value[count($value)-1]['orgid']]=$value[count($value)-1];
}
}
return $orglist;
}function getDepartmentByAppid($appid){
$data=array();
$orgids=C::t('app_organization')->fetch_orgids_by_appid($appid);
foreach($orgids as $orgid){
if($tree=getTreeByOrgid($orgid)){
$data[$orgid]=$tree;
}
}
return $data;
}
function getTreeByOrgid($orgid){
$orgarr= C::t('organization')->fetch_parent_by_orgid($orgid,false);
return $orgarr;
}function getUserByOrgid($orgids,$dep=0,$notin=array(),$onlyuid=false){
$orgids=(array)$orgids;
if(!$orgids){ return array();}
$ids=array();
foreach($orgids as $orgid){
if($dep){
$ids=array_merge($ids,getOrgidTree($orgid));
}else{
$ids[]=$orgid;
}
}
$uids=C::t('organization_user')->fetch_uids_by_orgid($ids);
if($notin){
$arr=array();
foreach($uids as $uid){
if(!in_array($uid ,$notin)) $arr[]=$uid;
}
$uids=$arr;
unset($arr);
}
if($onlyuid) return $uids;
return DB::fetch_all("select uid,username from %t where uid IN (%n) ",array('user',$uids));
}
function getOrgidByUid($uid,$sub=true) $ret=array();
$orgids=C::t('organization_user')->fetch_orgids_by_uid($uid);
if($sub){
foreach($orgids as $orgid){
$ret=array_merge($ret,getOrgidTree($orgid));
}
}else{
$ret=$orgids;
}
return array_unique($ret);
}function getOrgidTree($orgid){
$oids=array();
if($org=C::t('organization')->fetch($orgid)){
foreach(DB::fetch_all("select orgid from %t where pathkey REGEXP %s order by disp",array('organization','^'.$org['pathkey'])) as $value){
$oids[]=$value['orgid'];
}
$oids=array_diff($oids,array($orgid));
array_unshift($oids,$orgid);
}
return $oids;
}function getUpOrgidTree($orgid,$onlyid=true,$pids=array()){
global $_G;
if($org=C::t('organization')->fetch($orgid)){
if($onlyid){
array_unshift($pids,$orgid);
}else{
$pids[$orgid]=$org;
}
$pids=getUpOrgidTree($org['forgid'],$onlyid,$pids);
}
return ($pids);
}