joomla 1.7 user registration customization issue

痴心易碎 提交于 2019-12-11 16:36:27

问题


-> 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:


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



来源:https://stackoverflow.com/questions/9357404/joomla-1-7-user-registration-customization-issue

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!