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->get_records(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->get_title()); $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->get_columns() as $col) { if ($col->get_name() == $this->point_col_name) { // Don't include the geometry column. continue; } $fktitle = $col->get_name() . \WordPress\Tabulate\DB\Record::FKTITLE; $value = $record->{$fktitle}(); $categories->addChild('gpxx:Categories', $col->get_title() . ": {$value}", 'gpxx'); $waypoint_extension->addChild('gpxx:' . $col->get_name(), $value, 'gpxx'); } } // Send to browser. $this->send_file('gpx', 'application/gpx+xml', $gpx->asXML()); }
protected function table_format(Table $table, $attrs) { $template = new Template('data_table.html'); $template->table = $table; $template->links = false; $template->record = $table->get_default_record(); $template->records = $table->get_records(false); return $template->render(); }
/** * Get a set of results for Foreign Key lookups. * @param \WordPress\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->reset_filters(); $table->add_filter($table->get_title_column(), $operator, $term); $out = array(); foreach ($table->get_records() as $record) { $out[$record->get_primary_key()] = array('value' => $record->get_primary_key(), 'label' => $record->get_title()); } return $out; }
/** * Get a list of records that reference this record in one of their columns. * * @param string|\WordPress\Tabulate\DB\Table $foreign_table * @param string|\WordPress\Tabulate\DB\Column $foreign_column * @param boolean $with_pagination Whether to only return the top N records. * @return \WordPress\Tabulate\DB\Record[] */ public function get_referencing_records($foreign_table, $foreign_column, $with_pagination = true) { $foreign_table->reset_filters(); $foreign_table->add_filter($foreign_column, '=', $this->get_primary_key(), true); return $foreign_table->get_records($with_pagination); }