Application->GetVar('g'); if (!$new_groups) { return ; } $new_groups = array_keys($new_groups); // don't insert duplicate group membership record $user_id = $this->Application->GetVar('u_id'); $table_name = $this->Application->GetTempName(TABLE_PREFIX.'UserGroup', 'prefix:u'); $sql = 'SELECT GroupId FROM '.$table_name.' WHERE PortalUserId = '.$user_id; $old_groups = $this->Conn->GetCol($sql); $new_groups = array_diff($new_groups, $old_groups); if ($new_groups) { foreach ($new_groups as $new_group) { $fields_hash = Array ( 'GroupId' => $new_group, 'PortalUserId' => $user_id, 'PrimaryGroup' => 0, ); $this->Conn->doInsert($fields_hash, $table_name); } } $event->SetRedirectParam('opener', 'u'); } /** * Sets primary group for user (in editing only) * * @param kEvent $event */ function OnSetPrimary(&$event) { $ids = $this->StoreSelectedIDs($event); if ($ids) { $id = array_shift($ids); $object =& $event->getObject( Array('skip_autoload' => true) ); $user_id = $this->Application->GetVar('u_id'); $sql = 'UPDATE '.$object->TableName.' SET PrimaryGroup = 0 WHERE PortalUserId = '.$user_id; $this->Conn->Query($sql); $sql = 'UPDATE '.$object->TableName.' SET PrimaryGroup = 1 WHERE '.$object->IDField.' = '.$id.' AND PortalUserId = '.$user_id; $this->Conn->Query($sql); } $this->clearSelectedIDs($event); } /** * Don't allow primary group record deleting * * @param kEvent $event */ function customProcessing(&$event, $type) { if ($event->Name == 'OnMassDelete' && $type == 'before') { $ids = $event->getEventParam('ids'); if ($ids) { $object =& $event->getObject( Array('skip_autoload' => true) ); $user_id = $this->Application->GetVar('u_id'); $sql = 'SELECT '.$object->IDField.' FROM '.$object->TableName.' WHERE '.$object->IDField.' IN ('.implode(',', $ids).') AND PortalUserId = '.$user_id.' AND PrimaryGroup = 0'; $ids = $this->Conn->GetCol($sql); $event->setEventParam('ids', $ids); } } } } ?>