/** * @testdox Point colums are exported as WKT. * @test */ public function point_wkt() { $this->wpdb->query('DROP TABLE IF EXISTS `point_export_test`'); $this->wpdb->query('CREATE TABLE `point_export_test` (' . ' id INT(10) AUTO_INCREMENT PRIMARY KEY,' . ' title VARCHAR(100) NOT NULL,' . ' geo_loc POINT NULL DEFAULT NULL' . ');'); $db = new WordPress\Tabulate\DB\Database($this->wpdb); $test_table = $db->get_table('point_export_test'); $test_table->save_record(array('title' => 'Test', 'geo_loc' => 'POINT(10.1 20.2)')); $filename = $test_table->export(); $this->assertFileExists($filename); $csv = '"ID","Title","Geo Loc"' . "\r\n" . '"1","Test","POINT(10.1 20.2)"' . "\r\n"; $this->assertEquals($csv, file_get_contents($filename)); // Check nullable. $test_table->save_record(array('title' => 'Test 2', 'geo_loc' => null)); $filename2 = $test_table->export(); $this->assertFileExists($filename2); $csv2 = '"ID","Title","Geo Loc"' . "\r\n" . '"1","Test","POINT(10.1 20.2)"' . "\r\n" . '"2","Test 2",""' . "\r\n"; $this->assertEquals($csv2, file_get_contents($filename2)); }
public function index() { $template = new \WordPress\Tabulate\Template('home.html'); $template->title = 'Tabulate'; $db = new \WordPress\Tabulate\DB\Database($this->wpdb); // Tables. $transient_name = TABULATE_SLUG . 'home_table_list'; $table_info = get_transient($transient_name); if (!$table_info) { $table_info = array(); foreach ($db->get_tables() as $table) { $table_info[] = array('title' => $table->get_title(), 'count' => $table->count_records(), 'url' => $table->get_url()); } set_transient($transient_name, $table_info, MINUTE_IN_SECONDS * 5); } $template->tables = $table_info; // Views. $template->views = $db->get_views(); // Reports. $reports_table = $db->get_table(\WordPress\Tabulate\DB\Reports::reports_table_name()); $template->reports = $reports_table ? $reports_table->get_records(false) : array(); return $template->render(); }
/** * @testdox It should be possible to provide a value for a (non-autoincrementing) PK. * @test */ public function timestamp_pk() { $this->wpdb->query('DROP TABLE IF EXISTS `provided_pk`'); $sql = "CREATE TABLE `provided_pk` ( " . " `code` VARCHAR(10) NOT NULL PRIMARY KEY, " . " `title` VARCHAR(100) " . ");"; $this->wpdb->query($sql); $db = new WordPress\Tabulate\DB\Database($this->wpdb); $tbl = $db->get_table('provided_pk'); $rec = $tbl->save_record(array('code' => 'TEST')); $this->assertEquals('TEST', $rec->get_primary_key()); }
public function delete($args) { $db = new \WordPress\Tabulate\DB\Database($this->wpdb); $table = $db->get_table($args['table']); $record_ident = isset($args['ident']) ? $args['ident'] : false; if (!$record_ident) { wp_redirect($table->get_url()); exit; } // Ask for confirmation. if (!isset($_POST['confirm_deletion'])) { $template = new \WordPress\Tabulate\Template('record/delete.html'); $template->table = $table; $template->record = $table->get_record($record_ident); return $template->render(); } // Delete the record. try { $this->wpdb->query('BEGIN'); $table->delete_record($record_ident); $this->wpdb->query('COMMIT'); } catch (\Exception $e) { $template = $this->get_template($table); $template->record = $table->get_record($record_ident); $template->add_notice('error', $e->getMessage()); return $template->render(); } wp_redirect($table->get_url()); exit; }