array( 'contain_type' => array(ACCOUNT_TYPE_OFFCIAL_NORMAL, ACCOUNT_TYPE_OFFCIAL_AUTH), 'icon' => 'wi wi-wx-circle', 'createurl' => url('account/post-step'), 'title' => '公众号', ), WXAPP_TYPE_SIGN => array( 'contain_type' => array(ACCOUNT_TYPE_APP_NORMAL, ACCOUNT_TYPE_APP_AUTH), 'icon' => 'wi wi-wxapp', 'createurl' => url('wxapp/post/design_method'), 'title' => '微信小程序', ), WEBAPP_TYPE_SIGN => array( 'contain_type' => array(ACCOUNT_TYPE_WEBAPP_NORMAL), 'icon' => 'wi wi-pc-circle', 'createurl' => url('account/create', array('sign' => 'webapp')), 'title' => 'PC', ), PHONEAPP_TYPE_SIGN => array( 'contain_type' => array(ACCOUNT_TYPE_PHONEAPP_NORMAL), 'icon' => 'wi wi-app', 'createurl' => url('account/create', array('sign' => 'phoneapp')), 'title' => 'APP', ), XZAPP_TYPE_SIGN => array( 'contain_type' => array(ACCOUNT_TYPE_XZAPP_NORMAL, ACCOUNT_TYPE_XZAPP_AUTH), 'icon' => 'wi wi-xzapp', 'createurl' => url('xzapp/post-step'), 'title' => '熊掌号', ), ALIAPP_TYPE_SIGN => array( 'contain_type' => array(ACCOUNT_TYPE_ALIAPP_NORMAL), 'icon' => 'wi wi-aliapp', 'createurl' => url('account/create', array('sign' => 'aliapp')), 'title' => '支付宝小程序', ), BAIDUAPP_TYPE_SIGN => array( 'contain_type' => array(ACCOUNT_TYPE_BAIDUAPP_NORMAL), 'icon' => 'wi wi-baiduapp', 'createurl' => url('account/create', array('sign' => 'baiduapp')), 'title' => '百度小程序', ), TOUTIAOAPP_TYPE_SIGN => array( 'contain_type' => array(ACCOUNT_TYPE_TOUTIAOAPP_NORMAL), 'icon' => 'wi wi-toutiaoapp', 'createurl' => url('account/create', array('sign' => 'toutiaoapp')), 'title' => '头条小程序', ), ); if (!empty($type_sign)) { return !empty($all_account_type_sign[$type_sign]) ? $all_account_type_sign[$type_sign] : array(); } return $all_account_type_sign; } function uni_account_type($type = 0) { $all_account_type = array( ACCOUNT_TYPE_OFFCIAL_NORMAL => array( 'title' => '公众号', 'type_sign' => ACCOUNT_TYPE_SIGN, 'table_name' => 'account_wechats', 'module_support_name' => MODULE_SUPPORT_ACCOUNT_NAME, 'module_support_value' => MODULE_SUPPORT_ACCOUNT, ), ACCOUNT_TYPE_OFFCIAL_AUTH => array( 'title' => '公众号', 'type_sign' => ACCOUNT_TYPE_SIGN, 'table_name' => 'account_wechats', 'module_support_name' => MODULE_SUPPORT_ACCOUNT_NAME, 'module_support_value' => MODULE_SUPPORT_ACCOUNT, ), ACCOUNT_TYPE_APP_NORMAL => array( 'title' => '微信小程序', 'type_sign' => WXAPP_TYPE_SIGN, 'table_name' => 'account_wxapp', 'support_version' => 1, 'version_tablename' => 'wxapp_versions', 'module_support_name' => MODULE_SUPPORT_WXAPP_NAME, 'module_support_value' => MODULE_SUPPORT_WXAPP, ), ACCOUNT_TYPE_APP_AUTH => array( 'title' => '微信小程序', 'type_sign' => WXAPP_TYPE_SIGN, 'table_name' => 'account_wxapp', 'support_version' => 1, 'version_tablename' => 'wxapp_versions', 'module_support_name' => MODULE_SUPPORT_WXAPP_NAME, 'module_support_value' => MODULE_SUPPORT_WXAPP, ), ACCOUNT_TYPE_WEBAPP_NORMAL => array( 'title' => 'PC', 'type_sign' => WEBAPP_TYPE_SIGN, 'table_name' => 'account_webapp', 'module_support_name' => MODULE_SUPPORT_WEBAPP_NAME, 'module_support_value' => MODULE_SUPPORT_WEBAPP, ), ACCOUNT_TYPE_PHONEAPP_NORMAL => array( 'title' => 'APP', 'type_sign' => PHONEAPP_TYPE_SIGN, 'table_name' => 'account_phoneapp', 'support_version' => 1, 'version_tablename' => 'wxapp_versions', 'module_support_name' => MODULE_SUPPORT_PHONEAPP_NAME, 'module_support_value' => MODULE_SUPPORT_PHONEAPP, ), ACCOUNT_TYPE_XZAPP_NORMAL => array( 'title' => '熊掌号', 'type_sign' => XZAPP_TYPE_SIGN, 'table_name' => 'account_xzapp', 'module_support_name' => MODULE_SUPPORT_XZAPP_NAME, 'module_support_value' => MODULE_SUPPORT_XZAPP, ), ACCOUNT_TYPE_XZAPP_AUTH => array( 'title' => '熊掌号', 'type_sign' => XZAPP_TYPE_SIGN, 'table_name' => 'account_xzapp', 'module_support_name' => MODULE_SUPPORT_XZAPP_NAME, 'module_support_value' => MODULE_SUPPORT_XZAPP, ), ACCOUNT_TYPE_ALIAPP_NORMAL => array( 'title' => '支付宝小程序', 'type_sign' => ALIAPP_TYPE_SIGN, 'table_name' => 'account_aliapp', 'support_version' => 1, 'version_tablename' => 'wxapp_versions', 'module_support_name' => MODULE_SUPPORT_ALIAPP_NAME, 'module_support_value' => MODULE_SUPPORT_ALIAPP, ), ACCOUNT_TYPE_BAIDUAPP_NORMAL => array( 'title' => '百度小程序', 'type_sign' => BAIDUAPP_TYPE_SIGN, 'table_name' => 'account_baiduapp', 'support_version' => 1, 'version_tablename' => 'wxapp_versions', 'module_support_name' => MODULE_SUPPORT_BAIDUAPP_NAME, 'module_support_value' => MODULE_SUPPORT_BAIDUAPP, ), ACCOUNT_TYPE_TOUTIAOAPP_NORMAL => array( 'title' => '头条小程序', 'type_sign' => TOUTIAOAPP_TYPE_SIGN, 'table_name' => 'account_toutiaoapp', 'support_version' => 1, 'version_tablename' => 'wxapp_versions', 'module_support_name' => MODULE_SUPPORT_TOUTIAOAPP_NAME, 'module_support_value' => MODULE_SUPPORT_TOUTIAOAPP, ), ); if (!empty($type)) { return !empty($all_account_type[$type]) ? $all_account_type[$type] : array(); } return $all_account_type; } function uni_account_extra_info($uniacid) { $uniacid = max(0, intval($uniacid)); if (empty($uniacid)) { return array(); } $account = pdo_get('account', array('uniacid' => $uniacid)); if (empty($account) || empty($account['type'])) { return array(); } $account_extra = uni_account_type($account['type']); return $account_extra; } /** * 获取当前用户可操作的所有公众号 * @param int $uid 指定操作用户 * @return array */ function uni_owned($uid = 0, $is_uni_fetch = true, $type = 'app') { global $_W; $uid = intval($uid) > 0 ? intval($uid) : $_W['uid']; $uniaccounts = array(); $user_accounts = uni_user_accounts($uid, $type); if (empty($user_accounts)) { return $uniaccounts; } if (!empty($user_accounts) && !empty($is_uni_fetch)) { foreach ($user_accounts as &$row) { $row = uni_fetch($row['uniacid']); } } return $user_accounts; } /** * 获取用户可操作的所有公众号 * @param int $uid 要查找的用户 * @return array() */ function uni_user_accounts($uid = 0, $type = 'app') { global $_W; $uid = intval($uid) > 0 ? intval($uid) : $_W['uid']; if (!in_array($type, array('app', 'wxapp', 'webapp', 'phoneapp', 'xzapp', 'aliapp', 'baiduapp', 'toutiaoapp'))) { $type = 'app'; } $type = $type == 'app' ? 'wechats' : $type; $cachekey = cache_system_key('user_accounts', array('type' => $type, 'uid' => $uid)); $cache = cache_load($cachekey); if (!empty($cache)) { return $cache; } $select_fields = 'w.acid, w.uniacid, w.name, a.type'; if (in_array($type, array('wechats', 'wxapp', 'xzapp'))) { $select_fields .= ', w.level, w.key, w.secret, w.token'; } $where = ''; $params = array(); if (!user_is_founder($uid, true)) { $select_fields .= ', u.role'; $where .= " LEFT JOIN " . tablename('uni_account_users') . " u ON u.uniacid = w.uniacid WHERE u.uid = :uid AND u.role IN(:role1, :role2) "; $params[':uid'] = $uid; $params[':role1'] = ACCOUNT_MANAGE_NAME_OWNER; $params[':role2'] = ACCOUNT_MANAGE_NAME_VICE_FOUNDER; } $where .= !empty($where) ? " AND a.isdeleted <> 1 AND u.role IS NOT NULL" : " WHERE a.isdeleted <> 1"; $sql = "SELECT " . $select_fields . " FROM " . tablename('account_' . $type) . " w LEFT JOIN " . tablename('account') . " a ON a.acid = w.acid AND a.uniacid = w.uniacid" . $where; $result = pdo_fetchall($sql, $params, 'uniacid'); cache_write($cachekey, $result); return $result; } /** * 获取某一公众号的主管理员信息 * @param int $uniacid 指定的公众号 * @return array */ function account_owner($uniacid = 0) { global $_W; load()->model('user'); $uniacid = intval($uniacid); if (empty($uniacid)) { return array(); } $ownerid = pdo_getcolumn('uni_account_users', array('uniacid' => $uniacid, 'role' => 'owner'), 'uid'); if (empty($ownerid)) { $ownerid = pdo_getcolumn('uni_account_users', array('uniacid' => $uniacid, 'role' => 'vice_founder'), 'uid'); if (empty($ownerid)) { $founders = explode(',', $_W['config']['setting']['founder']); $ownerid = $founders[0]; } } $owner = user_single($ownerid); if (empty($owner)) { return array(); } return $owner; } /** * 获取当前公号的所有子公众号 * @param int $uniacid 公众号ID * @return array 当前公号下所有子公众号 */ function uni_accounts($uniacid = 0) { global $_W; $uniacid = empty($uniacid) ? $_W['uniacid'] : intval($uniacid); $account_info = pdo_get('account', array('uniacid' => $uniacid)); if (!empty($account_info)) { $account_tablename = uni_account_type($account_info['type']); $account_tablename = $account_tablename['table_name']; $accounts = pdo_fetchall("SELECT w.*, a.type, a.isconnect FROM " . tablename('account') . " a INNER JOIN " . tablename($account_tablename) . " w USING(acid) WHERE a.uniacid = :uniacid AND a.isdeleted <> 1 ORDER BY a.acid ASC", array(':uniacid' => $uniacid), 'acid'); } return !empty($accounts) ? $accounts : array(); } /** * 获取指定统一公号下默认子号的的信息 * @param int $uniacid 公众号ID * @return array 当前公众号信息 */ function uni_fetch($uniacid = 0) { global $_W; $uniacid = empty($uniacid) ? $_W['uniacid'] : intval($uniacid); $account_api = WeAccount::createByUniacid($uniacid); if (is_error($account_api)) { return $account_api; } $account_api->__toArray(); return $account_api; } /** * 获取指定公号在站内商城购买的模块 * @param int $uniacid 公众号id * @return array 模块列表 */ function uni_site_store_buy_goods($uniacid, $type = STORE_TYPE_MODULE) { $cachekey = cache_system_key('site_store_buy', array('type' => $type, 'uniacid' => $uniacid)); $site_store_buy_goods = cache_load($cachekey); if (!empty($site_store_buy_goods)) { return $site_store_buy_goods; } $store_table = table('store'); if ($type != STORE_TYPE_API) { $store_table->searchWithEndtime(); $site_store_buy_goods = $store_table->searchAccountBuyGoods($uniacid, $type); $site_store_buy_goods = array_keys($site_store_buy_goods); } else { $site_store_buy_goods = $store_table->searchAccountBuyGoods($uniacid, $type); $setting = uni_setting_load('statistics', $uniacid); $use_number = isset($setting['statistics']['use']) ? intval($setting['statistics']['use']) : 0; $site_store_buy_goods = $site_store_buy_goods - $use_number; } cache_write($cachekey, $site_store_buy_goods); return $site_store_buy_goods; } /** * 获取指定公号下所有安装模块及模块信息 * 公众号的权限是owner所有套餐内的全部模块权限 * @param int $uniacid 公众号id * @param boolean $enabled 是否只显示可用模块 * @return array 模块列表 */ function uni_modules_by_uniacid($uniacid) { global $_W; load()->model('user'); load()->model('module'); load()->model('store'); $account_info = uni_fetch($uniacid); $founders = explode(',', $_W['config']['setting']['founder']); $owner_uid = pdo_getall('uni_account_users', array('uniacid' => $uniacid, 'role' => array('owner', 'vice_founder')), array('uid', 'role'), 'role'); $owner_uid = !empty($owner_uid['owner']) ? $owner_uid['owner']['uid'] : (!empty($owner_uid['vice_founder']) ? $owner_uid['vice_founder']['uid'] : 0); $cachekey = cache_system_key('unimodules', array('uniacid' => $uniacid)); $modules = cache_load($cachekey); if (empty($modules)) { $enabled_modules = table('modules')->getNonRecycleModules(); if (!empty($owner_uid) && !in_array($owner_uid, $founders)) { $group_modules = table('account')->accountGroupModules($uniacid); $goods_type = 0; $all_type_info = store_goods_type_info(); foreach ($all_type_info as $info) { if ($info['sign'] == $account_info['type_sign']) { $goods_type = $info['type']; break; } } if ($goods_type) { $site_store_buy_goods = uni_site_store_buy_goods($uniacid, $goods_type); if (!empty($site_store_buy_goods)) { foreach ($site_store_buy_goods as $store_goods_module_name) { $store_goods_info = pdo_get('site_store_goods', array('module' => $store_goods_module_name)); if ($store_goods_info['is_wish'] == 1) { $enabled_modules[$store_goods_module_name] = pdo_get('modules_cloud', array('name' => $store_goods_module_name)); } } $group_modules = array_merge($group_modules, $site_store_buy_goods); } } $user_modules = user_modules($owner_uid); if (!empty($user_modules)) { $group_modules = array_unique(array_merge($group_modules, array_keys($user_modules))); $group_modules = array_intersect(array_keys($enabled_modules), $group_modules); } } else { $group_modules = array_keys($enabled_modules); } cache_write($cachekey, $group_modules); $modules = $group_modules; } $modules = array_merge($modules, module_system()); $module_list = array(); if (!empty($modules)) { foreach ($modules as $name) { if (empty($name)) { continue; } $module_info = module_fetch($name); if (empty($module_info)) { $module_cloud_info = pdo_get('modules_cloud', array('name' => $name)); $store_goods_info = pdo_get('site_store_goods', array('module' => $name)); if (!empty($module_cloud_info) && $store_goods_info['is_wish'] == 1) { $module_info = $module_cloud_info; } } if (!empty($module_info['recycle_info'])) { foreach (module_support_type() as $support => $value) { if ($module_info['recycle_info'][$support] > 0 && $module_info[$support] == $value['support']) { $module_info[$support] = $value['not_support']; } } } if ($module_info[MODULE_SUPPORT_ACCOUNT_NAME] != MODULE_SUPPORT_ACCOUNT && in_array($account_info['type'], array(ACCOUNT_TYPE_OFFCIAL_NORMAL, ACCOUNT_TYPE_OFFCIAL_AUTH))) { continue; } if ($module_info[MODULE_SUPPORT_WEBAPP_NAME] != MODULE_SUPPORT_WEBAPP && in_array($account_info['type'], array(ACCOUNT_TYPE_WEBAPP_NORMAL))) { continue; } if ($module_info[MODULE_SUPPORT_PHONEAPP_NAME] != MODULE_SUPPORT_PHONEAPP && in_array($account_info['type'], array(ACCOUNT_TYPE_PHONEAPP_NORMAL))) { continue; } if ($module_info[MODULE_SUPPORT_XZAPP_NAME] != MODULE_SUPPORT_XZAPP && in_array($account_info['type'], array(ACCOUNT_TYPE_XZAPP_NORMAL, ACCOUNT_TYPE_XZAPP_AUTH))) { continue; } if ($module_info[MODULE_SUPPORT_ALIAPP_NAME] != MODULE_SUPPORT_ALIAPP && in_array($account_info['type'], array(ACCOUNT_TYPE_ALIAPP_NORMAL))) { continue; } if ($module_info[MODULE_SUPPORT_WXAPP_NAME] != MODULE_SUPPORT_WXAPP && $module_info[MODULE_SUPPORT_ACCOUNT_NAME] != MODULE_SUPPORT_ACCOUNT && in_array($account_info['type'], array(ACCOUNT_TYPE_APP_NORMAL, ACCOUNT_TYPE_APP_AUTH))) { continue; } if ($module_info[MODULE_SUPPORT_SYSTEMWELCOME_NAME] == MODULE_SUPPORT_SYSTEMWELCOME && $module_info[MODULE_SUPPORT_ACCOUNT_NAME] != MODULE_SUPPORT_ACCOUNT && $module_info[MODULE_SUPPORT_WEBAPP_NAME] != MODULE_SUPPORT_WEBAPP && $module_info[MODULE_SUPPORT_PHONEAPP_NAME] != MODULE_SUPPORT_PHONEAPP && $module_info[MODULE_SUPPORT_ALIAPP_NAME] != MODULE_SUPPORT_ALIAPP && $module_info[MODULE_SUPPORT_WXAPP_NAME] != MODULE_SUPPORT_WXAPP) { continue; } if (!empty($module_info)) { $module_list[$name] = $module_info; } } } $module_list['core'] = array('title' => '系统事件处理模块', 'name' => 'core', 'issystem' => 1, 'enabled' => 1, 'isdisplay' => 0); return $module_list; } /** * 获取当前公号下所有安装模块及模块信息 * @param boolean $enabled 是否只显示可用模块 * @return array 模块列表 */ function uni_modules() { global $_W; return uni_modules_by_uniacid($_W['uniacid']); } function uni_modules_app_binding() { global $_W; $cachekey = cache_system_key('unimodules_binding', array('uniacid' => $_W['uniacid'])); $cache = cache_load($cachekey); if (!empty($cache)) { return $cache; } load()->model('module'); $result = array(); $modules = uni_modules(); if(!empty($modules)) { foreach($modules as $module) { if($module['type'] == 'system') { continue; } $entries = module_app_entries($module['name'], array('home', 'profile', 'shortcut', 'function', 'cover')); if(empty($entries)) { continue; } if($module['type'] == '') { $module['type'] = 'other'; } $result[$module['name']] = array( 'name' => $module['name'], 'type' => $module['type'], 'title' => $module['title'], 'entries' => array( 'cover' => $entries['cover'], 'home' => $entries['home'], 'profile' => $entries['profile'], 'shortcut' => $entries['shortcut'], 'function' => $entries['function'] ) ); unset($module); } } cache_write($cachekey, $result); return $result; } function uni_groups($groupids = array(), $show_all = false) { load()->model('module'); global $_W; $cache_key_id = 0; if (!empty($groupids)) { foreach ($groupids as $groupid_key => $groupid_val) { $groupid_val = intval($groupid_val); $groupids[$groupid_key] = $groupid_val; $cache_key_id .= $groupid_val; } } $cachekey = cache_system_key('uni_groups', array('groupids' => $cache_key_id)); $list = cache_load($cachekey); if (empty($list)) { $condition = ' WHERE uniacid = 0 AND uid = 0'; if (!empty($groupids)) { foreach ($groupids as $groupid_key => $groupid_val) { $groupids[$groupid_key] = intval($groupid_val); } $groupids_string = implode(',', $groupids); $condition .= ' AND id IN (' . $groupids_string . ')'; } $list = pdo_fetchall("SELECT * FROM " . tablename('uni_group') . $condition . " ORDER BY id DESC", array(), 'id'); if (!empty($groupids)) { if (in_array('-1', $groupids)) { $list[-1] = array('id' => -1, 'name' => '所有服务', 'modules' => array('title' => '系统所有模块'), 'templates' => array('title' => '系统所有模板')); } if (in_array('0', $groupids)) { $list[0] = array('id' => 0, 'name' => '基础服务', 'modules' => array('title' => '系统模块'), 'templates' => array('title' => '系统模板')); } } if (!empty($list)) { foreach ($list as $k => &$row) { $modules = (array)iunserializer($row['modules']); $row['modules_all'] = array(); if (!empty($modules)) { foreach ($modules as $type => $modulenames) { $type = $type == 'modules' ? 'account' : $type; if (empty($modulenames) || !is_array($modulenames)) { continue; } $row['modules_all'] = array_merge($row['modules_all'], $modulenames); $row[$type] = empty($row[$type]) ? $modulenames : array_merge($row[$type], $modulenames); } $row['modules_all'] = array_unique($row['modules_all']); } if (!empty($row['templates'])) { $row['templates'] = (array)iunserializer($row['templates']); if (!empty($row['templates'])) { $row['templates'] = pdo_getall('site_templates', array('id' => $row['templates']), array('id', 'name', 'title'), 'name'); } } } } cache_write($cachekey, $list); } $group_list = array(); if (empty($list)) { return $group_list; } $module_support_type = module_support_type(); $module_support_type_sign = array_keys(uni_account_type_sign()); $modules_info = array(); foreach ($list as &$item) { if (empty($item['modules_all'])) { continue; } $modules_all = $item['modules_all']; $item['modules_all'] = array(); foreach ($modules_all as $key => $name) { if (empty($modules_info[$name]) || !is_array($modules_info[$name])) { $modules_info[$name] = module_fetch($name); } $moduleinfo = $modules_info[$name]; if (empty($moduleinfo)) { continue; } foreach ($module_support_type as $support => $info) { if ($moduleinfo[$support] == $info['support'] && in_array($name, (array)$item[$info['type']])) { $moduleinfo['group_support'][$support] = $info['support']; } else { $moduleinfo['group_support'][$support] = $info['not_support']; } } $item['modules_all'][$name] = $moduleinfo; } if (!empty($item['account'])) { $account_modules = $item['account']; $item['account'] = array(); foreach ($account_modules as $name) { $item['account'][$name] = $modules_info[$name]; } } if (!empty($item['wxapp'])) { $wxapp_modules = $item['wxapp']; $item['wxapp'] = array(); foreach ($wxapp_modules as $name) { $item['wxapp'][$name] = $modules_info[$name]; } } if (!empty($item['webapp'])) { $wxapp_modules = $item['webapp']; $item['webapp'] = array(); foreach ($wxapp_modules as $name) { $item['webapp'][$name] = $modules_info[$name]; } } if (!empty($item['phoneapp'])) { $phoneapp_modules = $item['phoneapp']; $item['phoneapp'] = array(); foreach ($phoneapp_modules as $name) { $item['phoneapp'][$name] = $modules_info[$name]; } } if (!empty($item['xzapp'])) { $xzapp_modules = $item['xzapp']; $item['xzapp'] = array(); foreach ($xzapp_modules as $name) { $item['xzapp'][$name] = $modules_info[$name]; } } if (!empty($item['aliapp'])) { $aliapp_modules = $item['aliapp']; $item['aliapp'] = array(); foreach ($aliapp_modules as $name) { $item['aliapp'][$name] = $modules_info[$name]; } } if (!empty($item['baiduapp'])) { $baiduapp_modules = $item['baiduapp']; $item['baiduapp'] = array(); foreach ($baiduapp_modules as $name) { $item['baiduapp'][$name] = $modules_info[$name]; } } if (!empty($item['toutiaoapp'])) { $toutiaoapp_modules = $item['toutiaoapp']; $item['toutiaoapp'] = array(); foreach ($toutiaoapp_modules as $name) { $item['toutiaoapp'][$name] = $modules_info[$name]; } } } if (!empty($groupids)) { foreach ($groupids as $id) { $group_list[$id] = $list[$id]; } } else { if (user_is_vice_founder() && empty($show_all)) { $founder_own_table = table('users_founder_own_uni_groups'); $founder_own_uni_groups = $founder_own_table->getOwnUniGroupsByFounderUid($_W['uid']); foreach ($list as $group_key => $group) { if (!in_array($group_key, array_keys($founder_own_uni_groups))) { unset($list[$group_key]); continue; } } } $group_list = $list; } return $group_list; } function uni_templates() { global $_W; load()->model('user'); $owneruid = pdo_fetchcolumn("SELECT uid FROM ".tablename('uni_account_users')." WHERE uniacid = :uniacid AND role = 'owner'", array(':uniacid' => $_W['uniacid'])); $owner = user_single(array('uid' => $owneruid)); if (empty($owner) || user_is_founder($owner['uid'])) { $groupid = '-1'; } else { $groupid = $owner['groupid']; } if ($groupid == '-1') { $templates = pdo_fetchall("SELECT * FROM " . tablename('site_templates') . " ORDER BY id ASC", array(), 'id'); return $templates; } $extend = pdo_getall('uni_account_group', array('uniacid' => $_W['uniacid']), array(), 'groupid'); $uni_extend = pdo_get('uni_group', array('uniacid' => $_W['uniacid'])); $owner_extend_groups = table('users_extra_group')->getUniGroupsByUid($_W['uid']); $owner_extend_templates = table('users_extra_templates')->getExtraTemplatesIdsByUid($_W['uid']); $template_default = pdo_fetchall("SELECT * FROM " . tablename('site_templates') . " WHERE name = 'default'", array(), 'id'); if (empty($groupid) && empty($extend) && empty($uni_extend) && empty($owner_extend_groups) && empty($owner_extend_templates)) { return $template_default; } $group = pdo_fetch("SELECT id, name, package FROM ".tablename('users_group')." WHERE id = :id", array(':id' => $groupid)); $packageids = iunserializer($group['package']); if (!is_array($packageids)) { $packageids = array(); } if (!empty($extend)) { foreach ($extend as $extend_packageid => $row) { $packageids[] = $extend_packageid; } } if (!empty($uni_extend)) { $packageids[] = $uni_extend['id']; } if (!empty($owner_extend_groups)) { foreach ($owner_extend_groups as $id => $row) { $packageids[] = $id; } } if (empty($packageids)) { return $template_default; } if (in_array('-1', $packageids)) { return pdo_getall('site_templates', array(), array(), 'id', 'id DESC'); } $template_ids = array(); $wechatgroup = pdo_getall('uni_group', array('id' => $packageids)); if (!empty($wechatgroup)) { foreach ($wechatgroup as $row) { $row['templates'] = iunserializer($row['templates']); if (!is_array($row['templates']) || empty($row['templates'])) { continue; } foreach ($row['templates'] as $templateid) { if (!is_numeric($templateid)) { continue; } $template_ids[$templateid] = $templateid; } } } $template_ids[] = 1; if (is_array($owner_extend_templates)) { $template_ids = array_merge($template_ids, array_keys($owner_extend_templates)); } return pdo_getall('site_templates', array('id' => $template_ids), array(), 'id', 'id DESC'); } /** * 保存公众号的配置数据 * @param string $name * @param mixed $value * @return boolean */ function uni_setting_save($name, $value) { global $_W; $uniacid = !empty($_W['uniacid']) ? $_W['uniacid'] : $_W['account']['uniacid']; if (empty($name)) { return false; } if (is_array($value)) { $value = serialize($value); } $unisetting = pdo_get('uni_settings', array('uniacid' => $uniacid), array('uniacid')); if (!empty($unisetting)) { pdo_update('uni_settings', array($name => $value), array('uniacid' => $uniacid)); } else { pdo_insert('uni_settings', array($name => $value, 'uniacid' => $uniacid)); } cache_delete(cache_system_key('uniaccount', array('uniacid' => $uniacid))); return true; } /** * 获取公众号的配置项 * @param string | array $name * @param int $uniacid 统一公号id, uniacid * @return array 设置项 */ function uni_setting_load($name = '', $uniacid = 0) { global $_W; $uniacid = empty($uniacid) ? $_W['uniacid'] : $uniacid; $cachekey = cache_system_key('unisetting', array('uniacid' => $uniacid)); $unisetting = cache_load($cachekey); if (empty($unisetting)) { $unisetting = pdo_get('uni_settings', array('uniacid' => $uniacid)); if (!empty($unisetting)) { $serialize = array('site_info', 'stat', 'oauth', 'passport', 'uc', 'notify', 'creditnames', 'default_message', 'creditbehaviors', 'payment', 'recharge', 'tplnotice', 'mcplugin', 'statistics', 'bind_domain', 'remote'); foreach ($unisetting as $key => &$row) { if (in_array($key, $serialize) && !empty($row)) { $row = (array)iunserializer($row); } } } else { $unisetting = array(); } cache_write($cachekey, $unisetting); } if (empty($unisetting)) { return array(); } if (empty($name)) { return $unisetting; } if (!is_array($name)) { $name = array($name); } return array_elements($name, $unisetting); } if (!function_exists('uni_setting')) { function uni_setting($uniacid = 0, $fields = '*', $force_update = false) { global $_W; load()->model('account'); if ($fields == '*') { $fields = ''; } return uni_setting_load($fields, $uniacid); } } /** * 获取当前公号的默认子号,如果未指定则获取第一个公众号为默认子号 * @param int $uniacid 公众号ID * @return array 当前公号下的默认子号信息 */ function uni_account_default($uniacid = 0) { global $_W; $uniacid = empty($uniacid) ? $_W['uniacid'] : intval($uniacid); $uni_account = pdo_fetch("SELECT * FROM ".tablename('uni_account')." a LEFT JOIN ".tablename('account')." w ON a.uniacid = w.uniacid AND a.default_acid = w.acid WHERE a.uniacid = :uniacid", array(':uniacid' => $uniacid)); if (empty($uni_account)) { $uni_account = pdo_fetch("SELECT * FROM ".tablename('uni_account')." a LEFT JOIN ".tablename('account')." w ON a.uniacid = w.uniacid WHERE a.uniacid = :uniacid ORDER BY w.acid DESC", array(':uniacid' => $uniacid)); } if (!empty($uni_account)) { $account_tablename = uni_account_type($uni_account['type']); $account_tablename = $account_tablename['table_name']; $account = pdo_get($account_tablename, array('acid' => $uni_account['acid'])); if (empty($account)) { $account['uniacid'] = $uni_account['uniacid']; $account['acid'] = $uni_account['default_acid']; } $account['type'] = $uni_account['type']; $account['isconnect'] = $uni_account['isconnect']; $account['isdeleted'] = $uni_account['isdeleted']; $account['endtime'] = $uni_account['endtime']; return $account; } } function uni_user_account_role($uniacid, $uid, $role) { $vice_account = array( 'uniacid' => intval($uniacid), 'uid' => intval($uid), 'role' => trim($role) ); $account_user = pdo_get('uni_account_users', $vice_account, array('id')); if (!empty($account_user)) { return false; } return pdo_insert('uni_account_users', $vice_account); } /** * 获取公众号和小程序真实数量 * @param $uid * @param $role * @return array */ function uni_owner_account_nums($uid, $role) { $account_all_type = uni_account_type(); $account_all_type_sign = array_keys(uni_account_type_sign()); foreach ($account_all_type_sign as $type_info) { $key_name = $type_info . '_num'; $num[$key_name] = 0; } $uniacocunts = table('account')->searchAccountList(); if (!empty($uniacocunts)) { $uni_account_users_table = table('uni_account_users'); $uni_account_users_table->searchWithRole($role); $all_account = $uni_account_users_table->getCommonUserOwnAccountUniacids($uid); foreach ($all_account as $account) { foreach ($account_all_type as $type_key => $type_info) { if ($type_key == $account['type']) { $key_name = $type_info['type_sign'] . '_num'; $num[$key_name] += 1; continue; } } } } return $num; } function uni_update_week_stat() { global $_W; $cachekey = cache_system_key('stat_todaylock', array('uniacid' => $_W['uniacid'])); $cache = cache_load($cachekey); if(!empty($cache) && $cache['expire'] > TIMESTAMP) { return true; } $seven_days = array( date('Ymd', strtotime('-1 days')), date('Ymd', strtotime('-2 days')), date('Ymd', strtotime('-3 days')), date('Ymd', strtotime('-4 days')), date('Ymd', strtotime('-5 days')), date('Ymd', strtotime('-6 days')), date('Ymd', strtotime('-7 days')), ); $week_stat_fans = pdo_getall('stat_fans', array('date' => $seven_days, 'uniacid' => $_W['uniacid']), '', 'date'); $stat_update_yes = false; foreach ($seven_days as $sevens) { if (empty($week_stat_fans[$sevens]) || $week_stat_fans[$sevens]['cumulate'] <=0) { $stat_update_yes = true; break; } } if (empty($stat_update_yes)) { return true; } $account = uni_fetch($_W['uniacid']); if (is_error($account)) { return $account; } if ($account['level'] == ACCOUNT_SUBSCRIPTION_VERIFY || $account['level'] == ACCOUNT_SERVICE_VERIFY) { $account_obj = WeAccount::createByUniacid(); $weixin_stat = $account_obj->getFansStat(); if (empty($weixin_stat) || is_error($weixin_stat)) { return error(-1, '调用微信接口错误'); } } foreach($seven_days as $sevens) { if ($account['level'] == ACCOUNT_SUBSCRIPTION_VERIFY || $account['level'] == ACCOUNT_SERVICE_VERIFY) { $update_stat = array( 'uniacid' => $_W['uniacid'], 'new' => $weixin_stat[$sevens]['new'], 'cancel' => $weixin_stat[$sevens]['cancel'], 'cumulate' => $weixin_stat[$sevens]['cumulate'], 'date' => $sevens, ); } else { $update_stat = array( 'cumulate' => pdo_fetchcolumn("SELECT COUNT(*) FROM " . tablename('mc_mapping_fans') . " WHERE acid = :acid AND uniacid = :uniacid AND follow = :follow AND followtime < :endtime", array(':acid' => $_W['acid'], ':uniacid' => $_W['uniacid'], ':endtime' => strtotime($sevens)+86400, ':follow' => 1)), 'date' => $sevens, 'new' => $week_stat_fans[$sevens]['new'], 'cancel' => $week_stat_fans[$sevens]['cancel'], 'uniacid' => $_W['uniacid'], ); } if(empty($week_stat_fans[$sevens])) { pdo_insert('stat_fans', $update_stat); } elseif (empty($week_stat_fans[$sevens]['cumulate']) || $week_stat_fans[$sevens]['cumulate'] < 0) { pdo_update('stat_fans', $update_stat, array('id' => $week_stat_fans[$sevens]['id'])); } } cache_write($cachekey, array('expire' => TIMESTAMP + 7200)); return true; } /** * 将公众号置顶 * @param int $uniacid * @param int $rank */ function uni_account_rank_top($uniacid) { global $_W; if (!empty($_W['isfounder'])) { $max_rank = pdo_getcolumn('uni_account', array(), 'max(rank)'); pdo_update('uni_account', array('rank' => ($max_rank + 1)), array('uniacid' => $uniacid)); }else { $max_rank = pdo_getcolumn('uni_account_users', array('uid' => $_W['uid']), 'max(rank)'); pdo_update('uni_account_users', array('rank' => ($max_rank + 1)), array('uniacid' => $uniacid, 'uid' => $_W['uid'])); } return true; } /** * 创建子公众号 * @param int $uniacid 指定统一公号 * @param array $account 子公号信息 * @return int 新创建的子公号 acid */ function account_create($uniacid, $account) { global $_W; $account_all_type = uni_account_type(); $type = $account['type']; $type_sign = $account_all_type[$type]['type_sign']; unset($account['type']); $accountdata = array('uniacid' => $uniacid, 'type' => $type, 'hash' => random(8)); $user_create_account_info = permission_user_account_num(); if (empty($_W['isfounder']) && empty($user_create_account_info["usergroup_{$type_sign}_limit"])) { $accountdata['endtime'] = strtotime('+1 month', time()); pdo_insert('site_store_create_account', array('endtime' => strtotime('+1 month', time()), 'uid' => $_W['uid'], 'uniacid' => $uniacid, 'type' => $type)); } pdo_insert('account', $accountdata); $acid = pdo_insertid(); $account['acid'] = $acid; $account['uniacid'] = $uniacid; if (in_array($type_sign, array(ACCOUNT_TYPE_SIGN, XZAPP_TYPE_SIGN))) { $account['token'] = random(32); $account['encodingaeskey'] = random(43); } pdo_insert($account_all_type[$type]['table_name'], $account); return $acid; } /** * 获取指定子公号信息 * @param int $acid 子公号acid * @return array */ function account_fetch($acid) { $account_info = pdo_get('account', array('acid' => $acid)); if (empty($account_info)) { return error(-1, '公众号不存在'); } return uni_fetch($account_info['uniacid']); } /* * 获取某个公众号的所有人和套餐有效期限(如果没有所有人,默认属于创始人,服务创始人) * */ function uni_setmeal($uniacid = 0) { global $_W; if(!$uniacid) { $uniacid = $_W['uniacid']; } $owneruid = pdo_fetchcolumn("SELECT uid FROM ".tablename('uni_account_users')." WHERE uniacid = :uniacid AND role = 'owner'", array(':uniacid' => $uniacid)); if(empty($owneruid)) { $user = array( 'uid' => -1, 'username' => '创始人', 'timelimit' => '未设置', 'groupid' => '-1', 'groupname' => '所有服务' ); return $user; } load()->model('user'); $groups = pdo_getall('users_group', array(), array('id', 'name'), 'id'); $owner = user_single(array('uid' => $owneruid)); $user = array( 'uid' => $owner['uid'], 'username' => $owner['username'], 'groupid' => $owner['groupid'], 'groupname' => $groups[$owner['groupid']]['name'] ); if(empty($owner['endtime'])) { $user['timelimit'] = date('Y-m-d', $owner['starttime']) . ' ~ 无限制' ; } else { if($owner['endtime'] <= TIMESTAMP) { $user['timelimit'] = '已到期'; } else { $year = 0; $month = 0; $day = 0; $endtime = $owner['endtime']; $time = strtotime('+1 year'); if ($endtime > $time) { $year = $year + 1; $time = strtotime("+1 year", $time); } $time = strtotime("-1 year", $time); $time = strtotime("+1 month", $time); if ($endtime > $time) { $month = $month + 1; $time = strtotime("+1 month", $time); } $time = strtotime("-1 month", $time); $time = strtotime("+1 day", $time); if ($endtime > $time) { $day = $day + 1; $time = strtotime("+1 day", $time); } if (empty($year)) { $timelimit = empty($month)? $day.'天' : date('Y-m-d', $owner['starttime']) . '~'. date('Y-m-d', $owner['endtime']); }else { $timelimit = date('Y-m-d', $owner['starttime']) . '~'. date('Y-m-d', $owner['endtime']); } $user['timelimit'] = $timelimit; } } return $user; } /* * 检测公众号是否只有多个子号。如果有多个子号,返回true; * */ function uni_is_multi_acid($uniacid = 0) { global $_W; if(!$uniacid) { $uniacid = $_W['uniacid']; } $cachekey = cache_system_key('unicount', array('uniacid' => $uniacid)); $nums = cache_load($cachekey); $nums = intval($nums); if(!$nums) { $nums = pdo_fetchcolumn('SELECT COUNT(*) FROM ' . tablename('account_wechats') . ' WHERE uniacid = :uniacid', array(':uniacid' => $_W['uniacid'])); cache_write($cachekey, $nums); } if($nums <= 1) { return false; } return true; } /** * 删除公众号 * @param string $acid 微信公众号的acid */ function account_delete($acid) { global $_W; load()->func('file'); load()->model('module'); load()->model('job'); $jobid = 0; //判断是不是主公众号 $account = pdo_get('uni_account', array('default_acid' => $acid)); if ($account) { $uniacid = $account['uniacid']; $state = permission_account_user_role($_W['uid'], $uniacid); if (!in_array($state, array(ACCOUNT_MANAGE_NAME_OWNER, ACCOUNT_MANAGE_NAME_FOUNDER, ACCOUNT_MANAGE_NAME_VICE_FOUNDER))) { itoast('没有该公众号操作权限!', url('account/recycle'), 'error'); } if($uniacid == $_W['uniacid']) { isetcookie('__uniacid', ''); } cache_delete(cache_system_key('uniaccount', array('uniacid' => $uniacid))); $modules = array(); //获取全部规则 $rules = pdo_fetchall("SELECT id, module FROM ".tablename('rule')." WHERE uniacid = '{$uniacid}'"); if (!empty($rules)) { foreach ($rules as $index => $rule) { $deleteid[] = intval($rule['id']); } pdo_delete('rule', "id IN ('".implode("','", $deleteid)."')"); } $subaccount = pdo_fetchall("SELECT acid FROM ".tablename('account')." WHERE uniacid = :uniacid", array(':uniacid' => $uniacid)); if (!empty($subaccount)) { foreach ($subaccount as $childaccount) { @unlink(IA_ROOT . '/attachment/qrcode_'.$childaccount['acid'].'.jpg'); @unlink(IA_ROOT . '/attachment/headimg_'.$childaccount['acid'].'.jpg'); file_remote_delete('qrcode_'.$childaccount['acid'].'.jpg'); file_remote_delete('headimg_'.$childaccount['acid'].'.jpg'); } if (!empty($acid)) { $jobid = job_create_delete_account($uniacid, $account['name'], $_W['uid']); } } //遍历全部表删除公众号数据 $tables = array( 'account','account_wechats', 'account_wxapp', 'wxapp_versions', 'account_webapp', 'account_phoneapp', 'phoneapp_versions','core_paylog','core_resource', 'cover_reply', 'mc_chats_record','mc_credits_recharge','mc_credits_record', 'mc_fans_groups','mc_groups','mc_handsel','mc_mapping_fans','mc_mapping_ucenter','mc_mass_record', 'mc_member_address','mc_member_fields','mc_members','menu_event', 'qrcode','qrcode_stat', 'rule','rule_keyword','site_article','site_category','site_multi','site_nav','site_slide', 'site_styles','site_styles_vars','stat_keyword', 'stat_rule','uni_account','uni_account_modules','uni_account_users','uni_settings', 'uni_group', 'uni_verifycode','users_permission', 'mc_member_fields', 'wechat_news', 'users_lastuse', ); if (!empty($tables)) { foreach ($tables as $table) { $tablename = str_replace($GLOBALS['_W']['config']['db']['tablepre'], '', $table); pdo_delete($tablename, array( 'uniacid'=> $uniacid)); } } } else { $account = account_fetch($acid); if (empty($account)) { itoast('子公众号不存在或是已经被删除', '', ''); } $uniacid = $account['uniacid']; $state = permission_account_user_role($_W['uid'], $uniacid); if($state != ACCOUNT_MANAGE_NAME_FOUNDER && $state != ACCOUNT_MANAGE_NAME_OWNER) { itoast('没有该公众号操作权限!', url('account/recycle'), 'error'); } $uniaccount = uni_fetch($account['uniacid']); if ($uniaccount['default_acid'] == $acid) { itoast('默认子公众号不能删除', '', ''); } pdo_delete('account', array('acid' => $acid)); pdo_delete('account_wechats', array('acid' => $acid, 'uniacid' => $uniacid)); cache_delete(cache_system_key('uniaccount', array('uniacid' => $uniacid))); cache_delete(cache_system_key('account_auth_refreshtoken', array('uniacid' => $uniacid))); $oauth = uni_setting($uniacid, array('oauth')); if(!empty($oauth['oauth']['account']) && $oauth['oauth']['account'] == $acid) { $acid = pdo_fetchcolumn('SELECT acid FROM ' . tablename('account_wechats') . " WHERE uniacid = :id AND level = 4 AND secret != '' AND `key` != ''", array(':id' => $uniacid)); pdo_update('uni_settings', array('oauth' => iserializer(array('account' => $acid, 'host' => $oauth['oauth']['host']))), array('uniacid' => $uniacid)); } @unlink(IA_ROOT . '/attachment/qrcode_'.$acid.'.jpg'); @unlink(IA_ROOT . '/attachment/headimg_'.$acid.'.jpg'); file_remote_delete('qrcode_'.$acid.'.jpg'); file_remote_delete('headimg_'.$acid.'.jpg'); } return $jobid; } /** * 获取所有可借用支付的公众号 * @return array() 微信支付可借用的的公众号和服务商公众号 */ function account_wechatpay_proxy () { global $_W; $proxy_account = cache_load(cache_system_key('proxy_wechatpay_account')); if (empty($proxy_account)) { $proxy_account = cache_build_proxy_wechatpay_account(); } unset($proxy_account['borrow'][$_W['uniacid']]); unset($proxy_account['service'][$_W['uniacid']]); return $proxy_account; } /** * 设置模块是否在快捷菜单显示 */ function uni_account_module_shortcut_enabled($modulename, $status = STATUS_ON) { global $_W; $module = module_fetch($modulename); if(empty($module)) { return error(1, '抱歉,你操作的模块不能被访问!'); } $module_status = pdo_get('uni_account_modules', array('module' => $modulename, 'uniacid' => $_W['uniacid']), array('id', 'shortcut')); if (empty($module_status)) { $data = array( 'uniacid' => $_W['uniacid'], 'module' => $modulename, 'enabled' => STATUS_ON, 'shortcut' => $status ? STATUS_ON : STATUS_OFF, 'settings' => '', ); pdo_insert('uni_account_modules', $data); } else { $data = array( 'shortcut' => $status ? STATUS_ON : STATUS_OFF, ); pdo_update('uni_account_modules', $data, array('id' => $module_status['id'])); } cache_build_module_info($modulename); return true; } /** * 获取某公众号下会员字段 * @param int $uniacid * @return array 会员字段数组 */ function uni_account_member_fields($uniacid) { if (empty($uniacid)) { return array(); } $account_member_fields = pdo_getall('mc_member_fields', array('uniacid' => $uniacid), array(), 'fieldid'); $system_member_fields = pdo_getall('profile_fields', array(), array(), 'id'); $less_field_indexes = array_diff(array_keys($system_member_fields), array_keys($account_member_fields)); if (empty($less_field_indexes)) { foreach ($account_member_fields as &$field) { $field['field'] = $system_member_fields[$field['fieldid']]['field']; } unset($field); return $account_member_fields; } $account_member_add_fields = array('uniacid' => $uniacid); foreach ($less_field_indexes as $field_index) { $account_member_add_fields['fieldid'] = $system_member_fields[$field_index]['id']; $account_member_add_fields['title'] = $system_member_fields[$field_index]['title']; $account_member_add_fields['available'] = $system_member_fields[$field_index]['available']; $account_member_add_fields['displayorder'] = $system_member_fields[$field_index]['displayorder']; pdo_insert('mc_member_fields', $account_member_add_fields); $insert_id = pdo_insertid(); $account_member_fields[$insert_id]['id'] = $insert_id; $account_member_fields[$insert_id]['field'] = $system_member_fields[$field_index]['field']; $account_member_fields[$insert_id]['fid'] = $system_member_fields[$field_index]['id']; $account_member_fields[$insert_id] = array_merge($account_member_fields[$insert_id], $account_member_add_fields); } return $account_member_fields; } function uni_account_global_oauth() { load()->model('setting'); $oauth = setting_load('global_oauth'); $oauth = !empty($oauth['global_oauth']) ? $oauth['global_oauth'] : array(); if (!empty($oauth['oauth']['account'])) { $account_exist = uni_fetch($oauth['oauth']['account']); if (empty($account_exist) || is_error($account_exist)) { $oauth['oauth']['account'] = 0; } } return $oauth; } function uni_search_link_account($module_name, $type_sign, $uniacid = 0) { global $_W; load()->model('miniapp'); load()->model('phoneapp'); $module_name = trim($module_name); if (empty($module_name) || empty($type_sign)) { return array(); } $all_account_type = uni_account_type(); $all_account_type_sign = uni_account_type_sign(); if (empty($all_account_type_sign[$type_sign])) { return array(); } $owned_account = uni_user_accounts($_W['uid'], $type_sign); if (!empty($owned_account)) { foreach ($owned_account as $key => $account) { if (!empty($uniacid) && $account['uniacid'] == $uniacid) { unset($owned_account[$key]); continue; } $account['role'] = permission_account_user_role($_W['uid'], $account['uniacid']); if (!in_array($account['role'], array(ACCOUNT_MANAGE_NAME_OWNER, ACCOUNT_MANAGE_NAME_VICE_FOUNDER, ACCOUNT_MANAGE_NAME_FOUNDER))) { unset($owned_account[$key]); continue; } $account_modules = uni_modules_by_uniacid($account['uniacid']); if (empty($account_modules[$module_name])) { unset($owned_account[$key]); continue; } $type = $all_account_type_sign[$type_sign]['contain_type'][0]; $type_info = $all_account_type[$type]; if ($account_modules[$module_name][$type_info['module_support_name']] != $type_info['module_support_value']) { unset($owned_account[$key]); continue; } $account_support_version = array_filter($all_account_type, function($item) { return $item['support_version']; }); $account_support_version = array_keys($account_support_version); if (in_array($type, $account_support_version)) { $last_version = miniapp_fetch($account['uniacid']); if (empty($last_version['version']) || empty($last_version['version']['modules']) || !is_array($last_version['version']['modules'])) { unset($owned_account[$key]); continue; } $module_version = array(); foreach ($last_version['version']['modules'] as $item) { if (!empty($item['name']) && $item['name'] == $module_name) { $module_version = $item; break; } } if (empty($module_version) || !empty($module_version['account']) || !empty($module_version['uniacid'])) { unset($owned_account[$key]); continue; } } } } return $owned_account; } function uni_account_oauth_host() { global $_W; $oauth_url = $_W['siteroot']; $unisetting = uni_setting_load(); if (!empty($unisetting['bind_domain']) && !empty($unisetting['bind_domain']['domain'])) { $oauth_url = $unisetting['bind_domain']['domain'] . '/'; } else { if (!empty($unisetting['oauth']['host'])) { $oauth_url = $unisetting['oauth']['host'] . '/'; } else { $global_unisetting = uni_account_global_oauth(); $oauth_url = !empty($global_unisetting['oauth']['host']) ? $global_unisetting['oauth']['host'] . '/' : $oauth_url; } } return $oauth_url; } function uni_user_see_more_info($user_type, $see_more = false) { global $_W; if (empty($user_type)) { return false; } if ($user_type == ACCOUNT_MANAGE_NAME_VICE_FOUNDER && !empty($see_more) || $_W['role'] != $user_type) { return true; } return false; } function uni_delete_rule($rid, $relate_table_name) { global $_W; $rid = intval($rid); if (empty($rid)) { return false; } $allowed_table_names = array('news_reply', 'cover_reply'); if (!in_array($relate_table_name, $allowed_table_names)) { return false; } $rule_result = pdo_delete('rule', array('id' => $rid, 'uniacid' => $_W['uniacid'])); $rule_keyword_result = pdo_delete('rule_keyword', array('rid' => $rid, 'uniacid' => $_W['uniacid'])); if ($rule_result && $rule_keyword_result) { $result = pdo_delete($relate_table_name, array('rid' => $rid)); } return $result ? true : false; }