Ejemplo n.º 1
0
 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;
 }