private static function searchPostsBy($keys, $options, $echo_query = false) { require_once "query.php"; require_once "strings/strings.php"; $table = Query::getDBSchema()->getTable(DB::TABLE_POST); $loadComments = true; $wheres = array(); foreach ($keys as $key => $value) { if ($key == "name" || $key == "title") { $wheres[] = new WhereConstraint($table->getColumn(DB::POST_TITLE), Operator::LIKE, "%" . Filter::filterText($value) . "%"); } if ($key == "permalink") { $wheres[] = new WhereConstraint($table->getColumn(DB::POST_PERMALINK), Operator::EQUAL, intval($value)); } if ($key == "id") { $wheres[] = new WhereConstraint($table->getColumn(DB::POST_ID), Operator::EQUAL, intval($value)); } if ($key == "tag") { $wheres[] = new WhereConstraint($table->getColumn(DB::POST_TAGS), Operator::LIKE, "%" . Filter::filterText($value) . "%"); } if ($key == "day") { if (!is_numeric($value)) { $value = date_timestamp_get(date_create_from_format("Y-m-d", $value)); } $daystart = date("Y-m-d", $value); $dayend = date("Y-m-d", $value + 24 * 60 * 60); //echo "<br />" . $daystart . "-" . $dayend; //DEBUG $wheres[] = new WhereConstraint($table->getColumn(DB::POST_CREATION_DATE), Operator::GREATEROREQUAL, $daystart); $wheres[] = new WhereConstraint($table->getColumn(DB::POST_CREATION_DATE), Operator::LESSER, $dayend); } if ($key == "category") { $wheres[] = new WhereConstraint($table->getColumn(DB::POST_CATEGORIES), Operator::LIKE, "%" . Filter::filterText($value) . "%"); } if ($key == "title") { $wheres[] = new WhereConstraint($table->getColumn(DB::POST_TITLE), Operator::LIKE, "%" . Filter::filterText($value) . "%"); } if ($key == "content") { $wheres[] = new WhereConstraint($table->getColumn(DB::POST_CONTENT), Operator::LIKE, "%" . Filter::filterText($value) . "%"); } if ($key == "author") { $wheres[] = new WhereConstraint($table->getColumn(DB::POST_AUTHOR), Operator::EQUAL, intval($value)); } if ($key == "no_id") { $wheres[] = new WhereConstraint($table->getColumn(DB::POST_ID), Operator::NOTEQUAL, intval($value)); } if ($key == "type") { $wheres[] = new WhereConstraint($table->getColumn(DB::POST_TYPE), Operator::LIKE, "%" . Filter::filterText($value) . "%"); } if ($key == "loadComments") { $loadComments = $value == true; } } $newopt = array(); foreach ($options as $key => $value) { if ($key == "by") { if (!is_array($value)) { $value = array($value); } $newvalue = array(); foreach ($value as $column) { if (!is_a($column, "Column")) { $column = $table->getColumn($column); } if (!is_null($column)) { $newvalue[] = $column; } } $value = $newvalue; } $newopt[$key] = $value; } $db = new DBManager(); $db->execute($s = Query::generateSelectStm(array($table), array(), $wheres, $newopt)); if ($echo_query) { echo "<font color='red'>" . $s . "</font>"; } //DEBUG $posts = array(); while ($row = $db->fetch_result()) { require_once "dao/PostDao.php"; $postdao = new PostDao(); $postdao->setLoadComments($loadComments); $posts[] = $postdao->createFromDBRow($row); } return $posts; }