public function gpx($args) { $this->set_up($args); // Create GPX. $gpx = new \SimpleXMLElement('<gpx xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3" />'); $gpx->addAttribute('version', '1.1'); $gpx->addAttribute('xmlns', 'http://www.topografix.com/GPX/1/1'); $gpx->addAttribute('creator', $this->byline()); foreach ($this->table->getRecords(false) as $record) { $geom = \geoPHP::load($record->{$this->point_col_name}()); $wpt = $gpx->addChild('wpt'); $wpt->addAttribute('lat', $geom->getY()); $wpt->addAttribute('lon', $geom->getX()); $wpt->addChild('name', $record->getTitle()); $wpt->addChild('description', htmlentities('<a href="' . $record->get_url() . '">View record.</a>')); $extensions = $wpt->addChild('extensions'); $waypoint_extension = $extensions->addChild('gpxx:WaypointExtension', '', 'gpxx'); $categories = $waypoint_extension->addChild('gpxx:Categories', '', 'gpxx'); foreach ($this->table->getColumns() as $col) { if ($col->getName() == $this->point_col_name) { // Don't include the geometry column. continue; } $fktitle = $col->getName() . \Tabulate\DB\Record::FKTITLE; $value = $record->{$fktitle}(); $categories->addChild('gpxx:Categories', $col->getTitle() . ": {$value}", 'gpxx'); $waypoint_extension->addChild('gpxx:' . $col->getName(), $value, 'gpxx'); } } // Send to browser. $this->send_file('gpx', 'application/gpx+xml', $gpx->asXML()); }
/** * Get a list of records that reference this record in one of their columns. * * @param string|\Tabulate\DB\Table $foreignTable * @param string|\Tabulate\DB\Column $foreignColumn * @param boolean $withPagination Whether to only return the top N records. * @return \Tabulate\DB\Record[] */ public function getReferencingRecords($foreignTable, $foreignColumn, $withPagination = true) { $foreignTable->resetFilters(); $foreignTable->addFilter($foreignColumn, '=', $this->getPrimaryKey(), true); return $foreignTable->getRecords($withPagination); }
/** * Get a set of results for Foreign Key lookups. * @param \Tabulate\DB\Table $table The table to search. * @param string $operator One of the permitted filter operators. * @param string $term The search term. * @return string[] */ protected function foreign_key_values_build($table, $operator, $term) { $table->resetFilters(); $table->addFilter($table->getTitleColumn(), $operator, $term); $out = array(); foreach ($table->getRecords() as $record) { $out[$record->getPrimaryKey()] = array('value' => $record->getPrimaryKey(), 'label' => $record->getTitle()); } return $out; }