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; }