/** * Apply currently set filters to the database query * @param JDatabaseQuery $query */ protected function applyFilters(JDatabaseQuery &$query) { if ($this->useEventsTable) { $query->from("events"); $query->leftJoin($this->table . " USING (" . $this->idField . ")"); } else { $query->from($this->table); } $query->where(array($this->startDateField . " >= '" . Event::timeToDate($this->startDate) . "'", $this->startDateField . " <= '" . Event::timeToDate($this->endDate) . "'")); if (!$this->showUnpublished) { $query->where($this->readyToPublishField); } // Filter by attendees if (!empty($this->filterAttendedBy)) { $query->join("INNER", "eventattendance ON eventattendance.eventtype=" . $this->eventTypeConst . " AND eventattendance.eventid=" . $this->table . "." . $this->idField); $query->where("eventattendance.user IN (" . implode(",", $this->filterAttendedBy) . ")"); } // This allows subclasses to modify the query. Normally they'll add extra WHERE clauses. $this->modifyQuery($query); }
public static function getProgrammeDates($includeSpecial = false, $start = null, $end = null) { $db = JFactory::getDbo(); $query = $db->getQuery(true); $query->select("WalkDate"); $query->from("walksprogramme"); $query->innerJoin("walkprogrammedates ON ProgrammeID = SequenceID"); if (!$includeSpecial) { $query->where("special = 0"); } if (!empty($start)) { $query->where("WalkDate >= '" . Event::timeToDate($start) . "'"); } if (!empty($end)) { $query->where("WalkDate <= '" . Event::timeToDate($end) . "'"); } $db->setQuery($query); $db->query(); return $db->loadColumn(0); }