Exemplo n.º 1
0
 public static function getSingle($id)
 {
     $db = JFactory::getDBO();
     $query = $db->getQuery(true);
     $query->select("*");
     $query->from("walks");
     $query->where(array("ID = " . intval($id)));
     $db->setQuery($query);
     $res = $db->query();
     if ($db->getNumRows($res) == 1) {
         $walk = new Walk();
         $walk->fromDatabase($db->loadAssoc());
         return $walk;
     } else {
         return null;
     }
 }
 /**
  * Performs a search with the current parameters
  */
 public function search()
 {
     $db = JFactory::getDBO();
     $query = $db->getQuery(true);
     $query->select("*");
     $query->from("walks");
     if (isset($this->name)) {
         $query->where("walkName LIKE '" . $db->escape($this->name)) . "'";
     }
     if (isset($this->grade)) {
         // An array of grade combinations in database format. These are imploded with an OR.
         $grades = array();
         foreach ($this->grade as $grade) {
             $grades[] = "(difficultygrade = '" . $grade['difficulty'] . "' AND distancegrade = '" . $grade['distance'] . "')";
         }
         $query->where("(" . implode(" OR ", $grades) . ")");
     } else {
         if (isset($this->distanceGrade)) {
             $query->where("distancegrade IN (" . implode(",", $this->distanceGrade) . ")");
         }
         if (isset($this->difficultyGrade)) {
             $query->where("difficultygrade IN (" . implode(",", $this->difficultyGrade) . ")");
         }
     }
     // TODO: Length (miles)
     // Location (general area)
     if (isset($this->location)) {
         $query->where("location IN (" . implode(",", $this->location) . ")");
     }
     if (isset($this->isLinear)) {
         $query->where("islinear = " . $this->isLinear);
     }
     // TODO: Start grid ref
     // TODO: End grid ref
     if (isset($this->description)) {
         $query->where("routedescription LIKE '" . $db->escape($this->description)) . "'";
     }
     if (isset($this->information)) {
         $query->where("information LIKE '" . $db->escape($this->information)) . "'";
     }
     if (isset($this->dogFriendly)) {
         $query->where("dogfriendly = " . $this->dogFriendly);
     }
     if (isset($this->childFriendly)) {
         $query->where("childfriendly = " . $this->childFriendly);
     }
     // TODO: Transport by car/public
     if (isset($this->transportByCar)) {
         $query->where("transportbycar = " . $this->transportByCar);
     }
     if (isset($this->transportPublic)) {
         $query->where("transportpublic = " . $this->transportPublic);
     }
     if (isset($this->textPublic)) {
         $query->where("(walkname LIKE '%" . $db->escape($this->textPublic) . "%' OR routedescription LIKE '%" . $db->escape($this->textPublic) . "%')");
     }
     if (isset($this->textAll)) {
         $query->where("(walkname LIKE '%" . $db->escape($this->textAll) . "%' OR routedescription LIKE '%" . $db->escape($this->textAll) . "%' OR information LIKE '%" . $db->escape($this->textAll) . "%')");
     }
     // Suggested by
     if (isset($this->suggestedBy)) {
         $query->where("suggestedby = " . $this->suggestedBy->id);
     }
     // TODO: Sorting
     $db->setQuery($query);
     $cursor = $db->query();
     // TODO: Filtering
     // Return results as array of walks
     $results = array();
     $walkData = $db->loadAssocList();
     foreach ($walkData as $row) {
         $walk = new Walk();
         $walk->fromDatabase($row);
         $results[] = $walk;
     }
     return $results;
 }