Skip to content

Commit

Permalink
Merge pull request #231 from davidsteinsland/feature/file_driver_perm…
Browse files Browse the repository at this point in the history
…issions

Added permissions for FlatFile
  • Loading branch information
henrikbjorn committed Mar 14, 2016
2 parents c5a6bbe + a723c77 commit 960007f
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 3 deletions.
18 changes: 15 additions & 3 deletions src/Driver/FlatFileDriver.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,16 @@ class FlatFileDriver implements \Bernard\Driver
{
private $baseDirectory;

private $permissions;

/**
* @param string $baseDirectory The base directory
* @param int $permissions Permissions to create the file with.
*/
public function __construct($baseDirectory)
public function __construct($baseDirectory, $permissions = 0740)
{
$this->baseDirectory = $baseDirectory;
$this->permissions = $permissions;
}

/**
Expand Down Expand Up @@ -59,7 +63,10 @@ public function createQueue($queueName)
*/
public function countMessages($queueName)
{
$iterator = new \RecursiveDirectoryIterator($this->getQueueDirectory($queueName), \FilesystemIterator::SKIP_DOTS);
$iterator = new \RecursiveDirectoryIterator(
$this->getQueueDirectory($queueName),
\FilesystemIterator::SKIP_DOTS
);
$iterator = new \RecursiveIteratorIterator($iterator);
$iterator = new \RegexIterator($iterator, '#\.job$#');

Expand All @@ -76,6 +83,7 @@ public function pushMessage($queueName, $message)
$filename = $this->getJobFilename($queueName);

file_put_contents($queueDir.DIRECTORY_SEPARATOR.$filename, $message);
chmod($queueDir . DIRECTORY_SEPARATOR . $filename, $this->permissions);
}

/**
Expand Down Expand Up @@ -150,7 +158,10 @@ public function peekQueue($queueName, $index = 0, $limit = 20)
*/
public function removeQueue($queueName)
{
$iterator = new \RecursiveDirectoryIterator($this->getQueueDirectory($queueName), \FilesystemIterator::SKIP_DOTS);
$iterator = new \RecursiveDirectoryIterator(
$this->getQueueDirectory($queueName),
\FilesystemIterator::SKIP_DOTS
);
$iterator = new \RecursiveIteratorIterator($iterator);
$iterator = new \RegexIterator($iterator, '#\.job$#');

Expand Down Expand Up @@ -191,6 +202,7 @@ private function getJobFilename($queueName)

if (!is_file($path)) {
touch($path);
chmod($path, $this->permissions);
}

$file = new \SplFileObject($path, 'r+');
Expand Down
7 changes: 7 additions & 0 deletions tests/Driver/FlatFileDriverTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,13 @@ public function testPushMessage()
$this->assertCount(1, glob($this->baseDir.'/send-newsletter/*.job'));
}

public function testPushMessagePermissions()
{
$this->driver = new FlatFileDriver($this->baseDir, 0770);
$this->testPushMessage();
$this->assertEquals('0770', substr(sprintf('%o', fileperms($this->baseDir . '/send-newsletter/1.job')), -4));
}

public function testPopMessage()
{
$this->driver->createQueue('send-newsletter');
Expand Down

0 comments on commit 960007f

Please sign in to comment.