douye6812 2012-02-20 07:09
浏览 51

joomla 1.7用户注册定制问题

-> 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条回答 默认 最新

  • douci4026 2012-02-20 10:05
    关注

    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

    评论

报告相同问题?

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效