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 + -
显示快捷键?