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;
 }
Example #4
0
 /**
  * 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);
 }