| @@ -29,8 +29,8 @@ discard block | ||
| 29 | 29 | /** | 
| 30 | 30 | * @param $storageDirectory | 
| 31 | 31 | */ | 
| 32 | -    public function __construct( $storageDirectory ){ | |
| 33 | -        if( $storageDirectory{-1} !== '/' ){ | |
| 32 | +    public function __construct($storageDirectory) { | |
| 33 | +        if ($storageDirectory{-1} !== '/') { | |
| 34 | 34 | $storageDirectory .= '/'; | 
| 35 | 35 | } | 
| 36 | 36 | $this->storageDirectory = $storageDirectory; | 
| @@ -43,28 +43,28 @@ discard block | ||
| 43 | 43 | * @return string The path that $path was renamed to. | 
| 44 | 44 | * @throws \Exception | 
| 45 | 45 | */ | 
| 46 | -    public function moveToBin( $path ){ | |
| 46 | +    public function moveToBin($path) { | |
| 47 | 47 | |
| 48 | - $path = Path::canonicalize( $path ); | |
| 48 | + $path = Path::canonicalize($path); | |
| 49 | 49 | |
| 50 | - $this->pathSafetyCheck( $path ); | |
| 50 | + $this->pathSafetyCheck($path); | |
| 51 | 51 | |
| 52 | 52 |          $date = new \DateTimeImmutable("today"); | 
| 53 | 53 |          $dateStr = $date->format("c"); | 
| 54 | - $unique = ( (string) microtime(true) ) .'-'. ( (string) rand(0, 100000 ) ); | |
| 55 | - $basename = basename( $path ); | |
| 54 | + $unique = ((string) microtime(true)).'-'.((string) rand(0, 100000)); | |
| 55 | + $basename = basename($path); | |
| 56 | 56 | |
| 57 | - $todayDir = $this->storageDirectory . $dateStr; | |
| 57 | + $todayDir = $this->storageDirectory.$dateStr; | |
| 58 | 58 |          $finalRestingPlaceDir = "{$todayDir}/{$unique}"; | 
| 59 | 59 |          $finalRestingPlace = "{$finalRestingPlaceDir}/{$basename}"; | 
| 60 | 60 | |
| 61 | - $this->ensureDirUsable( $this->storageDirectory ); | |
| 62 | - $this->ensureDirUsable( $todayDir ); | |
| 63 | - $this->ensureDirUsable( $finalRestingPlaceDir ); | |
| 61 | + $this->ensureDirUsable($this->storageDirectory); | |
| 62 | + $this->ensureDirUsable($todayDir); | |
| 63 | + $this->ensureDirUsable($finalRestingPlaceDir); | |
| 64 | 64 | |
| 65 | 65 | // Would use PHP's rename but... it doesn't always work | 
| 66 | 66 | // when moving a directory to another device. | 
| 67 | -        exec( "mv {$path} {$finalRestingPlace}" ); | |
| 67 | +        exec("mv {$path} {$finalRestingPlace}"); | |
| 68 | 68 | return $finalRestingPlace; | 
| 69 | 69 | } | 
| 70 | 70 | |
| @@ -73,22 +73,22 @@ discard block | ||
| 73 | 73 | * @param $dir | 
| 74 | 74 | * @throws \Exception | 
| 75 | 75 | */ | 
| 76 | - private function ensureDirUsable( $dir ) | |
| 76 | + private function ensureDirUsable($dir) | |
| 77 | 77 |      { | 
| 78 | -        if (!file_exists( $dir )) { | |
| 79 | - mkdir( $dir ); | |
| 80 | -            if (!file_exists( $dir )) { | |
| 81 | -                throw new \Exception( "{$dir} does not exist and could not be created." ); | |
| 78 | +        if (!file_exists($dir)) { | |
| 79 | + mkdir($dir); | |
| 80 | +            if (!file_exists($dir)) { | |
| 81 | +                throw new \Exception("{$dir} does not exist and could not be created."); | |
| 82 | 82 | } | 
| 83 | 83 | } | 
| 84 | 84 | |
| 85 | - $this->pathSafetyCheck( $dir ); | |
| 85 | + $this->pathSafetyCheck($dir); | |
| 86 | 86 | |
| 87 | - $tmpFilename = tempnam( $dir, "___" ); | |
| 88 | -        if (!file_exists( $tmpFilename )) { | |
| 89 | -            throw new \Exception( "{$dir} does not appear to be writable." ); | |
| 87 | + $tmpFilename = tempnam($dir, "___"); | |
| 88 | +        if (!file_exists($tmpFilename)) { | |
| 89 | +            throw new \Exception("{$dir} does not appear to be writable."); | |
| 90 | 90 | } | 
| 91 | - unlink( $tmpFilename ); | |
| 91 | + unlink($tmpFilename); | |
| 92 | 92 | } | 
| 93 | 93 | |
| 94 | 94 | /** | 
| @@ -101,17 +101,17 @@ discard block | ||
| 101 | 101 | * | 
| 102 | 102 | * @param int $keepDays 1 = today (back to 00:00 from now). | 
| 103 | 103 | */ | 
| 104 | -    public function emptyBin( $keepDays = 1 ){ | |
| 104 | +    public function emptyBin($keepDays = 1) { | |
| 105 | 105 | |
| 106 | - $items = $this->readDir( $this->storageDirectory ); | |
| 106 | + $items = $this->readDir($this->storageDirectory); | |
| 107 | 107 | // Items exclude parent directory! | 
| 108 | - $toDelete = $this->generateDeletionList( $keepDays, $items ); | |
| 108 | + $toDelete = $this->generateDeletionList($keepDays, $items); | |
| 109 | 109 | |
| 110 | -        if( count( $toDelete ) > 0 ){ | |
| 111 | -            foreach( $toDelete as $itemToDelete){ | |
| 110 | +        if (count($toDelete) > 0) { | |
| 111 | +            foreach ($toDelete as $itemToDelete) { | |
| 112 | 112 |                  $fullPathToDelete = "{$this->storageDirectory}/{$itemToDelete}"; | 
| 113 | - $this->pathSafetyCheck( $fullPathToDelete ); | |
| 114 | -                exec( "rm -rf {$fullPathToDelete}" ); | |
| 113 | + $this->pathSafetyCheck($fullPathToDelete); | |
| 114 | +                exec("rm -rf {$fullPathToDelete}"); | |
| 115 | 115 | } | 
| 116 | 116 | } | 
| 117 | 117 | } | 
| @@ -123,13 +123,13 @@ discard block | ||
| 123 | 123 | * @return array | 
| 124 | 124 | * @throws \Exception | 
| 125 | 125 | */ | 
| 126 | - private function readDir( $directoryPath ) | |
| 126 | + private function readDir($directoryPath) | |
| 127 | 127 |      { | 
| 128 | 128 | $ret = []; | 
| 129 | - $this->ensureDirUsable( $directoryPath ); | |
| 130 | - $d = dir( $directoryPath ); | |
| 131 | -        while( false !== ( $entry = $d->read() ) ){ | |
| 132 | -            if( $entry === '.' || $entry === '..' ){ | |
| 129 | + $this->ensureDirUsable($directoryPath); | |
| 130 | + $d = dir($directoryPath); | |
| 131 | +        while (false !== ($entry = $d->read())) { | |
| 132 | +            if ($entry === '.' || $entry === '..') { | |
| 133 | 133 | continue; | 
| 134 | 134 | } | 
| 135 | 135 | $ret[] = $entry; | 
| @@ -146,28 +146,28 @@ discard block | ||
| 146 | 146 | * @param $items | 
| 147 | 147 | * @return array | 
| 148 | 148 | */ | 
| 149 | - private function generateDeletionList( $keepDays, $items ) | |
| 149 | + private function generateDeletionList($keepDays, $items) | |
| 150 | 150 |      { | 
| 151 | 151 | $keepStrings = []; | 
| 152 | -        if( $keepDays > 0 ){ | |
| 153 | -            for( $day = 0; $day < $keepDays; $day++ ){ | |
| 152 | +        if ($keepDays > 0) { | |
| 153 | +            for ($day = 0; $day < $keepDays; $day++) { | |
| 154 | 154 |                  $dateTmp = new \DateTimeImmutable("today"); | 
| 155 | -                $dateTmp = $dateTmp->modify( "-{$day} days" ); | |
| 155 | +                $dateTmp = $dateTmp->modify("-{$day} days"); | |
| 156 | 156 |                  $keepStrings[] = $dateTmp->format("c"); | 
| 157 | 157 | } | 
| 158 | 158 | } | 
| 159 | 159 | |
| 160 | 160 | $toDelete = []; | 
| 161 | -        foreach( $items as $entry ){ | |
| 161 | +        foreach ($items as $entry) { | |
| 162 | 162 | // In exclusion list? | 
| 163 | -            if( in_array( $entry, $keepStrings, true ) ){ | |
| 163 | +            if (in_array($entry, $keepStrings, true)) { | |
| 164 | 164 | continue; | 
| 165 | 165 | } | 
| 166 | 166 | // Is a valid ISO 8601 date? | 
| 167 | - if( preg_match( | |
| 167 | + if (preg_match( | |
| 168 | 168 |                      '/^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24\:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/', | 
| 169 | 169 | $entry) | 
| 170 | -            ){ | |
| 170 | +            ) { | |
| 171 | 171 | $toDelete[] = $entry; | 
| 172 | 172 | } | 
| 173 | 173 | } | 
| @@ -180,17 +180,17 @@ discard block | ||
| 180 | 180 | * @param $path | 
| 181 | 181 | * @throws \Exception | 
| 182 | 182 | */ | 
| 183 | - private function pathSafetyCheck( $path ) | |
| 183 | + private function pathSafetyCheck($path) | |
| 184 | 184 |      { | 
| 185 | 185 | // Duplication is intentional for belt-and-braces approach | 
| 186 | - $path = Path::canonicalize( $path ); | |
| 187 | -        if( ! file_exists( $path ) ){ | |
| 188 | -            throw new \Exception( "{$path} doesn't exist." ); | |
| 186 | + $path = Path::canonicalize($path); | |
| 187 | +        if (!file_exists($path)) { | |
| 188 | +            throw new \Exception("{$path} doesn't exist."); | |
| 189 | 189 | } | 
| 190 | -        if( is_dir( $path ) ){ | |
| 190 | +        if (is_dir($path)) { | |
| 191 | 191 | // Path::canonicalize() leaves no trailing slash. | 
| 192 | 192 | $path .= '/'; | 
| 193 | -            if( mb_substr_count( $path, '/', "UTF-8" ) < 3 ){ | |
| 193 | +            if (mb_substr_count($path, '/', "UTF-8") < 3) { | |
| 194 | 194 |                  throw new \Exception("Can't use root level directories as recycle area or move or delete them: {$path}"); | 
| 195 | 195 | } | 
| 196 | 196 | } |