public function getSubscriptionID($userid, $usage = null, $primary = 1, $similar = false, $bias = null) { $query = 'SELECT `id`' . ' FROM #__acctexp_subscr' . ' WHERE `userid` = \'' . $userid . '\''; if (!empty($usage)) { $plan = new SubscriptionPlan(); $plan->load($usage); $allplans = array($usage, $plan->getSimilarPlans()); if (count($allplans) > 1) { foreach ($allplans as $apid => $pid) { $allplans[$apid] = '`plan` = \'' . $pid . '\''; } $query .= ' AND (' . implode(' OR ', $allplans) . ')'; } else { $query .= ' AND ' . '`plan` = \'' . $usage . '\''; } } if (!empty($primary)) { $query .= ' AND `primary` = \'1\''; } elseif (!is_null($primary)) { $query .= ' AND `primary` = \'0\''; } $this->_db->setQuery($query); if (!empty($bias)) { $subscriptionids = xJ::getDBArray($this->_db); if (in_array($bias, $subscriptionids)) { $subscriptionid = $bias; } } else { $subscriptionid = $this->_db->loadResult(); } if (!isset($subscriptionid)) { $subscriptionid = null; } if (empty($subscriptionid) && !$similar) { return $this->getSubscriptionID($userid, $usage, false, true, $bias); } return $subscriptionid; }