예제 #1
0
파일: FileTest.php 프로젝트: Slayug/castor
 /**
  * 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();
 }
예제 #2
0
 /**
  * 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.');
     }
 }