public function test_valid_id_removeMissingFile() { $this->model->shouldReceive("file_exists")->with("/invalid/path/file-1")->once()->andReturn(false); $this->model->shouldReceive("delete_data_id")->with("file-hash-1-1")->once(); $ret = \service\files::valid_id($this->filedata, $this->config, $this->model, 505); $this->t->is($ret, false, "missing file should be removed"); }
public function create_multipaste() { $this->muser->require_access("basic"); $ids = $this->input->post("ids"); $userid = $this->muser->get_userid(); $limits = $this->muser->get_upload_id_limits(); return \service\files::create_multipaste($ids, $userid, $limits); }
public function test_verify_uploaded_files_uploadError() { $CI =& get_instance(); $a = array(array("name" => "foobar.txt", "type" => "text/plain", "tmp_name" => NULL, "error" => UPLOAD_ERR_NO_FILE, "size" => 1, "formfield" => "file[1]")); try { \service\files::verify_uploaded_files($a); $this->t->fail("verify should error"); } catch (\exceptions\UserInputException $e) { $data = $e->get_data(); $this->t->is($e->get_error_id(), "file/upload-verify", "verify should error"); $this->t->is_deeply(array('file[1]' => array('filename' => 'foobar.txt', 'formfield' => 'file[1]', 'message' => 'No file was uploaded')), $data, "expected data in exception"); } }
function cron() { if (!$this->input->is_cli_request()) { return; } $tarball_dir = $this->config->item("upload_path") . "/special/multipaste-tarballs"; if (is_dir($tarball_dir)) { $tarball_cache_time = $this->config->item("tarball_cache_time"); $it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($tarball_dir), RecursiveIteratorIterator::SELF_FIRST); foreach ($it as $file) { if ($file->isFile()) { if ($file->getMTime() < time() - $tarball_cache_time) { $lock = fopen($file, "r+"); flock($lock, LOCK_EX); unlink($file); flock($lock, LOCK_UN); } } } } $oldest_time = time() - $this->config->item('upload_max_age'); $oldest_session_time = time() - $this->config->item("sess_expiration"); $config = array("upload_max_age" => $this->config->item("upload_max_age"), "small_upload_size" => $this->config->item("small_upload_size"), "sess_expiration" => $this->config->item("sess_expiration")); $query = $this->db->select('file_storage_id storage_id, id, user, date')->from('files')->where("user", 0)->where("date <", $oldest_session_time)->get()->result_array(); foreach ($query as $row) { $row['data_id'] = $row['hash'] . '-' . $row['storage_id']; \service\files::valid_id($row, $config, $this->mfile, time()); } // 0 age disables age checks if ($this->config->item('upload_max_age') == 0) { return; } $query = $this->db->select('hash, files.id, user, files.date, file_storage.id storage_id')->from('files')->join('file_storage', "file_storage.id = files.file_storage_id")->where('files.date <', $oldest_time)->get()->result_array(); foreach ($query as $row) { $row['data_id'] = $row['hash'] . '-' . $row['storage_id']; \service\files::valid_id($row, $config, $this->mfile, time()); } }
public function valid_filedata($filedata) { return \service\files::valid_id($filedata, $this->id_validation_config, $this, time()); }