functions.ini.php
来自「php 开发的内容管理系统」· PHP 代码 · 共 693 行 · 第 1/2 页
PHP
693 行
<?php
/**
* XPress - WordPress for XOOPS
*
* Adding multi-author features to XPress
*
* @copyright The XOOPS project http://www.xoops.org/
* @license http://www.fsf.org/copyleft/gpl.html GNU public license
* @author Taiwen Jiang (phppp or D.J.) <php_pp@hotmail.com>
* @since 2.04
* @version $Id$
* @package module::wordpress
*/
function wp_blog_charset($skip_cache = false){
static $wp_blog_charset;
if(isset($wp_blog_charset) && empty($skip_cache)) {
return $wp_blog_charset;
}
if(!defined("WP_BLOG_CHARSET") || constant("WP_BLOG_CHARSET") ==0){
global $xlanguage;
if($skip_cache) return (!empty($xlanguage["action"]) && !empty($xlanguage['charset_base'])) ? $xlanguage['charset_base'] : _CHARSET;
$wp_blog_charset = (!empty($xlanguage["action"]) && !empty($xlanguage['charset_base'])) ? $xlanguage['charset_base'] : _CHARSET;
}else{
$GLOBALS['blog_charset_skip_filter'] = true;
$blog_charset = get_settings('blog_charset');
if($skip_cache) return empty($blog_charset)?WP_MO_CHARSET:$blog_charset;
$wp_blog_charset = empty($blog_charset)?WP_MO_CHARSET:$blog_charset;
}
return $wp_blog_charset;
}
function wp_rss_charset(){
static $wp_rss_charset;
if(isset($wp_rss_charset)) {
return $wp_rss_charset;
}
$rss_charset = 0;
if(is_object($GLOBALS["xoopsModule"]) && WP_BLOG_DIRNAME == $GLOBALS["xoopsModule"]->getVar("dirname")){
$rss_charset = intval($GLOBALS["xoopsModuleConfig"]["rss_charset"]);
}
switch($rss_charset){
case 1:
$wp_rss_charset = wp_blog_charset();
break;
case 2:
global $xlanguage;
$wp_rss_charset = !empty($xlanguage["action"]) && !empty($xlanguage['charset_base']) ? $xlanguage['charset_base'] : _CHARSET;
break;
default:
$wp_rss_charset = "UTF-8";
break;
}
return $wp_rss_charset;
}
/*
function encoding_wp2xoops_l10n($text)
{
$blog_charset = wp_blog_charset();
return XoopsLocal::convert_encoding($text, $blog_charset, WP_MO_CHARSET);
}
*/
function encoding_wp2xoops($text)
{
global $xlanguage;
$to_charset = !empty($xlanguage["action"]) && !empty($xlanguage['charset_base']) ? $xlanguage['charset_base'] : _CHARSET;
$from_charset = wp_blog_charset();
$text = _encoding_wp_xoops($text, $to_charset, $from_charset);
return $text;
}
function encoding_xoops2wp($text)
{
global $xlanguage;
$from_charset = !empty($xlanguage["action"]) && !empty($xlanguage['charset_base']) ? $xlanguage['charset_base'] : _CHARSET;
$to_charset = wp_blog_charset();
$text = _encoding_wp_xoops($text, $to_charset, $from_charset);
return $text;
}
function encoding_rss2wp($text, $from = "utf-8")
{
$from = empty($from)?"utf-8":$from;
$to_charset = wp_blog_charset(true);
$text = _encoding_wp_xoops($text, $to_charset, $from);
return $text;
}
function encoding_wp2rss($text)
{
$to = wp_rss_charset();
$from = wp_blog_charset(true);
$text = _encoding_wp_xoops($text, $to, $from);
return $text;
}
function _encoding_wp_xoops(&$text, $to, $from)
{
if(is_array($text)) {
foreach(array_keys($text) as $key){
_encoding_wp_xoops($text[$key], $to, $from);
}
}else{
$text = XoopsLocal::convert_encoding($text, $to, $from);
}
return $text;
}
function get_currentuserinfo() {
global $user_login, $userdata, $user_level, $user_ID, $user_email, $user_url, $user_pass_md5, $user_identity, $current_user;
if ( defined('XMLRPC_REQUEST') && XMLRPC_REQUEST )
return false;
if(!is_object($GLOBALS["xoopsUser"])){
wp_set_current_user(0);
return false;
}
$user_login = $GLOBALS["xoopsUser"]->getVar("uname");
$user_login = encoding_xoops2wp($user_login);
$userdata = get_userdatabylogin($user_login);
//$user_level = $userdata->user_level;
$user_ID = $userdata->ID;
$user_email = $userdata->user_email;
$user_url = $userdata->user_url;
$user_pass_md5 = $userdata->user_pass;
$user_identity = $userdata->display_name;
if ( empty($current_user) )
$current_user = wp_set_current_user($user_ID);
}
function get_userdata($user_id, $calLevel = false) {
global $wpdb, $table_prefix, $wp_roles;
$user_id = (int) $user_id;
if ( $user_id == 0 )
return false;
$user = wp_cache_get($user_id, 'users');
if ( is_object($user) && $user->ID == $user_id && (!empty($user->user_level) || empty($calLevel)) )
return $user;
if(is_object($GLOBALS["xoopsUser"]) && $user_id == $GLOBALS["xoopsUser"]->getVar("uid")){
$xoopsuser =& $GLOBALS["xoopsUser"];
}else{
$member_handler =& xoops_getHandler("member");
$xoopsuser = $member_handler->getUser($user_id);
if(!is_object($xoopsuser) || $xoopsuser->getVar("level")<1){
return false;
}
}
//$user->user_level = get_userlevel($xoopsuser);
$user->ID = $xoopsuser->getVar("uid");
$user->user_login = encoding_xoops2wp($xoopsuser->getVar("uname"));
$user->display_name = $xoopsuser->getVar("name")?encoding_xoops2wp($xoopsuser->getVar("name")):$user->user_login;
$user->user_nicename = $user->ID;
$user->user_email = $xoopsuser->getVar("email");
$user->user_url = XOOPS_URL."/userinfo.php?uid=".$xoopsuser->getVar("uid");
$user->user_pass = $xoopsuser->getVar("pass");
$user->description = $user->user_description = encoding_xoops2wp($xoopsuser->getVar("bio"));
$capabilities = $wp_roles->roles;
$role = get_userrole($xoopsuser);
$user->{$table_prefix . 'capabilities'} = array($role=>$capabilities[$role]['capabilities']);
$wpdb->hide_errors();
$metavalues = $wpdb->get_results("SELECT meta_key, meta_value FROM $wpdb->usermeta WHERE user_id = '$user_id'");
$wpdb->show_errors();
if ($metavalues) {
foreach ( $metavalues as $meta ) {
@ $value = unserialize($meta->meta_value);
if ($value === FALSE)
$value = $meta->meta_value;
$user->{$meta->meta_key} = $value;
// We need to set user_level from meta, not row
if ( $wpdb->prefix . 'user_level' == $meta->meta_key )
$user->user_level = $meta->meta_value;
} // end foreach
} //end if
if(empty($user->user_level) && !empty($calLevel)){
$user->user_level = get_userlevel($xoopsuser);
}
// For backwards compat.
if ( isset($user->first_name) )
$user->user_firstname = $user->first_name;
if ( isset($user->last_name) )
$user->user_lastname = $user->last_name;
wp_cache_add($user_id, $user, 'users');
//wp_cache_add($user->user_login, $user, 'userlogins');
return $user;
}
function get_userdatabylogin($user_login) {
global $wpdb;
if ( empty( $user_login ) )
return false;
$userdata = wp_cache_get($user_login, 'userlogins');
if ( $userdata )
return $userdata;
if(is_object($GLOBALS["xoopsUser"]) && encoding_xoops2wp($GLOBALS["xoopsUser"]->getVar("uname")) == $user_login){
$uid = $GLOBALS["xoopsUser"]->getVar("uid");
}else{
$criteria = new CriteriaCompo(new Criteria('uname', encoding_wp2xoops($user_login)));
$criteria->add(new Criteria('level', 0, ">"));
$criteria->setLimit(1);
$member_handler =& xoops_getHandler("member");
if(!$users = $member_handler->getUsers($criteria)){
return false;
}
$uid = $users[0]->getVar("uid");
}
$user = get_userdata($uid);
//wp_cache_add($user->ID, $user, 'users');
wp_cache_add($user->user_login, $user, 'userlogins');
return $user;
}
function get_userrole(&$xoops_user) {
$role = 'subscriber';
if($xoops_user->isAdmin()) {
return 'administrator';
}
if(!is_object($xoops_user)) {
$groups = array(XOOPS_GROUP_ANONYMOUS);
}else{
$groups = $xoops_user->groups();
}
$groupstring = "(" . implode(',', $groups) . ")";
$criteria = new CriteriaCompo(new Criteria('gperm_modid', wp_get_moduleid()));
$criteria->add(new Criteria('gperm_groupid', $groupstring, 'IN'));
$gperm_handler = &xoops_gethandler('groupperm');
$perms = $gperm_handler->getObjects($criteria, true);
$perm_levels = array(
1 => "contributor", // regular contributor
2 => "author", // author, publish post
3 => "editor" // moderator
);
$level = 0;
foreach ($perms as $gperm_id => $gperm) {
if(!empty($perm_levels[$gperm->getVar('gperm_itemid')]) && $gperm->getVar('gperm_itemid')>$level) $level = $gperm->getVar('gperm_itemid');
}
$role = empty($perm_levels[$level])? $role : $perm_levels[$level];
return $role;
}
function get_userlevel(&$xoops_user) {
static $level;
//define("WP_LEVEL_VIEW", 1);
define("WP_LEVEL_DRAFT", 1);
define("WP_LEVEL_POST", 2);
define("WP_LEVEL_MODERATE", 3);
if(!is_object($xoops_user)) {
$groups = array(XOOPS_GROUP_ANONYMOUS);
return 0;
}
if($xoops_user->isAdmin()) return 10;
if(isset($level[$xoops_user->getVar("uid")])) return $level[$xoops_user->getVar("uid")];
$groups = $xoops_user->groups();
$groupstring = "(" . implode(',', $groups) . ")";
$criteria = new CriteriaCompo(new Criteria('gperm_modid', wp_get_moduleid()));
$criteria->add(new Criteria('gperm_groupid', $groupstring, 'IN'));
$gperm_handler = &xoops_gethandler('groupperm');
$perms =& $gperm_handler->getObjects($criteria, true);
//$level_upload = min(WP_LEVEL_MODERATE-1, get_settings('fileupload_minlevel'));
$perm_levels = array(
1 => WP_LEVEL_DRAFT, // create draft, create draft
2 => WP_LEVEL_POST, // create post
3 => WP_LEVEL_MODERATE // moderate comments
);
$level = 0;
foreach ($perms as $gperm_id => $gperm) {
if($perm_levels[$gperm->getVar('gperm_itemid')]>$level) $level = $perm_levels[$gperm->getVar('gperm_itemid')];
}
unset($perms);
return $level;
}
function wp_mail($to, $subject, $message, $from_email="", $from_name="") {
$xoopsMailer =& getMailer();
$xoopsMailer->useMail();
$xoopsMailer->setToEmails($to);
$xoopsMailer->setFromEmail(empty($from_email)?$GLOBALS["xoopsConfig"]['adminmail']:$from_email);
$xoopsMailer->setFromName(empty($from_name)?$GLOBALS["xoopsConfig"]['sitename']:$from_name);
$xoopsMailer->setSubject($subject);
$xoopsMailer->setBody($message);
return $xoopsMailer->send();
}
function wp_login($username, $password, $already_md5 = false) {
if(is_object($GLOBALS["xoopsUser"])){
return true;
}else{
return false;
}
}
function auth_redirect($force = false, $message = "") {
if(!is_object($GLOBALS["xoopsUser"])){
header('Expires: Wed, 11 Jan 1984 05:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-cache, must-revalidate, max-age=0');
header('Pragma: no-cache');
header('Location: ' . get_settings('siteurl') . '/wp-login.php?redirect_to=' . urlencode($_SERVER['REQUEST_URI']));
exit();
}elseif(!empty($force)){
$redirect = xoops_getenv("HTTP_REFERER");
$redirect = (strpos($redirect, XOOPS_URL) === 0)? $redirect: XOOPS_URL."/".$redirect;
redirect_header($redirect, 2, encoding_wp2xoops($message));
}
}
// Set and retrieves post views given a post ID or post object.
function the_views($post_id = 0) {
echo get_the_views($post_id);
}
// Retrieves post views given a post ID or post object.
function get_the_views($post_id=0) {
static $post_cache_views;
if ( empty($post_id) ) {
if ( isset($GLOBALS['post']) )
$post_id = $GLOBALS['post']->ID;
}
$post_id = intval($post_id);
if($post_id==0) return null;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?