/** * 获取用户及空间信息 * @return array */ public function getProfile() { $data = array(); $data['id'] = $this->user['id']; $data['display_name'] = $this->user['nick']; $data['user_name'] = $this->user['user_name']; $data['avatar'] = $this->user['avatar']; $data['nick'] = $this->user['nick']; $data['email'] = $this->user['email']; $data['space'] = $this->user['space']; $data['usedSpace'] = $this->user['usedSpace']; $data['used_space'] = $this->user['usedSpace']; $data['email'] = $this->user['email']; $data['phone'] = $this->user['phone']; //这里的信息比较冗余,把站点的逻辑融入到用户信息获得的地方,是为了不让PC客户端发送多次请求 //打印用户是否是管理员 $info = array("success" => $this->user["is_admin"]); $data['is_admin'] = $info; //输出服务器时间 $info = array("time" => time()); $data['time'] = $info; //获得站点信息 $app = new SiteService(); $data['app_info'] = $app->info(); //是否系统只有默认账号 $data['only_default_account'] = $app->onlyDefaultAccount(); //获得授权码信息 $code = MiniOption::getInstance()->getOptionValue("code"); if (empty($code)) { $code = ""; } $data['code'] = $code; return $data; }
/** * * Enter 添加用户设备 * @param int $user_id 用户id * @param string $device_uuid 设备唯一值 * @param string $device_type 设备类型 * @param string $device_info 设备信息 * @param string $name 设备名称 * @return mixed $value 返回true/false */ public function addUserDevices($user_id, $device_uuid, $device_type, $device_info, $device_name) { $key = "user_device_delete_record"; $db_manager = MDbManager::getInstance(); $value = MiniOption::getInstance()->getOptionValue($key); $id = ""; if (isset($value)) { $ids = explode(",", $value); if (count($ids) > 0) { $id = $ids[0]; unset($ids[0]); $newValue = implode(",", $ids); MiniOption::getInstance()->setOptionValue($key, $newValue); } } if ($id == "") { $created_at = $updated_at = date("Y-m-d H:i:s", time()); $sql = "INSERT INTO " . DB_PREFIX . "_user_devices(user_id, user_device_type, user_device_name, user_device_info, user_device_uuid, created_at, updated_at)" . " VALUES ({$user_id}, {$device_type}, \"{$device_name}\", \"{$device_info}\", \"{$device_uuid}\", \"{$created_at}\", \"{$updated_at}\")"; } else { $created_at = $updated_at = date("Y-m-d H:i:s", time()); $sql = "INSERT INTO " . DB_PREFIX . "_user_devices(id,user_id, user_device_type, user_device_name, user_device_info, user_device_uuid, created_at, updated_at)" . " VALUES ({$id},{$user_id}, {$device_type}, \"{$device_name}\", \"{$device_info}\", \"{$device_uuid}\", \"{$created_at}\", \"{$updated_at}\")"; } try { $db_manager->insertDb($sql); } catch (Exception $e) { return false; } return true; }
/** *获得插件信息 * @param $plugins 插件列表 * { "miniDoc":{} * } * @return array */ function setPluginInfo($plugins) { if (empty($plugins)) { $plugins = array(); } //读取商业主题设置参数 $key = "plugin_" . "businessTheme"; $defaultParams = PluginBusinessThemeOption::getDefaultParams(); $pluginData = unserialize(MiniOption::getInstance()->getOptionValue($key)); if (empty($pluginData)) { $pluginData = $defaultParams; } if (empty($pluginData['logo'])) { $pluginData['logo'] = $defaultParams['logo']; } if (empty($pluginData['carouselImagesUrl'])) { $pluginData['carouselImagesUrl'] = $defaultParams['carouselImagesUrl']; } if (empty($pluginData['companyEnglishName'])) { $pluginData['companyEnglishName'] = $defaultParams['companyEnglishName']; } if (empty($pluginData['helpName'])) { $pluginData['helpName'] = $defaultParams['helpName']; } if (empty($pluginData['helpUrl'])) { $pluginData['helpUrl'] = $defaultParams['helpUrl']; } array_push($plugins, array("name" => "businessTheme", "data" => $pluginData)); return $plugins; }
/** * 设置迷你云默认地址,迷你文档服务器下载文件内容需要获得这个地址 */ private function setDefault() { //判断是否在网页启动数据库生成,在command模式下无法获得$_SERVER的值 if (array_key_exists("SERVER_PORT", $_SERVER)) { $host = MiniHttp::getMiniHost(); MiniOption::getInstance()->setOptionValue("miniyun_host", $host); } }
/** * 获得迷你云服务器地址 * 如果用户在options表中定义了{miniyun_host:xxxx},优选它 * 否则默认为http://127.0.0.1 */ public function getMiniyunHost() { $value = MiniOption::getInstance()->getOptionValue("miniyun_host"); if (empty($value)) { $value = "http://127.0.0.1/"; } return $value; }
/** * * 获取下载限制的文件个数 * @since 1.0.0 */ public function getLimitSize() { $limit_size = DownloadPackageConst::DEFAULT_LIMIT_SIZE; $size = MiniOption::getInstance()->getOptionValue("download_package_limit_size"); if (isset($size)) { $limit_size = $size; } return $limit_size; }
/** *获取AD信息 */ public function getAdInfo() { $adInfo = array(); $adInfo['ad_ldap_host'] = MiniOption::getInstance()->getOptionValue('ad_ldap_host'); $adInfo['ad_ldap_port'] = MiniOption::getInstance()->getOptionValue('ad_ldap_port'); $adInfo['ad_ldap_base_cn'] = MiniOption::getInstance()->getOptionValue('ad_ldap_base_cn'); $adInfo['ad_white_list_open'] = MiniOption::getInstance()->getOptionValue('ad_white_list_open'); $adInfo['ad_sync_department'] = MiniOption::getInstance()->getOptionValue('ad_sync_department'); $adInfo['ad_coding'] = MiniOption::getInstance()->getOptionValue('ad_coding'); return $adInfo; }
/** *获取LDAP信息 */ public function getLdapInfo() { $ldapInfo = array(); $ldapInfo['ldap_host'] = MiniOption::getInstance()->getOptionValue('ldap_host'); $ldapInfo['ldap_port'] = MiniOption::getInstance()->getOptionValue('ldap_port'); $ldapInfo['ldap_base_cn'] = MiniOption::getInstance()->getOptionValue('ldap_base_cn'); $ldapInfo['ldap_primary_key'] = MiniOption::getInstance()->getOptionValue('ldap_primary_key'); $ldapInfo['ldap_nick'] = MiniOption::getInstance()->getOptionValue('ldap_nick'); $ldapInfo['ldap_department_name'] = MiniOption::getInstance()->getOptionValue('ldap_department_name'); $ldapInfo['ldap_white_list_open'] = MiniOption::getInstance()->getOptionValue('ldap_white_list_open'); $ldapInfo['ldap_sync_department'] = MiniOption::getInstance()->getOptionValue('ldap_sync_department'); $ldapInfo['ldap_coding'] = MiniOption::getInstance()->getOptionValue('ldap_coding'); return $ldapInfo; }
/** * (non-PHPdoc) * @see IUserSourceInterface::getUser() * 获取用户信息 * @since 1.0.0 */ public function getUser($userInfo) { $userName = $userInfo['userName']; $password = $userInfo['password']; //扩展信息 $host_str = 'ad_ldap_host'; $port_str = 'ad_ldap_port'; $baseCn_str = 'ad_ldap_base_cn'; $coding_str = 'ad_coding'; $department_str = 'ad_sync_department'; $syncDepartment = MiniOption::getInstance()->getOptionValue($department_str); $ldapHost = MiniOption::getInstance()->getOptionValue($host_str); if ($ldapHost === NULL) { $this->errorCode = self::LDAP_INIT_ERROR; return false; } $ldapPort = MiniOption::getInstance()->getOptionValue($port_str); if ($ldapPort === NULL) { $this->errorCode = self::LDAP_INIT_ERROR; return false; } $ldapBaseCn = MiniOption::getInstance()->getOptionValue($baseCn_str); if ($ldapBaseCn === NULL) { $this->errorCode = self::LDAP_INIT_ERROR; return false; } $ldapCoding = MiniOption::getInstance()->getOptionValue($coding_str); if ($ldapCoding === NULL) { $ldapCoding = "GB2312"; } if (empty($ldapHost) || empty($ldapPort) || empty($ldapBaseCn)) { $this->errorCode = self::LDAP_INIT_ERROR; return false; } //链接AD服务器 $ad = new AD(); $ad->setHost($ldapHost); $ad->setFilter($ldapBaseCn); $ad->setCoding($ldapCoding); $ad->setPort($ldapPort); $ad->setSyncDepartment($syncDepartment); $result = $ad->getMember($userName, $password); if (!$result) { $this->errorCode = MConst::ERROR_PASSWORD_INVALID; // 用户名不存在 return false; } return $result; }
/** * 控制器执行主逻辑函数 * @param $uri 地址 * @return mixed $value 返回最终需要执行完的结果 */ public function invoke($uri = null) { $user = MUserManager::getInstance()->getCurrentUser(); $device = MUserManager::getInstance()->getCurrentDevice(); $data = array(); $data['user_name'] = $user["user_name"]; $data['display_name'] = $user["nick"]; $data['id'] = $user["id"]; $data['uid'] = $user["user_uuid"]; $data['space'] = (double) $user["space"]; $data['used_space'] = (double) $user["usedSpace"]; $data['email'] = $user["email"]; $data['phone'] = $user["phone"]; $data['avatar'] = $user["avatar"]; $data['mult_user'] = false; $data['site_id'] = MiniSiteUtils::getSiteID(); $data["device_id"] = $device["id"]; $value = MiniOption::getInstance()->getOptionValue('site_company'); if (isset($value)) { $license['company'] = $value; } else { $license['company'] = ""; } $license['licensestr'] = ""; //免费版本 $license['is_vip'] = false; // 目前针对iis服务器,使客户端禁用put协议 if (isset($_SERVER['SERVER_SOFTWARE']) && strpos(strtolower($_SERVER['SERVER_SOFTWARE']), 'iis') !== false) { $data['disable_put'] = true; } // 32M $blockSize = 4 * 1024 * 1024; // 内存配置需要 $mem_limit = CUtils::return_bytes(ini_get('memory_limit')); if ($mem_limit < 4 * $blockSize) { $blockSize = $mem_limit / 4; } $postMaxSize = CUtils::return_bytes(ini_get('post_max_size')); $uploadMaxFileSize = CUtils::return_bytes(ini_get('upload_max_filesize')); $min = $postMaxSize > $uploadMaxFileSize ? $uploadMaxFileSize : $postMaxSize; $data['block_size'] = $min > $blockSize ? $blockSize : $min; if ($data['block_size'] == $postMaxSize && $data['block_size'] == $uploadMaxFileSize) { $data['block_size'] = $data['block_size'] - 104858; } echo json_encode($data); }
/** * 创建用户 * @param $name * @param $password * @param $email * @throws Exception * @return array */ public static function createUser($name, $password, $email) { //判断系统是否可以注册 $enableReg = MiniOption::getInstance()->getOptionValue("user_register_enabled"); if (isset($enableReg) && $enableReg == "0") { throw new MiniException(1000); } $isExtend = apply_filters("license_user_extend"); if ($isExtend === 1) { throw new MiniException(1003); } $data = array(); //参数完整性检测 if (empty($name) || strlen($name) > 255) { throw new MiniException(1000); } if (empty($password)) { throw new MiniException(1001); } if (!empty($email)) { //TODO check email rule } //唯一性检测 $user = MiniUser::getInstance()->getUserByName($name); if (!empty($user)) { throw new MiniException(1002); } //创建用户 $userData = array(); $userData['name'] = $name; $userData['password'] = $password; if (!empty($email)) { $extend = array(); $extend["email"] = $email; $userData["extend"] = $extend; } $user = MiniUser::getInstance()->create($userData); if (empty($user)) { return $data; } return $data; }
/** * 获得当前用户 * @return array|null */ public function getUser() { if (isset($this->user)) { return $this->user; } $user = MUserManager::getInstance()->getCurrentUser(); if (!empty($user)) { $user = MiniUser::getInstance()->getUser($user["id"]); $data = array(); $data['user_uuid'] = $user["user_uuid"]; $data['user_name'] = $user["user_name"]; $data['display_name'] = $user["nick"]; $data['space'] = (double) $user["space"]; $data['used_space'] = (double) $user["usedSpace"]; $data['email'] = $user["email"]; $data['phone'] = $user["phone"]; $data['avatar'] = $user["avatar"]; $data['is_admin'] = $user["is_admin"]; $data['code'] = MiniOption::getInstance()->getOptionValue("code"); $this->user = $data; return $data; } return NULL; }
/** * 系统空间是否还有剩余 */ public static function hasOverSysSpace() { $value = MiniOption::getInstance()->getOptionValue("site_sys_space"); if (isset($value) && $value > 0) { $usedSpace = MiniVersion::getInstance()->getTotalSize(); $overSpace = $value * 1024 * 1024 - $usedSpace; if ($overSpace < 0) { return false; } } return true; }
/** * extend */ public function getExtendTactics() { $editors = MiniOption::getInstance()->getOptionValue('online_editor'); $editors = unserialize($editors); return $editors; }
/** * * 获得微信信息加密的Token * @since 1.0.7 */ public static function getWxToken() { $wxToken = MiniOption::getInstance()->getOptionValue("wx_token"); if ($wxToken === NULL) { $wxToken = md5(MiniUtil::random(32)); MiniOption::getInstance()->setOptionValue("wx_token", $wxToken); } return $wxToken; }
/** *商业般主题插件获得参数 * */ public function getParams() { $key = "plugin_" . "businessTheme"; $value = MiniOption::getInstance()->getOptionValue($key); $defaultParams = PluginBusinessThemeOption::getDefaultParams(); if (!empty($value)) { $pluginData = unserialize($value); } else { $pluginData = $defaultParams; } if (empty($pluginData['logo'])) { $pluginData['logo'] = $defaultParams['logo']; } if (empty($pluginData['carouselImagesUrl'])) { $pluginData['carouselImagesUrl'] = $defaultParams['carouselImagesUrl']; } if (empty($pluginData['companyEnglishName'])) { $pluginData['companyEnglishName'] = $defaultParams['companyEnglishName']; } if (empty($pluginData['helpName'])) { $pluginData['helpName'] = $defaultParams['helpName']; } if (empty($pluginData['helpUrl'])) { $pluginData['helpUrl'] = $defaultParams['helpUrl']; } return $pluginData; }
/** * 根据用户名+密码查询账号是否在AD服务器中 * @param string $userName * @param string $password * @return array|bool */ function getMember($userName, $password) { $adWhiteListOpen = MiniOption::getInstance()->getOptionValue('ad_white_list_open'); if ($adWhiteListOpen == 'true') { $user = MiniUser::getInstance()->getUserByName($userName); if (empty($user)) { $this->code = -2; return false; } } $ldapUsrDom = "@" . $this->getHost(); $userName = str_replace($ldapUsrDom, "", $userName); $ldapConn = @ldap_connect($this->host, $this->port); if (!$ldapConn) { $this->code = -1; #服务器无法连接 return false; } @ldap_set_option($ldapConn, LDAP_OPT_PROTOCOL_VERSION, 3); @ldap_set_option($ldapConn, LDAP_OPT_REFERRALS, 0); $loginResult = @ldap_bind($ldapConn, iconv('utf-8', $this->coding, $userName . $ldapUsrDom), $password); //验证账号与密码 if (!$loginResult) { $this->code = -2; #测试帐号与密码错误 return false; } $dn = $this->filter; $attrItems = array("ou", "sn", "mail", "telephonenumber", "displayname", "department"); $query = "(&(userprincipalname=" . iconv('utf-8', $this->coding, $userName . $ldapUsrDom) . "))"; //验证账号是否在过滤条件中 $results = @ldap_search($ldapConn, $dn, $query, $attrItems); $entries = @ldap_get_entries($ldapConn, $results); if ($entries['count'] == 0) { $this->code = -2; #测试帐号与密码错误 return false; } $output = array(); $extend = array(); $extend["nick"] = $userName; $output["user_name"] = $userName; if ($entries['count'] != 0) { $entries = @ldap_get_entries($ldapConn, $results); array_shift($entries); if (count($entries) > 0) { //获得更加详细的信息 $entry = $entries[0]; $phoneInfo = $this->getValue("telephonenumber", $entry); //获得电话号码 if ($phoneInfo != null) { $extend["phone"] = $phoneInfo; } $displayNameInfo = $this->getValue("displayname", $entry); //获得昵称与全名 if ($displayNameInfo != null) { $extend["nick"] = $displayNameInfo; } else { $extend["nick"] = $userName; } $mailInfo = $this->getValue("mail", $entry); //获得电子邮件 if ($mailInfo != null) { $extend["email"] = $mailInfo; } if ($this->syncDepartment != 'false') { $department = $this->getValue("dn", $entry); //获得昵称与全名 if ($department != null) { $departmentInfo = $this->getDevelopment($department); if (!empty($departmentInfo)) { $output['departmentData'][0][] = $departmentInfo; $output['departmentData'][0][] = $userName; } } } } } $output["extend"] = $extend; ldap_close($ldapConn); return $output; }
/** * * 获取默认总空间大小 */ public static function defaultTotalSize() { $total = DEFAULT_USER_SPACE * 1024 * 1024; $value = MiniOption::getInstance()->getOptionValue("site_default_space"); if (isset($value)) { $total = doubleval($value) * 1024 * 1024; } return $total; }
/** * 获得被删除的ID,如果没有删除的记录,则返回空值 */ public function getTemporaryId() { $key = MiniUser::$OPTION_KEY; $value = MiniOption::getInstance()->getOptionValue($key); $id = ""; if (isset($value) && !empty($value)) { $ids = explode(",", $value); if (count($ids) > 0) { $id = $ids[0]; unset($ids[0]); //把新值保存到db中 MiniOption::getInstance()->setOptionValue($key, implode(",", $ids)); } } return $id; }
/** * * 设置参数 * */ private function renewOptions($params) { //用户基础地址 $baseUri = CUtils::getBaseUrl(); $options = MiniOption::getInstance()->getOptions(); foreach ($options as $key => $option) { $key = $option["option_name"]; $value = $option["option_value"]; if ("site_name" == $key) { $params["siteName"] = $value; $params["name"] = $value; } else { if ("skin" == $key) { $params["skinUrl"] = $baseUri . "/static/skin/" . $value . "/"; $params["skin"] = $value; } else { if ("site_title" == $key) { $params["siteTitle"] = $value; $params["title"] = $value; } else { if ("site_logo_url" == $key) { $params["logo"] = $value; $params["siteLogo"] = $value; } else { if ("site_logo_small_url" == $key) { $params["logoSmall"] = $value; $params["siteLogoSmall"] = $value; } else { if ("site_default_space" == $key) { $params["defaultSpace"] = $value; } else { if ("site_sys_space" == $key) { $params["sysSpace"] = $value; } else { if ("site_company" == $key) { $params["company"] = $value; } else { if ("user_register_enabled" == $key) { $params["enabledReigster"] = $value == "1" ? true : false; } else { if ("user_create_url" == $key && !empty($value)) { $params["registerUrl"] = $value; } else { if ("user_getpwd_url" == $key && !empty($value)) { $params["getpwUrl"] = $value; } else { if ("mail_enabled_email" == $key) { $params["enableMail"] = $value; } else { if ("mid" == $key) { $params["mid"] = $value; } else { if ("default_permission" == $key) { $params["permission"] = unserialize($value); } } } } } } } } } } } } } } } return $params; }
/** * 修改editor */ public function updateEditor($selectExtend, $extend, $firstMethod, $secondMethod, $editorTip) { $data = array(); $data['extend'] = $extend; $data['first_method'] = $firstMethod; if ($secondMethod != '') { $data['second_method'] = $secondMethod; } if ($editorTip != '') { $data['editor_tip'] = $editorTip; } $editors = MiniOption::getInstance()->getOptionValue('online_editor'); $editors = unserialize($editors); if (strpos($extend, '/')) { $extends = explode('/', $extend); foreach ($editors as $key => $editor) { if ($editor['extend'] == $selectExtend) { $i = $key; $data['enabled'] = $editor['enabled']; continue; } $extendStr = $editor['extend']; if (strpos($extendStr, "/")) { $extendArr = explode('/', $extendStr); $dataFix = array_intersect($extendArr, $extends); if (count($dataFix) != 0) { return false; } } else { foreach ($extends as $extend) { if ($extend == $extendStr) { return false; } } } } } else { foreach ($editors as $key => $editor) { if ($editor['extend'] == $selectExtend) { $i = $key; $data['enabled'] = $editor['enabled']; continue; } $extendStr = $editor['extend']; if (strpos($extendStr, "/")) { $extendArr = explode('/', $extendStr); for ($j = 0; $j <= count($extendArr) - 1; $j++) { if ($extendArr[$j] == $extend) { return false; } } } else { if ($extendStr == $extend) { return false; } } } } $items = array(); $items[] = $data; array_splice($editors, $i, 1, $items); MiniOption::getInstance()->setOptionValue('online_editor', serialize($editors)); return true; }
public function getCodeByUserId() { $data = MiniOption::getInstance()->getOptionValue("code"); return $data; }
public function mateCodeData($meatArr) { return MiniOption::getInstance()->setOptionValue("code", $meatArr); }
/** * * 此后都是用MiniOption::getInstance()->getOptionValue替代 * 现在之所以存在是因为很多Module采用这样的接口模式 * @param string $key * @deprecated */ public function getOptionValue($key) { return MiniOption::getInstance()->getOptionValue($key); }
/** * 获得被删除的ID,如果没有删除的记录,则返回空值 */ public function getTemporaryId() { $key = MiniUserDevice::$OPTION_KEY; $value = MiniOption::getInstance()->getOptionValue($key); $id = ""; if (isset($value)) { $ids = explode(",", $value); if (count($ids) > 0) { $id = $ids[0]; unset($ids[0]); $newValue = implode(",", $ids); MiniOption::getInstance()->setOptionValue($key, $newValue); } } return $id; }
/** * 同步所有域帐号 */ public function actionSyncUsers() { $ldapInfo = array(); $userSource = apply_filters('third_user_source', false); if ($userSource == false) { echo 'LDAP插件未启用'; exit; } $ldapInfo['ldap_host'] = MiniOption::getInstance()->getOptionValue('ldap_host'); $ldapInfo['ldap_port'] = MiniOption::getInstance()->getOptionValue('ldap_port'); $ldapInfo['ldap_base_cn'] = MiniOption::getInstance()->getOptionValue('ldap_base_cn'); $ldapInfo['ldap_primary_key'] = MiniOption::getInstance()->getOptionValue('ldap_primary_key'); $ldapInfo['ldap_nick'] = MiniOption::getInstance()->getOptionValue('ldap_nick'); $ldapInfo['department_alias'] = MiniOption::getInstance()->getOptionValue('ldap_department_name'); $ldapInfo['ldap_test_user_name'] = MiniOption::getInstance()->getOptionValue('ldap_test_user_name'); $ldapInfo['ldap_test_password'] = MiniOption::getInstance()->getOptionValue('ldap_test_password'); $ldapInfo['ldap_sync_department'] = MiniOption::getInstance()->getOptionValue('ldap_sync_department'); foreach ($ldapInfo as $info) { if (empty($info)) { echo 'LDAP插件未设置!'; exit; } } $ldapUsrDom = "@" . $this->getLdapHost($ldapInfo['ldap_base_cn']); $ldapConn = @ldap_connect($ldapInfo['ldap_host'], $ldapInfo['ldap_port']); @ldap_set_option($ldapConn, LDAP_OPT_PROTOCOL_VERSION, 3); @ldap_set_option($ldapConn, LDAP_OPT_REFERRALS, 0); // @ldap_bind($ldapConn,iconv('utf-8', $ldapInfo['ldap_coding'],$ldapInfo['ldap_test_user_name'].$ldapUsrDom),$ldapInfo['ldap_test_password']); //验证账号与密码 @ldap_bind($ldapConn); $attrItems = array("ou", "dn", "mail", "telephoneNumber", $ldapInfo['ldap_nick'], "useraccountcontrol", $ldapInfo['department_alias']); $results = @ldap_search($ldapConn, $ldapInfo['ldap_base_cn'], "(|(sn=*)(givenname=*))", $attrItems); $entries = @ldap_get_entries($ldapConn, $results); $results2 = @ldap_search($ldapConn, $ldapInfo['ldap_base_cn'], "(ou=*)", $attrItems); $entries2 = @ldap_get_entries($ldapConn, $results2); foreach ($entries as $key => $entry) { $userData = array(); $extend = array(); if (!empty($entry['dn'])) { $userData['user_status'] = 1; $dn = $entry['dn']; $cn = explode(',', $dn)[0]; $department = $this->getDepartment($dn); $userName = explode('=', $cn)[1]; $userData['nick'] = $userName; $userData['name'] = $userName; if (!empty($entry['telephonenumber'])) { $extend['phone'] = $entry['telephonenumber'][0]; } if (!empty($entry[$ldapInfo['ldap_nick']])) { $extend['nick'] = $entry[$ldapInfo['ldap_nick']][0]; } if (!empty($entry['mail'])) { $extend['email'] = $entry['mail'][0]; } if (!empty($entry['dn'])) { $extend['dn'] = $entry['dn']; } if (!empty($extend)) { $userData['extend'] = $extend; } } if (!empty($userData)) { MiniUser::getInstance()->create($userData); echo '已导入:' . $userData['name'] . "\n"; if ($key + 1 == $entries['count']) { echo '共导入' . $entries['count'] . "位用户\n"; } if ($ldapInfo['ldap_sync_department'] != 'false' && !empty($department)) { $this->importDepartment($userName, $department, $entries2, $ldapInfo['department_alias']); } } } }
/** * 同步所有域帐号 */ public function actionSyncUsers() { $adInfo = array(); $userSource = apply_filters('third_user_source', false); if ($userSource == false) { echo 'AD插件未启用'; exit; } $adInfo['ad_ldap_host'] = MiniOption::getInstance()->getOptionValue('ad_ldap_host'); $adInfo['ad_ldap_port'] = MiniOption::getInstance()->getOptionValue('ad_ldap_port'); $adInfo['ad_ldap_base_cn'] = MiniOption::getInstance()->getOptionValue('ad_ldap_base_cn'); $adInfo['ad_test_user_name'] = MiniOption::getInstance()->getOptionValue('ad_test_user_name'); $adInfo['ad_test_password'] = MiniOption::getInstance()->getOptionValue('ad_test_password'); $adInfo['ad_sync_department'] = MiniOption::getInstance()->getOptionValue('ad_sync_department'); foreach ($adInfo as $info) { if (empty($info)) { echo 'AD插件未设置!'; exit; } } $ldapUsrDom = "@" . $this->getAdHost($adInfo['ad_ldap_base_cn']); $ldapConn = @ldap_connect($adInfo['ad_ldap_host'], $adInfo['ad_ldap_port']); @ldap_set_option($ldapConn, LDAP_OPT_PROTOCOL_VERSION, 3); @ldap_set_option($ldapConn, LDAP_OPT_REFERRALS, 0); @ldap_bind($ldapConn, iconv('utf-8', $adInfo['ad_coding'], $adInfo['ad_test_user_name'] . $ldapUsrDom), $adInfo['ad_test_password']); //验证账号与密码 $attrItems = array("ou", "dn", "mail", "telephonenumber", "displayname", "useraccountcontrol"); $results = @ldap_search($ldapConn, $adInfo['ad_ldap_base_cn'], "(|(sn=*)(givenname=*))", $attrItems); $entries = @ldap_get_entries($ldapConn, $results); foreach ($entries as $entry) { $userData = array(); $extend = array(); if (!empty($entry['dn'])) { $userStatusNum = $entry['useraccountcontrol'][0]; if ($userStatusNum == '66050') { $userData['user_status'] = 0; } else { $userData['user_status'] = 1; } $dn = $entry['dn']; $cn = explode(',', $dn)[0]; $department = $this->getDepartment($dn); $userName = explode('=', $cn)[1]; $userData['nick'] = $userName; $userData['name'] = $userName; if (!empty($entry['telephonenumber'])) { $extend['phone'] = $entry['telephonenumber'][0]; } if (!empty($entry['displayname'])) { $extend['nick'] = $entry['displayname'][0]; } if (!empty($entry['mail'])) { $extend['email'] = $entry['mail'][0]; } if (!empty($extend)) { $userData['extend'] = $extend; } } if (!empty($userData)) { MiniUser::getInstance()->create($userData); if ($adInfo['ad_sync_department'] != 'false' && !empty($department)) { $this->importDepartment($userName, $department); } } } }
/** * 停用插件 * @param $id * @return array */ public function disablePlugin($id) { $data = array(); $value = MiniOption::getInstance()->getOptionValue("active_plugins"); if ($value === NULL) { $data["success"] = false; return $data; } $list = (array) unserialize($value); //卸载插件 unset($list[$id]); //将剩下的插件写入到db中 MiniOption::getInstance()->setOptionValue("active_plugins", serialize($list)); $data["success"] = true; return $data; }