コード例 #1
0
ファイル: MapController.php プロジェクト: tabulate/tabulate3
 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());
 }
コード例 #2
0
ファイル: Record.php プロジェクト: tabulate/tabulate3
 /**
  * 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);
 }
コード例 #3
0
ファイル: ApiController.php プロジェクト: tabulate/tabulate3
 /**
  * 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;
 }