/** * Uploaded resumes and jobs statistics * @return array */ public static function getListingsInfo() { $res = array(); // условие запроса сформируем в зависимости от требуемого периода $periods = array("Today" => "`l`.`activation_date` >= CURDATE()", "This Week" => "`l`.`activation_date` >= FROM_DAYS(TO_DAYS(CURDATE()) - WEEKDAY(CURDATE()))", "This Month" => "`l`.`activation_date` >= FROM_DAYS(TO_DAYS(CURDATE()) - DAYOFMONTH(CURDATE()) + 1)"); $listingTypes = SJB_ListingTypeManager::createTemplateStructureForListingTypes(); // условие в запрос будем подставлять заранее заготовленное из массива // nwy: разбил подсчет общего количества и подсчет активных листингов на 2 запроса // так быстрее при большом количестве листингов foreach ($listingTypes as $listingType) { foreach ($periods as $key => $value) { $res[$listingType["id"]]["periods"][$key]['count'] = SJB_DB::queryValue("\n\t\t\t\t\tselect count(*)\n\t\t\t\t\tfrom listings l\n\t\t\t\t\twhere {$value} and l.listing_type_sid = {$listingType["sid"]}"); $res[$listingType["id"]]["periods"][$key]['active'] = SJB_DB::queryValue("\n\t\t\t\t\tselect count(*)\n\t\t\t\t\tfrom listings l\n\t\t\t\t\twhere {$value} and l.listing_type_sid = {$listingType["sid"]} and `l`.`active` = 1"); } $res[$listingType["id"]]["total"]['count'] = SJB_DB::queryValue("\n\t\t\t\tselect\tcount(*)\n\t\t\t\tfrom `listings` `l`\n\t\t\t\twhere `l`.`listing_type_sid` = {$listingType["sid"]}"); $res[$listingType["id"]]["total"]['active'] = SJB_DB::queryValue("\n\t\t\t\tselect\tcount(*)\n\t\t\t\tfrom `listings` `l`\n\t\t\t\twhere `l`.`listing_type_sid` = {$listingType["sid"]} and `l`.`active` = 1"); $res[$listingType["id"]]["approveInfo"] = SJB_ListingManager::getListingsApproveInfo($listingType["sid"]); } return $res; }