joomla 1.7 user registration customization issue

2019-08-23 23:56发布

-> i am trying for new user registration customization.

-> for that i create form and hidden variable through call function from controller.

-> in controller save function i write this code but some inner function which not work in 1.7 so create problem here.

    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);
}
  • not insert record in table. please help me.

1条回答
我想做一个坏孩纸
2楼-- · 2019-08-24 00:43

I think you're right:
Joomla 1.5 ACL (Access Control Lists) is hierarchical: each user group inherits permissions from the groups below it.
In Joomla 1.7 ACL is not necessarily hierarchical. You can setup groups with whatever permissions you wish.

The difference between the ACL in Joomla 1.5 and 1.7 is not only in the behavior - but also in the implementation! which means that the authentication/registration mechanism will be implemented in different ways: http://www.youtube.com/watch?v=ZArgffnPUo4

查看更多
登录 后发表回答