/** * testLastChange method * * @return void */ public function testLastChange() { $someFile = new File(TMP . 'some_file.txt', false); $this->assertFalse($someFile->lastChange()); $this->assertTrue($someFile->open('r+')); $this->assertWithinRange(time(), $someFile->lastChange(), 2); $someFile->write('something'); $this->assertWithinRange(time(), $someFile->lastChange(), 2); $someFile->close(); $someFile->delete(); }
/** * Reads out a file, and echos the content to the client. * * @param File $file File object * @param array $range The range to read out of the file. * @return bool True is whole file is echoed successfully or false if client connection is lost in between */ protected function _sendFile($file, $range) { $compress = $this->outputCompressed(); $file->open('rb'); $end = $start = false; if ($range) { list($start, $end) = $range; } if ($start !== false) { $file->offset($start); } $bufferSize = 8192; set_time_limit(0); session_write_close(); while (!feof($file->handle)) { if (!$this->_isActive()) { $file->close(); return false; } $offset = $file->offset(); if ($end && $offset >= $end) { break; } if ($end && $offset + $bufferSize >= $end) { $bufferSize = $end - $offset + 1; } echo fread($file->handle, $bufferSize); if (!$compress) { $this->_flushBuffer(); } } $file->close(); return true; }
public function export() { $tableName = ''; $table = ''; //get form data if ($this->request->is('post')) { $table = $this->request->data['table']; } //process if ($this->request->is('post')) { $str = ''; if ($table == 0) { $tableName = 'tickets'; $ticketsTable = TableRegistry::get('tickets'); $query = $ticketsTable->find('all'); $str = "id" . "," . "theater_id" . "," . "section_id" . "," . "row_id" . "," . "seat_id" . "," . "status" . "," . "customer_id" . "," . "customer_name" . "," . "ticket_number" . "," . "performance_id" . "," . "season_id" . "," . "purchase_id\r\n"; $results = $query->toArray(); foreach ($results as $item) { $str .= $item->id . ","; $str .= $item->theater_id . ","; $str .= $item->section_id . ","; $str .= $item->row_id . ","; $str .= $item->seat_id . ","; $str .= $item->status . ","; $str .= $item->customer_id . ","; $str .= "\"" . $item->customer_name . "\"" . ","; $str .= $item->ticket_number . ","; $str .= $item->performance_id . ","; $str .= $item->season_id . ","; $str .= $item->purchase_id; $str .= "\r\n"; } } elseif ($table == 1) { $tableName = 'staffAssignments'; $staffAssignmentsTable = TableRegistry::get('staffAssignments'); $query = $staffAssignmentsTable->find('all'); $str = "id" . "," . "user_id" . "," . "theater_id" . "," . "access_level\r\n"; $results = $query->toArray(); foreach ($results as $item) { $str .= $item->id . ","; $str .= $item->user_id . ","; $str .= $item->theater_id . ","; $str .= $item->access_level; $str .= "\r\n"; } } elseif ($table == 2) { $tableName = 'users'; $ticketsTable = TableRegistry::get('users'); $query = $ticketsTable->find('all'); $str = "id" . "," . "name" . "," . "street" . "," . "city" . "," . "state" . "," . "zip" . "," . "phone_number" . "," . "email" . "," . "password" . "," . "is_super_admin" . "," . "date_created" . "," . "date_modified" . "," . "salt\r\n"; $results = $query->toArray(); foreach ($results as $item) { $str .= $item->id . ","; $str .= "\"" . $item->name . "\"" . ","; $str .= "\"" . $item->street . "\"" . ","; $str .= "\"" . $item->city . "\"" . ","; $str .= "\"" . $item->state . "\"" . ","; $str .= "\"" . $item->zip . "\"" . ","; $str .= "\"" . $item->phone_number . "\"" . ","; $str .= "\"" . $item->email . "\"" . ","; $str .= "\"" . $item->password . "\"" . ","; $str .= $item->is_super_admin . ","; $str .= "\"" . $item->date_created . "\"" . ","; $str .= "\"" . $item->date_modified . "\"" . ","; $str .= "\"" . $item->salt . "\""; $str .= "\r\n"; } } elseif ($table == 3) { $tableName = 'theaters'; $theatersTable = TableRegistry::get('theaters'); $query = $theatersTable->find('all'); $str = "id" . "," . "name" . "," . "sales_tax" . "," . "description" . "," . "location" . "," . "artwork\r\n"; $results = $query->toArray(); foreach ($results as $item) { $str .= $item->id . ","; $str .= "\"" . $item->name . "\"" . ","; $str .= $item->sales_tax . ","; $str .= "\"" . $item->description . "\"" . ","; $str .= "\"" . $item->location . "\"" . ","; $str .= "\"" . $item->artwork . "\""; $str .= "\r\n"; } } elseif ($table == 4) { $tableName = 'sections'; $sectionsTable = TableRegistry::get('sections'); $query = $sectionsTable->find('all'); $str = "id" . "," . "name" . "," . "code" . "," . "theater_id" . "," . "accessible_section" . "," . "front_text" . "," . "back_text\r\n"; $results = $query->toArray(); foreach ($results as $item) { $str .= $item->id . ","; $str .= "\"" . $item->name . "\"" . ","; $str .= "\"" . $item->code . "\"" . ","; $str .= $item->theater . ","; $str .= $item->accessible_section . ","; $str .= "\"" . $item->front_text . "\"" . ","; $str .= "\"" . $item->back_text . "\""; $str .= "\r\n"; } } elseif ($table == 5) { $tableName = 'seats'; $seatsTable = TableRegistry::get('seats'); $query = $seatsTable->find('all'); $str = "id" . "," . "theater" . "," . "section" . "," . "row" . "," . "code" . "," . "price\r\n"; $results = $query->toArray(); foreach ($results as $item) { $str .= $item->id . ","; $str .= $item->theater_id . ","; $str .= $item->section_id . ","; $str .= $item->row_id . ","; $str .= "\"" . $item->code . "\"" . ","; $str .= $item->price; $str .= "\r\n"; } } elseif ($table == 6) { $tableName = 'seasons'; $seasonsTable = TableRegistry::get('seasons'); $query = $seasonsTable->find('all'); $str = "id" . "," . "name" . "," . "start_time" . "," . "end_time" . "," . "ticket_price" . "," . "theater_id" . "\r\n"; $results = $query->toArray(); foreach ($results as $item) { $str .= $item->id . ","; $str .= "\"" . $item->name . "\"" . ","; $str .= $item->start_time . ","; $str .= $item->end_time . ","; $str .= $item->ticket_price . ","; $str .= $item->theater_id . ","; $str .= "\"" . $item->about . "\""; $str .= "\r\n"; } } elseif ($table == 7) { $tableName = 'rows'; $rowsTable = TableRegistry::get('rows'); $query = $rowsTable->find('all'); $str = "id" . "," . "theater" . "," . "section" . "," . "code\r\n"; $results = $query->toArray(); foreach ($results as $item) { $str .= $item->id . ","; $str .= $item->theater_id . ","; $str .= $item->section_id . ","; $str .= "\"" . $item->code . "\""; $str .= "\r\n"; } } elseif ($table == 8) { $tableName = 'plays'; $playsTable = TableRegistry::get('plays'); $query = $playsTable->find('all'); $str = "id" . "," . "name" . "," . "artwork" . "," . "description" . "," . "author\r\n"; $results = $query->toArray(); foreach ($results as $item) { $str .= $item->id . ","; $str .= "\"" . $item->name . "\"" . ","; $str .= "\"" . $item->artwork . "\"" . ","; $str .= "\"" . $item->description . "\"" . ","; $str .= "\"" . $item->author . "\"" . ","; $str .= "\"" . $item->shortname . "\""; $str .= "\r\n"; } } elseif ($table == 9) { $tableName = 'performances'; $ticketsTable = TableRegistry::get('performances'); $query = $ticketsTable->find('all'); $str = "id" . "," . "start_time" . "," . "open" . "," . "canceled" . "," . "play_id" . "," . "theater_id" . "," . "season_id\r\n"; $results = $query->toArray(); foreach ($results as $item) { $str .= $item->id . ","; $str .= $item->start_time . ","; $str .= $item->open . ","; $str .= $item->canceled . ","; $str .= $item->play_id . ","; $str .= $item->theater_id . ","; $str .= $item->season_id; $str .= "\r\n"; } } elseif ($table == 10) { $tableName = 'cart_items'; $ticketsTable = TableRegistry::get('cart_items'); $query = $ticketsTable->find('all'); $str = "id" . "," . "cart_id" . "," . "performance_id" . "," . "seat_id" . "," . "season_ticket\r\n"; $results = $query->toArray(); foreach ($results as $item) { $str .= $item->id . ","; $str .= "\"" . $item->cart_id . "\"" . ","; $str .= "\"" . $item->performance_id . "\"" . ","; $str .= $item->seat_id . ","; $str .= $item->season_id; $str .= "\r\n"; } } else { $this->Flash->error('Unexpected table value'); } $file = new File('tmp/', true); $file->open('w'); $file->append($str); $this->response->file($file->path, ['download' => true, 'name' => $tableName . '.csv']); } else { $this->set('file_status', 'Please submit a file.'); } }