/** * Returns available offers, taking account of the invitation. * @param WpInvitation $invitation Optional invitation * @return array array of WpPlans * @todo also add plan available using an invitation */ public static function factoryAvailableForFirstSubscription($invitation = null) { $offers = array(); if ($invitation instanceof WpInvitation) { $invitatonOffers = $invitation->getCategory()->getPlans(); foreach ($invitatonOffers as $offer) { $offer->cleverAppendToArray($offers); } } $nb_wikiplaces = 0; $nb_wikiplace_pages = 0; $diskspace = 0; $dbr = wfGetDB(DB_SLAVE); $now = $dbr->addQuotes(wfTimestamp(TS_DB)); $conds = $dbr->makeList(array("wpp_start_date <= {$now}", "wpp_end_date > {$now}", "wpp_invitation_only" => 0, "wpp_nb_wikiplaces >= {$nb_wikiplaces}", "wpp_nb_wikiplace_pages >= {$nb_wikiplace_pages}", "wpp_diskspace >= {$diskspace}"), LIST_AND); $result = $dbr->select('wp_plan', '*', $conds, __METHOD__); foreach ($result as $row) { $offer = self::constructFromDatabaseRow($row); $offer->cleverAppendToArray($offers); } $dbr->freeResult($result); return $offers; }