fetch_by_uid_verifytype($uid, 0)) { $fields = dunserialize($value['field']); foreach($fields as $key => $fvalue) { if($_G['cache']['profilesetting'][$key]['needverify']) { $_G['profile_verifys'][$uid][$key] = $fvalue; } } } } $verifyvalue = NULL; if(isset($_G['profile_verifys'][$uid][$fieldid])) { if($fieldid=='gender') { $verifyvalue = lang('gender_'.intval($_G['profile_verifys'][$uid][$fieldid])); } elseif($fieldid=='birthday') { $verifyvalue = $_G['profile_verifys'][$uid]['birthyear'].'-'.$_G['profile_verifys'][$uid]['birthmonth'].'-'.$_G['profile_verifys'][$uid]['birthday']; }elseif($fieldid=='department'){ if($_G['profile_verifys'][$uid][$fieldid]){ include_once libfile('function/organization'); $orgtree=getPathByOrgid($_G['profile_verifys'][$uid][$fieldid]); $verifyvalue = implode('-',($orgtree)); }else{ $verifyvalue = ''; } }else { $verifyvalue = $_G['profile_verifys'][$uid][$fieldid]; } } } $html = ''; $field['unchangeable'] = !$ignoreunchangable && $field['unchangeable'] ? 1 : 0; if($fieldid == 'birthday') { if($field['unchangeable'] && !empty($space[$fieldid])) { return '

'.$space['birthyear'].'-'.$space['birthmonth'].'-'.$space['birthday'].'

'; } $birthyeayhtml = ''; $nowy = dgmdate($_G['timestamp'], 'Y-m-d'); $html = ''; } elseif($fieldid=='gender') { $space[$fieldid] = isset($space[$fieldid]) ? $space[$fieldid]:''; if($field['unchangeable'] && $space[$fieldid] > 0) { return '

'.lang('gender_'.intval($space[$fieldid])).''; } $selected = array($space[$fieldid]=>' selected="selected"'); $html = ''; } elseif($fieldid=='department') { $space[$fieldid] = !empty($space[$fieldid]) ? $space[$fieldid]:''; if($field['unchangeable'] && $space[$fieldid] > 0) { return '

'.$space['department_tree'].''; } $html=' ' .'

'; } else { if($field['unchangeable'] && $space[$fieldid]!='') { if($field['formtype']=='file') { $imgurl = getglobal('setting/attachurl').$space[$fieldid]; return '

'; } else { return '

'.nl2br($space[$fieldid]).''; } } if($field['formtype']=='textarea') { $html = ""; } elseif($field['formtype']=='select') { $field['choices'] = explode("\n", $field['choices']); $html = "'; } elseif($field['formtype']=='list') { $field['choices'] = explode("\n", $field['choices']); $html = "'; } elseif($field['formtype']=='checkbox') { $field['choices'] = explode("\n", $field['choices']); $space[$fieldid] = explode("\n", $space[$fieldid]); $html.='

'; foreach($field['choices'] as $op) { $html .= '' .""; } $html.='
'; } elseif($field['formtype']=='radio') { $field['choices'] = explode("\n", $field['choices']); $html.='
'; foreach($field['choices'] as $op) { $html .= '' .""; } $html.='
'; } elseif($field['formtype']=='file') { $html = ""; if(!empty($space[$fieldid])) { $url = getglobal('setting/attachurl').$space[$fieldid]; $html .= " 
"; } } else { $html = ""; } } $showerror = !$ignoreshowerror ? "id=\"showerror_$fieldid\"" : ''; if($showstatus) { $html.= ""; if($verifyvalue !== null) { if($field['formtype'] == 'file') { $imgurl = getglobal('setting/attachurl').$verifyvalue; $verifyvalue = "$imgurl"; } $html.= lang('profile_is_verifying')." (".lang('profile_mypost').")" ."

".$verifyvalue."

"; } elseif($field['needverify']) { $html .= lang( 'profile_need_verifying'); }elseif(isset($space[$fieldid]) && $space[$fieldid]=='' && $field['unchangeable']) { $html .= lang('profile_unchangeable'); } $html .= '
'; } return $html; } function profile_check($fieldid, &$value, $space=array()) { global $_G; if(empty($_G['cache']['profilesetting'])) { loadcache('profilesetting'); } $field = $_G['cache']['profilesetting'][$fieldid]; if(empty($field) || !$field['available']) { return false; } if($value=='') { if($field['required']) { return false; } else { return true; } } if($field['unchangeable'] && !empty($space[$fieldid])) { return false; } if(in_array($fieldid, array('birthday', 'birthmonth', 'birthyear', 'gender'))) { $value = intval($value); return true; } if($field['choices']) { $field['choices'] = explode("\n", $field['choices']); } if($field['formtype'] == 'text' || $field['formtype'] == 'textarea') { $value = getstr($value); if($field['size'] && strlen($value) > $field['size']) { return false; } else { $field['validate'] = !empty($field['validate']) ? $field['validate'] : ($_G['profilevalidate'][$fieldid] ? $_G['profilevalidate'][$fieldid] : ''); if($field['validate'] && !preg_match($field['validate'], $value)) { return false; } } } elseif($field['formtype'] == 'checkbox' || $field['formtype'] == 'list') { $arr = array(); foreach ($value as $op) { if(in_array($op, $field['choices'])) { $arr[] = $op; } } $value = implode("\n", $arr); if($field['size'] && count($arr) > $field['size']) { return false; } } elseif($field['formtype'] == 'radio' || $field['formtype'] == 'select') { if(!in_array($value, $field['choices'])){ return false; } } return true; } function profile_show($fieldid, $space=array(), $getalone = false) { global $_G; if(empty($_G['cache']['profilesetting'])) { loadcache('profilesetting'); } $field = $_G['cache']['profilesetting'][$fieldid]; if(empty($field) || !$field['available'] || (!$getalone && in_array($fieldid, array('uid', 'birthmonth', 'birthyear')))) { return false; } if($fieldid=='gender') { return lang('gender_'.intval($space['gender'])); } elseif($fieldid=='birthday' && !$getalone) { $return = $space['birthyear'] ? $space['birthyear'].' '.lang('year').' ' : ''; if($space['birthmonth'] && $space['birthday']) { $return .= $space['birthmonth'].' '.lang('month').' '.$space['birthday'].' '.lang('day'); } return $return; }elseif($fieldid=='department'){ if($space['department']){ include_once libfile('function/organization'); $orgtree=getPathByOrgid($space['department']); return implode('-',($orgtree)); }else{ return lang('not_choose_agencies_departments'); } } else { return nl2br($space[$fieldid]); } } function showdistrict($values, $elems=array(), $container='districtbox', $showlevel=null, $containertype = 'birth') { $html = ''; if(!preg_match("/^[A-Za-z0-9_]+$/", $container)) { return $html; } $showlevel = !empty($showlevel) ? intval($showlevel) : count($values); $showlevel = $showlevel <= 4 ? $showlevel : 4; $upids = array(0); for($i=0;$i<$showlevel;$i++) { if(!empty($values[$i])) { $upids[] = intval($values[$i]); } else { for($j=$i; $j<$showlevel; $j++) { $values[$j] = ''; } break; } } $options = array(1=>array(), 2=>array(), 3=>array(), 4=>array()); if($upids && is_array($upids)) { foreach(C::t('district')->fetch_all_by_upid($upids, 'displayorder', 'ASC') as $value) { if($value['level'] == 1 && ($value['id'] != $values[0] && ($value['usetype'] == 0 || !(($containertype == 'birth' && in_array($value['usetype'], array(1, 3))) || ($containertype != 'birth' && in_array($value['usetype'], array(2, 3))))))) { continue; } $options[$value['level']][] = array($value['id'], $value['name']); } } $names = array('province', 'city', 'district', 'community'); for($i=0; $i<4;$i++) { if(!empty($elems[$i])) { $elems[$i] = dhtmlspecialchars(preg_replace("/[^\[A-Za-z0-9_\]]/", '', $elems[$i])); } else { $elems[$i] = ($containertype == 'birth' ? 'birth' : 'reside').$names[$i]; } } for($i=0;$i<$showlevel;$i++) { $level = $i+1; if(!empty($options[$level])) { $jscall = "showdistrict('$container', ['$elems[0]', '$elems[1]', '$elems[2]', '$elems[3]'], $showlevel, $level, '$containertype')"; $html .= ''; $html .= '  '; } } return $html; } function countprofileprogress($uid = 0) { global $_G; $uid = intval(!$uid ? $_G['uid'] : $uid); $fields=array(); if(empty($_G['cache']['profilesetting'])) { require_once libfile('function/cache'); updatecache('profilesetting'); loadcache('profilesetting'); } foreach($_G['cache']['profilesetting'] as $key => $value){ if($value['available']>0) $fields[]=$key; } $complete = 0; $profile = C::t('user_profile')->fetch($uid); foreach($fields as $key) { if($profile[$key] != '') { $complete++; } } $progress = floor($complete / count($fields) * 100); if(DB::result_first("select COUNT(*) from %t where uid=%d",array('user_status',$uid))){ C::t('user_status')->update($uid, array('profileprogress' => $progress > 100 ? 100 : $progress), 'UNBUFFERED'); }else{ C::t('user_status')->insert(array('uid'=>$uid,'regip'=>$_G['clientip'],'lastip'=>$_G['clientip'],'lastvisit'=>TIMESTAMP,'lastactivity'=>TIMESTAMP,'profileprogress' => $progress > 100 ? 100 : $progress,)); } return $progress; } function get_constellation($birthmonth,$birthday) { $birthmonth = intval($birthmonth); $birthday = intval($birthday); $idx = $birthmonth; if ($birthday <= 22) { if (1 == $birthmonth) { $idx = 12; } else { $idx = $birthmonth - 1; } } return $idx > 0 && $idx <= 12 ? lang('constellation_'.$idx) : ''; } function get_zodiac($birthyear) { $birthyear = intval($birthyear); $idx = (($birthyear - 1900) % 12) + 1; return $idx > 0 && $idx <= 12 ? lang('zodiac_'. $idx) : ''; } function profile_privacy_check($uid,$privacy){ global $_G; $privacy=intval($privacy); if(!$_G['uid']) return false; //游客不允许查看 if($_G['uid']==$uid) $_G[$var]=true;//自己允许查看 $var='privacy_'.$uid.'_'.$_G['uid'].'_'.$privacy; if(isset($_G[$var])) return $_G[$var]; switch($privacy){ case '-1': //隐私 $_G[$var]=false; break; case '0': //公开 $_G[$var]=true; break; case '1': //本部门,不包括下级部门 include_once libfile('function/organization'); $orgids=$vorgids=array(); //查看资料用户所在的部门 $vorgids=C::t('organization_user')->fetch_orgids_by_uid($_G['uid']); //资料用户所在的部门 $orgids=C::t('organization_user')->fetch_orgids_by_uid($uid); if((!$vorgids && !$orgids) || array_intersect($orgids,$vorgids)) return ($_G[$var]=true); $_G[$var]=false; break; case 2: //本机构 include_once libfile('function/organization'); $orgids=$vorgids=array(); //查看资料用户所在的部门 $vorgids=C::t('organization_user')->fetch_orgids_by_uid($_G['uid']); //资料用户所在的部门 $orgids=C::t('organization_user')->fetch_orgids_by_uid($uid); if(!$vorgids && !$orgids) return ($_G[$var]=true); //都未加入部门,视为同机构 //获取查看资料用户所属的机构数组 $vtops=array(); foreach($vorgids as $orgid){ $vtops[]=C::t('organization')->getTopOrgid($orgid); } //获取资料用户所属的机构数组 $tops=array(); foreach($orgids as $orgid){ $tops[]=C::t('organization')->getTopOrgid($orgid); } if(array_intersect($vtops,$tops)) $_G[$var]=true; break; } return $_G[$var]; }