用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - php代码库

博客blog cms内容管理系统nucleus

2013-06-30 作者: 免费源代码下载整理举报

[php]代码库

=========================================================

安装: 

=========================================================


1. 解压缩文件包

将文件包中的所有文件解压缩到你电脑上的某个目录中。保证解压缩后的文件目录结构保持不变。解压缩完成后,你将得到如下的目录结构(* 代表该目录下包含文件): 
/*                           (系统主文件目录)
/nucleus/*                   (管理主文件目录)
/nucleus/javascript/*        (javascript帮助代码目录)
/nucleus/libs/*              (Nucleus核心库文件目录)
/nucleus/language/*          (语言包文件目录)
/nucleus/plugins/*           (插件目录)
/nucleus/xmlrpc/*            (XML-RPC接口目录)
/nucleus/documentation/*     (文档 + 管理帮助目录)
/nucleus/styles/*            (文档 + 管理帮助风格目录)
/nucleus/forms/*             (表单式样目录)
/extra/*                     (其他, e.g. needed files to enable fancy URLs)
/skins/*                     (皮肤目录[导入的皮肤也存放于此])
/media/*                     (媒体文件目录[空的])




2. 上传文件到服务器

上传所有的文件到服务器,保证所有的php文件都是在ASCII模式下进行传输。如果用其他模式传输,程序运行将会出错。 
可选项:
为了使你的安装更简单,你最好将 config.php 的文件属性改为 666 。这样的话,安装脚本就能够自动将系统的配置保存在其中。否则,你只能手动配置。(如何更改文件属性) 
如果你想使用文件上传功能,你必须将 /media/ 目录设置为可写(777)属性(777)。(如何更改文件属性) 
如果你想使用 SkinFiles 插件编辑皮肤文件,你需要将 /skins/ 目录下的所有文件设置成 666 属性。如果你想创建新的皮肤文件,就必须设置目录为 777 属性。 




3. 运行install.php

用你的浏览器打开下面的地址,将 yoursite和yourpath 的内容改成你的服务器对应的内容。 
http://www.yoursite.com/yourpath/install.php

该安装脚本将会提示你输入一些信息并完成大部分的安装工作。当安装成功以后,install.php 将会给你进一步的提示(你仍需要手工删除一些文件)。 
注意: 当你在浏览器打开 install.php 后,出现 "If you see this text in your browser..." 这样的文字,或者提示你下载 install.php,说明你的服务器不支持PHP,安装将无法进行。 




4. 完成

安装完成后你就可以访问你的网站并进行管理了。更多安装问题请到HEXU查询。


<?php

class ACTION
{
	function ACTION()
	{
	
	}
	
	function doAction($action) 
	{
		switch($action) {
			case 'addcomment':
				return $this->addComment();
				break;
			case 'sendmessage':
				return $this->sendMessage();
				break;
			case 'createaccount':
				return $this->createAccount();
				break;		
			case 'forgotpassword':
				return $this->forgotPassword();
				break;
			case 'votepositive':
				return $this->doKarma('pos');
				break;
			case 'votenegative':
				return $this->doKarma('neg');
				break;
			case 'plugin':
				return $this->callPlugin();
				break;
			default:
				doError(_ERROR_BADACTION);
		}
	}
	
	function addComment() {
		global $CONF, $errormessage, $manager;

		$post['itemid'] =	intPostVar('itemid');
		$post['user'] = 	postVar('user');
		$post['userid'] = 	postVar('userid');
		$post['body'] = 	postVar('body');

		// set cookies when required
		$remember = intPostVar('remember');
		if ($remember == 1) {
			$lifetime = time()+2592000;
			setcookie($CONF['CookiePrefix'] . 'comment_user',$post['user'],$lifetime,'/','',0);
			setcookie($CONF['CookiePrefix'] . 'comment_userid', $post['userid'],$lifetime,'/','',0);
		}

		$comments = new COMMENTS($post['itemid']);

		$blogid = getBlogIDFromItemID($post['itemid']);
		$this->checkban($blogid);
		$blog =& $manager->getBlog($blogid);

		// note: PreAddComment and PostAddComment gets called somewhere inside addComment
		$errormessage = $comments->addComment($blog->getCorrectTime(),$post);

		if ($errormessage == '1') {		
			// redirect when adding comments succeeded
			if (postVar('url')) {
				redirect(postVar('url'));
			} else {
				$url = $CONF['IndexURL'] . createItemLink($post['itemid']);
				redirect($url);
			}
		} else {
			// else, show error message using default skin for blog
			return array(
				'message' => $errormessage,
				'skinid' => $blog->getDefaultSkin()
			);
		}
		
		exit;
	}

	// Sends a message from the current member to the member given as argument
	function sendMessage() {
		global $CONF, $member;

		$error = $this->validateMessage();
		if ($error != '')
			return array('message' => $error);

		if (!$member->isLoggedIn()) {
			$fromMail = postVar('frommail');
			$fromName = _MMAIL_FROMANON;
		} else {
			$fromMail = $member->getEmail();
			$fromName = $member->getDisplayName();
		}

		$tomem = new MEMBER();
		$tomem->readFromId(postVar('memberid'));

		$message  = _MMAIL_MSG . ' ' . $fromName . "\n"
			  . '(' . _MMAIL_FROMNUC. ' ' . $CONF['IndexURL'] .") \n\n"
			  . _MMAIL_MAIL . " \n\n"
			  . postVar('message');
		$message .= getMailFooter();

		$title = _MMAIL_TITLE . ' ' . $fromName;
		mail($tomem->getEmail(), $title, $message, 'From: '. $fromMail);

		if (postVar('url')) {
			redirect(postVar('url'));
		} else {
			$CONF['MemberURL'] = $CONF['IndexURL'];
			if ($CONF['URLMode'] == 'pathinfo')
			{
				$url = createLink('member', array('memberid' => $tomem->getID(), 'name' => $tomem->getDisplayName()));
			}
			else
			{
				$url = $CONF['IndexURL'] . createMemberLink($tomem->getID());
			}
			redirect($url);
		}
		
		exit;

	}
	
	function validateMessage() {
		global $CONF, $member, $manager;

		if (!$CONF['AllowMemberMail']) 
			return _ERROR_MEMBERMAILDISABLED;

		if (!$member->isLoggedIn() && !$CONF['NonmemberMail'])
			return _ERROR_DISALLOWED;

		if (!$member->isLoggedIn() && (!isValidMailAddress(postVar('frommail'))))
			return _ERROR_BADMAILADDRESS;
			
		// let plugins do verification (any plugin which thinks the comment is invalid
		// can change 'error' to something other than '')
		$result = '';
		$manager->notify('ValidateForm', array('type' => 'membermail', 'error' => &$result));
		
		return $result;
		
	}

	// creates a new user account
	function createAccount() {
		global $CONF, $manager;

		if (!$CONF['AllowMemberCreate']) 
			doError(_ERROR_MEMBERCREATEDISABLED);

		// even though the member can not log in, set some random initial password. One never knows.
		srand((double)microtime()*1000000);
		$initialPwd = md5(uniqid(rand(), true));

		// create member (non admin/can not login/no notes/random string as password)
		$r = MEMBER::create(postVar('name'), postVar('realname'), $initialPwd, postVar('email'), postVar('url'), 0, 0, '');
		
		if ($r != 1)
			doError($r);
			
		// send message containing password.
		$newmem = new MEMBER();
		$newmem->readFromName(postVar('name'));
		$newmem->sendActivationLink('register');

		$manager->notify('PostRegister',array('member' => &$newmem));		

		if (postVar('desturl')) {
			redirect(postVar('desturl'));
		} else {
			echo _MSG_ACTIVATION_SENT;
		}
		
		exit;
	}

	// sends a new password 
	function forgotPassword() {
		$membername = trim(postVar('name'));

		if (!MEMBER::exists($membername))
			doError(_ERROR_NOSUCHMEMBER);
		$mem = MEMBER::createFromName($membername);

		if (!$mem->canLogin())
			doError(_ERROR_NOLOGON_NOACTIVATE);

		// check if e-mail address is correct
		if (!($mem->getEmail() == postVar('email')))
			doError(_ERROR_INCORRECTEMAIL);

		// send activation link
		$mem->sendActivationLink('forgot');

		if (postVar('url')) {
			redirect(postVar('url'));
		} else {
			echo _MSG_ACTIVATION_SENT;
		}
		
		exit;
	}

	// handle karma votes
	function doKarma($type) {
		global $itemid, $member, $CONF, $manager;

		// check if itemid exists
		if (!$manager->existsItem($itemid,0,0)) 
			doError(_ERROR_NOSUCHITEM);

		$blogid = getBlogIDFromItemID($itemid);
		$this->checkban($blogid);	

		$karma =& $manager->getKarma($itemid);

		// check if not already voted
		if (!$karma->isVoteAllowed(serverVar('REMOTE_ADDR'))) 
			doError(_ERROR_VOTEDBEFORE);		

		// check if item does allow voting
		$item =& $manager->getItem($itemid,0,0);
		if ($item['closed'])
			doError(_ERROR_ITEMCLOSED);

		switch($type) {
			case 'pos': 
				$karma->votePositive();
				break;
			case 'neg':
				$karma->voteNegative();
				break;
		}

		$blogid = getBlogIDFromItemID($itemid);
		$blog =& $manager->getBlog($blogid);

		// send email to notification address, if any
		if ($blog->getNotifyAddress() && $blog->notifyOnVote()) {

			$mailto_msg = _NOTIFY_KV_MSG . ' ' . $itemid . "\n";
			$mailto_msg .= $CONF['IndexURL'] . 'index.php?itemid=' . $itemid . "\n\n";
			if ($member->isLoggedIn()) {
				$mailto_msg .= _NOTIFY_MEMBER . ' ' . $member->getDisplayName() . ' (ID=' . $member->getID() . ")\n";
			}
			$mailto_msg .= _NOTIFY_IP . ' ' . serverVar('REMOTE_ADDR') . "\n";
			$mailto_msg .= _NOTIFY_HOST . ' ' .  gethostbyaddr(serverVar('REMOTE_ADDR'))  . "\n";
			$mailto_msg .= _NOTIFY_VOTE . "\n " . $type . "\n";
			$mailto_msg .= getMailFooter();

			$mailto_title = _NOTIFY_KV_TITLE . ' ' . strip_tags($item['title']) . ' (' . $itemid . ')';

			$frommail = $member->getNotifyFromMailAddress();

			$notify = new NOTIFICATION($blog->getNotifyAddress());
			$notify->notify($mailto_title, $mailto_msg , $frommail);
		}


		$refererUrl = serverVar('HTTP_REFERER');
		if ($refererUrl)
			$url = $refererUrl;
		else
			$url = $CONF['IndexURL'] . 'index.php?itemid=' . $itemid;

		redirect($url);	
		exit;
	}

	/**
	  * Calls a plugin action
	  */
	function callPlugin() {
		global $manager;

		$pluginName = 'NP_' . requestVar('name');
		$actionType = requestVar('type');

		// 1: check if plugin is installed
		if (!$manager->pluginInstalled($pluginName))
			doError(_ERROR_NOSUCHPLUGIN);

		// 2: call plugin
		$pluginObject =& $manager->getPlugin($pluginName);
		if ($pluginObject)
			$error = $pluginObject->doAction($actionType);
		else
			$error = 'Could not load plugin (see actionlog)';

		// doAction returns error when:
		// - an error occurred (duh)
		// - no actions are allowed (doAction is not implemented)
		if ($error)
			doError($error);
			
		exit;

	}

	function checkban($blogid) {
		// check if banned
		$ban = BAN::isBanned($blogid, serverVar('REMOTE_ADDR'));
		if ($ban != 0) {
			doError(_ERROR_BANNED1 . $ban->iprange . _ERROR_BANNED2 . $ban->message . _ERROR_BANNED3);
		}

	}


}

?>

[源代码打包下载]




网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...