Exemplo n.º 1
0
/**
 * Create a per-request directory and make sure it is writable.
 * This can only be used during the current request and will be tidied away
 * automatically afterwards.
 *
 * A new, unique directory is always created within the current request directory.
 *
 * @param bool $exceptiononerror throw exception if error encountered
 * @return string full path to directory if successful, false if not; may throw exception
 */
function make_request_directory($exceptiononerror = true)
{
    $basedir = get_request_storage_directory($exceptiononerror);
    return make_unique_writable_directory($basedir, $exceptiononerror);
}
Exemplo n.º 2
0
 public function test_make_request_directory()
 {
     // Every request directory should be unique.
     $firstdir = make_request_directory();
     $seconddir = make_request_directory();
     $thirddir = make_request_directory();
     $fourthdir = make_request_directory();
     $this->assertNotEquals($firstdir, $seconddir);
     $this->assertNotEquals($firstdir, $thirddir);
     $this->assertNotEquals($firstdir, $fourthdir);
     $this->assertNotEquals($seconddir, $thirddir);
     $this->assertNotEquals($seconddir, $fourthdir);
     $this->assertNotEquals($thirddir, $fourthdir);
     // They should also all be within the request storage directory.
     $requestdir = get_request_storage_directory();
     $this->assertEquals(0, strpos($firstdir, $requestdir));
     $this->assertEquals(0, strpos($seconddir, $requestdir));
     $this->assertEquals(0, strpos($thirddir, $requestdir));
     $this->assertEquals(0, strpos($fourthdir, $requestdir));
     // Removing the requestdir should mean that new request directories are still created successfully.
     remove_dir($requestdir);
     $this->assertFalse(file_exists($requestdir));
     $this->assertFalse(is_dir($requestdir));
     $fifthdir = make_request_directory();
     $this->assertNotEquals($firstdir, $fifthdir);
     $this->assertNotEquals($seconddir, $fifthdir);
     $this->assertNotEquals($thirddir, $fifthdir);
     $this->assertNotEquals($fourthdir, $fifthdir);
     $this->assertTrue(is_dir($fifthdir));
     $this->assertFalse(strpos($fifthdir, $requestdir));
     // And it should be within the new request directory.
     $newrequestdir = get_request_storage_directory();
     $this->assertEquals(0, strpos($fifthdir, $newrequestdir));
 }