private function splitBy($sp_table, $table, $column, $constraints) { $num_label_sql = isset($column) ? mysql_real_escape_string($column) : $table; $sp_table_sql = mysql_real_escape_string($sp_table) . '_table'; $label_sql = mysql_real_escape_string($sp_table) . '_name'; $real_table_sql = mysql_real_escape_string($table) . '_table'; $query = ' SELECT `' . $sp_table_sql . '`.`name` AS `' . $label_sql . '`, COUNT(*) AS `' . $num_label_sql . '` FROM `' . $real_table_sql . '`, `' . $sp_table_sql . '` WHERE `' . $real_table_sql . '`.`' . mysql_real_escape_string($sp_table) . '` = `' . $sp_table_sql . '`.`id` '; $query = isset($column) ? ApiBase::notEmpty($query . 'AND ', $column) : $query; $query = isset($constraints) ? ApiBase::addConstraints($query . 'AND ', $constraints) : $query; $query .= 'GROUP BY `' . $label_sql . '` ORDER BY `' . $label_sql . '` ASC '; try { $response = ApiBase::doQuery($query); } catch (Exception $e) { throw $e; } foreach ($response as $r) { $mod_resp[] = array($sp_table => $r); } return $mod_resp; }