function onMembershipExpire($row) { if ($row->user_id) { $user = JFactory::getUser($row->user_id); $currentGroups = $user->get('groups') ; $plan = JTable::getInstance('Osmembership','Plan'); $plan->load($row->plan_id); $params = new JRegistry($plan->params); $groups = explode(',', $params->get('joomla_expried_group_ids')); $activePlans = OSMembershipHelper::getActiveMembershipPlans($row->user_id); for ($i = 0 , $n = count($activePlans); $i < $n; $i++) { if ($activePlans[$i] == $row->plan_id) { unset($activePlans[$i]); break; } } $db = JFactory::getDbo(); $query = $db->getQuery(true); $query->select('params') ->from('#__osmembership_plans') ->where('id IN ('.implode(',', $activePlans).')'); $db->setQuery($query); $rowPlans = $db->loadObjectList(); if (count($rowPlans)) { foreach ($rowPlans as $rowPlan) { $planParams = new JRegistry($rowPlan->params); $planGroups = explode(',', $planParams->get('joomla_group_ids')); $groups = array_diff($groups, $planGroups); } } $currentGroups = array_unique(array_diff($currentGroups, $groups)) ; //In case he doesn't belong to any group, assign him to new group if (count($currentGroups) == 0) { //Assign him to default Joomla group $params = JComponentHelper::getParams('com_users'); $currentGroups[] = $params->get('new_usertype', 2); } $user->set('groups', $currentGroups); $user->save(true); } }