用户注册



邮箱:

密码:

用户登录


邮箱:

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

发表随想


还能输入: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、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

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

加载中,请稍后...