public function recalcCounters() { $sql = "SELECT COUNT(*) \n FROM freelancer AS f \n WHERE f.is_active AND f.is_banned = '0' \n AND (f.cat_show = 't' OR f.is_pro = 'f') \n AND f.last_time > now() - '6 months'::interval\n "; $professions = new professions(); $prof_groups = $professions->getProfGroupIds(); foreach ($prof_groups as $group_id) { $profs_str = $professions->getProfIdForGroups($group_id, true); if ($profs_str) { $this->updateCounter($group_id, 0, $this->db->val($sql . " AND f.spec_orig IN ({$profs_str})")); } } $profs = $professions->getOriginProfsIds(); foreach ($profs as $prof_id) { $this->updateCounter(0, $prof_id, $this->db->val($sql . ' AND f.spec_orig = ?i', $prof_id)); } $this->updateCounter(0, 0, $this->db->val($sql)); }