196 lines
7.5 KiB
PHP
196 lines
7.5 KiB
PHP
<?php
|
|
/*
|
|
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
|
|
* @license https://www.oaooa.com/licenses/
|
|
*
|
|
* @link https://www.oaooa.com
|
|
* @author zyx(zyx@oaooa.com)
|
|
*/
|
|
if(!defined('IN_OAOOA')) {
|
|
exit('Access Denied');
|
|
}
|
|
|
|
class table_user_profile extends dzz_table
|
|
{
|
|
|
|
public function __construct() {
|
|
|
|
$this->_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']='请选择机构或部门';
|
|
}
|
|
}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']='请选择机构或部门';
|
|
}
|
|
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 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;
|
|
}
|
|
}
|