public function GetServersByFilter($filter_args = array(), $ufilter_args = array())
{
$sql = "SELECT server_id FROM servers WHERE `farm_roleid`=?";
$args = array($this->ID);
foreach ((array) $filter_args as $k => $v) {
if (is_array($v)) {
foreach ($v as $vv) {
array_push($args, $vv);
}
$sql .= " AND `{$k}` IN (" . implode(",", array_fill(0, count($v), "?")) . ")";
} else {
$sql .= " AND `{$k}`=?";
array_push($args, $v);
}
}
foreach ((array) $ufilter_args as $k => $v) {
if (is_array($v)) {
foreach ($v as $vv) {
array_push($args, $vv);
}
$sql .= " AND `{$k}` NOT IN (" . implode(",", array_fill(0, count($v), "?")) . ")";
} else {
$sql .= " AND `{$k}`!=?";
array_push($args, $v);
}
}
$res = $this->DB->GetAll($sql, $args);
$retval = array();
foreach ((array) $res as $i) {
if ($i['server_id']) {
$retval[] = DBServer::LoadByID($i['server_id']);
}
}
return $retval;
}