public static function updateGid($user_id, $gid, $unblock = false, $action = 'add') { try { jimport('joomla.user.helper'); $user_id = (int) $user_id; if (!is_array($gid)) { $gid = explode(',', $gid); } JArrayHelper::toInteger($gid); // old version if (RSMembershipHelper::getConfig('replace_gid')) { JUserHelper::setUserGroups($user_id, $gid); } else { foreach ($gid as $group) { if ($action == 'add') { self::syslog('gid', "Adding user({$user_id}) to group({$group})"); JUserHelper::addUserToGroup($user_id, $group); } elseif ($action == 'remove') { self::syslog('gid', "Removing user({$user_id}) from group({$group})"); JUserHelper::removeUserFromGroup($user_id, $group); } } } if ($unblock) { RSMembership::enableUser($user_id); } } catch (Exception $e) { self::syslog('gid', "Error on changing group for user({$user_id}). Message: " . $e->getMessage()); } }
public function save($data) { $membership_fields = JRequest::getVar('rsm_membership_fields', array(), 'post', 'array'); $last_transaction_id = JRequest::getVar('last_transaction_id', '', 'post'); if (count($membership_fields)) { $transaction = JTable::getInstance('Transaction', 'RSMembershipTable'); $transaction->load($last_transaction_id); $user_data = $transaction->user_data ? (object) unserialize($transaction->user_data) : (object) array(); $user_data->membership_fields = $membership_fields; $transaction->user_data = serialize($user_data); if ($transaction->check()) { $transaction->store(); } } if (!isset($data['extras'])) { $data['extras'] = ''; } else { $data['extras'] = implode(',', $data['extras']); } // Updating ? Make sure we check the status if ($data['id']) { $current = $this->getTable(); $current->load($data['id']); if ($current->status == MEMBERSHIP_STATUS_ACTIVE && $data['status'] != MEMBERSHIP_STATUS_ACTIVE) { $data['notified'] = 0; } } // Handle dates $offset = JFactory::getApplication()->getCfg('offset'); $data['membership_start'] = JFactory::getDate($data['membership_start'], $offset)->toSql(); if (isset($data['unlimited'])) { $data['membership_end'] = JFactory::getDbo()->getNullDate(); unset($data['unlimited']); } else { $data['membership_end'] = JFactory::getDate($data['membership_end'], $offset)->toSql(); } $result = parent::save($data); // Save was successful if ($result) { $membership = JTable::getInstance('Membership', 'RSMembershipTable'); $membership->load($data['membership_id']); if ($data['status'] == MEMBERSHIP_STATUS_ACTIVE) { if ($membership->gid_enable) { RSMembership::updateGid($data['user_id'], $membership->gid_subscribe, true); } if ($membership->disable_expired_account) { RSMembership::enableUser($data['user_id']); } } elseif ($data['status'] == MEMBERSHIP_STATUS_EXPIRED || $data['status'] == MEMBERSHIP_STATUS_CANCELLED) { if ($membership->gid_enable) { RSMembership::updateGid($data['user_id'], $membership->gid_expire, false, 'remove'); } if ($membership->disable_expired_account) { RSMembership::disableUser($data['user_id']); } } } return $result; }
function updateGid($user_id, $gid, $unblock = false) { $db =& JFactory::getDBO(); $user_id = (int) $user_id; if (RSMembershipHelper::isJ16()) { jimport('joomla.user.helper'); if (!is_array($gid)) { $gid = explode(',', $gid); } JArrayHelper::toInteger($gid); JUserHelper::setUserGroups($user_id, $gid); } else { $gid = (int) $gid; // Update aro_id $db->setQuery("SELECT id FROM #__core_acl_aro WHERE `value`='" . $user_id . "' AND `section_value`='users'"); $db->setQuery("UPDATE #__core_acl_groups_aro_map SET `group_id`='" . $gid . "' WHERE `aro_id`='" . $db->loadResult() . "'"); $db->query(); // Update gid $db->setQuery("SELECT `name` FROM #__core_acl_aro_groups WHERE `id`='" . $gid . "'"); $db->setQuery("UPDATE #__users SET `gid`='" . $gid . "', `usertype`='" . $db->getEscaped($db->loadResult()) . "' WHERE `id`='" . $user_id . "'"); $db->query(); } if ($unblock) { RSMembership::enableUser($user_id); } }