【问题标题】:How to create joomla user group in joomla 2.5如何在 joomla 2.5 中创建 joomla 用户组
【发布时间】:2012-06-21 08:58:24
【问题描述】:

我正在 joomla 2.5 中开发我的组件,我需要通过我的代码动态创建用户组。

据我所知,joomla 在 2.5 中使用嵌套集来维护层次结构,因此当我们插入任何新条目时它可能会影响整个表。

joomla 是否提供任何可直接用于创建用户组的功能? 我们可以在其中指定父组,新组将在其下创建。

【问题讨论】:

    标签: php joomla nested-sets joomla2.5


    【解决方案1】:

    我自己解决了

    在我的情况下,我需要在特定组下插入子组(在下面的代码中称为 $parent_id)

    // get max right from all the child under parent id
        $child_query = "SELECT max(`rgt`) FROM `#__usergroups` WHERE `id` = ".$parent_id;
    $db->setQuery($child_query);
    $max_rgt = $db->loadResult();
    
    
    // calculate left and rgt for new entry
    $new_lft = $max_rgt;
    $new_rgt = $max_rgt + 1;
    
    // update lft and rgt of all entries having lft , rgt greater than max_rgt
    $upd1 = "UPDATE `#__usergroups` SET `lft` = `lft` + 2 WHERE `lft` > ".$max_rgt;
    $upd2 = "UPDATE `#__usergroups` SET `rgt` = `rgt` + 2 WHERE `rgt` >= ".$max_rgt;
    
    
    // insert new  child
    $insert = "INSERT INTO `#__usergroups`(`parent_id`,`lft`,`rgt`,`title`) VALUES(".$matrix_parent.",".$new_lft.",".$new_rgt.",'".$title."')";
    

    【讨论】:

      【解决方案2】:

      即使问题是一种旧的并且已经被接受,我也使用此代码在自定义组件中添加/更新/删除组

      为了获得com_users所需的模型,需要:

      JModelLegacy::addIncludePath( JPATH_ADMINISTRATOR . 
                      '/components/com_users/models/', 'UsersModel' );
      
      $groupModel = JModelLegacy::getInstance( 'Group', 'UsersModel' );
      

      在下面显示的代码生效之前。

      添加*/更新:

      $groupData = array(
          'title' => <new/old name of group here>,
          'parent_id' => <new/old id of parent group here>,
          'id' => <group id here> );
      
      $groupModel->save( $groupData );
      

      *如果组是新创建的,那么id 应该是0。保存后,可以通过数据库查询访问新 ID,因为知道组的名称/标题

      删除:

      $groupModel->delete( $groupIds );
      

      上面的整个代码包含在我的组件模型之一的save(), delete() 方法中。 由于 Joomla 将用户和组之间的连接存储在单独的 Map 表中,因此删除组时不会损坏用户数据。请注意,delete() 方法将一个 id 数组作为参数。

      【讨论】:

      • 你可以在保存后使用$id = $groupModel-&gt;getState('group.id');获取组ID
      猜你喜欢
      • 2014-10-03
      • 1970-01-01
      • 2012-05-15
      • 1970-01-01
      • 2013-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多