joomla1.7用户注册定制问题


joomla 1.7 user registration customization issue

->我正在尝试新的用户注册自定义。

->为此,我通过从控制器调用函数来创建窗体和隐藏变量。

->在控制器保存函数中,我写了这段代码,但有些内部函数在1.7中不起作用,所以在这里产生了问题。

    function register_save()
{
    global $mainframe;
    $db =& JFactory::getDBO();
    // Check for request forgeries
    JRequest::checkToken() or jexit( 'Invalid Token' );
    //clean request
    $post = JRequest::get( 'post' );
    $post['username']   = JRequest::getVar('username', '', 'post', 'username');
    $post['password']   = JRequest::getVar('password', '', 'post', 'string', JREQUEST_ALLOWRAW);
    $post['password2']  = JRequest::getVar('password2', '', 'post', 'string', JREQUEST_ALLOWRAW);
    // get the redirect
    $return = JURI::base();
    // do a password safety check
    if(strlen($post['password']) || strlen($post['password2'])) { // so that "0" can be used as password e.g.
        if($post['password'] != $post['password2']) {
            $msg    = JText::_('PASSWORD NOT MATCH');
            // something is wrong. we are redirecting back to edit form.
            // TODO: HTTP_REFERER should be replaced with a base64 encoded form field in a later release
            $return = str_replace(array('"', '<', '>', "'"), '', @$_SERVER['HTTP_REFERER']);
            if (empty($return) || !JURI::isInternal($return)) {
                $return = JURI::base();
            }
            $this->setRedirect($return, $msg, 'error');
            return false;
        }
    }
    // Get required system objects
    $user       = clone(JFactory::getUser());
    $pathway = JFactory::getApplication();
    //$pathway  =& $mainframe->getPathway();
    $config     =& JFactory::getConfig();
    //print_r($config)."<br>";
    $authorize  =& JFactory::getACL();
    //print_r($authorize)."<br>";                /// some mistake here
    $newUsertype = 'Registered';
    // Bind the post array to the user object
    if (!$user->bind( JRequest::get('post'), 'usertype' )) {
        JError::raiseError( 500, $user->getError());
    }
    // Set some initial user values
    $user->set('id', 0);
    $user->set('usertype', $newUsertype);
    $user->set('gid', $authorize->get_group_id( '', $newUsertype, 'ARO' ));
    $date =& JFactory::getDate();
    $user->set('registerDate', $date->toMySQL());
    // If user activation is turned on, we need to set the activation information
        jimport('joomla.user.helper');
        $user->set('activation', JUtility::getHash( JUserHelper::genRandomPassword()) );
        $user->set('block', '1');
    // If there was an error with registration, set the message and display form
    if ( !$user->save() )
    {
        JError::raiseWarning('', JText::_( $user->getError()));
        $this->register();
        return false;
    }
        $obj1 = new stdClass();
        $obj1->userid = $user->id;
        $obj1->points = 0;
        $obj1->posted_on = $date->toMySQL();
        $obj1->avatar   = '';                               
        $obj1->thumb    = '';
        $obj1->params   = 'notifyEmailSystem=1
                            privacyProfileView=0
                            privacyPhotoView=0
                            privacyFriendsView=0
                            privacyVideoView=1
                            notifyEmailMessage=1
                            notifyEmailApps=1
                            notifyWallComment=0';
        $db->insertObject('#__community_users', $obj1, 'userid');
        $extra_field = array(1=>2,2=>3,3=>4,4=>6,5=>7,6=>8,7=>9,8=>10,9=>11,10=>12,11=>14,12=>15,13=>16);
        $i = 1;
        $obj2 = new stdClass();
        while($extra_field[$i] != "")
        {
            $obj2->id = '';
            $obj2->user_id  = $user->id;
            $obj2->field_id  = $extra_field[$i];
            $obj2->value = '';
            $db->insertObject('#__community_fields_values', $obj2, 'id');
            $i++;
        }                   
     ////////// end of joomsocial customisation///////////////////////////  
    // Send registration confirmation mail
    $password = JRequest::getString('password', '', 'post', JREQUEST_ALLOWRAW);
    $password = preg_replace('/['x00-'x1F'x7F]/', '', $password); //Disallow control chars in the email
    UserControllerRegister::_sendMail($user, $password);
    // Everything went fine, set relevant message depending upon user activation state and display message
        $message  = JText::_( 'Your account has been created and an activation link has been sent to the e-mail address you entered. Note that you must activate the account by clicking on the activation link when you get the e-mail before you can login.' );
    $this->setRedirect('index.php', $message);
}
  • 不在表中插入记录。请帮帮我

我认为你是对的:
Joomla 1.5 ACL(访问控制列表)是分层的:每个用户组都从其下面的组继承权限。
在Joomla 1.7中,ACL不一定是分层的。您可以使用自己想要的任何权限设置组。

Joomla 1.5和1.7中ACL的区别不仅在于行为,还在于实现!这意味着认证/注册机制将以不同的方式实现:http://www.youtube.com/watch?v=ZArgffnPUo4