| @@ 179-209 (lines=31) @@ | ||
| 176 | * |
|
| 177 | * @return bool true on success |
|
| 178 | */ |
|
| 179 | public static function rrmdir($src) |
|
| 180 | { |
|
| 181 | // Only continue if user is a 'global' Admin |
|
| 182 | if (!($GLOBALS['xoopsUser'] instanceof \XoopsUser) || !$GLOBALS['xoopsUser']->isAdmin()) { |
|
| 183 | return false; |
|
| 184 | } |
|
| 185 | ||
| 186 | // If source is not a directory stop processing |
|
| 187 | if (!is_dir($src)) { |
|
| 188 | return false; |
|
| 189 | } |
|
| 190 | ||
| 191 | $success = true; |
|
| 192 | ||
| 193 | // Open the source directory to read in files |
|
| 194 | $iterator = new \DirectoryIterator($src); |
|
| 195 | foreach ($iterator as $fObj) { |
|
| 196 | if ($fObj->isFile()) { |
|
| 197 | $filename = $fObj->getPathname(); |
|
| 198 | $fObj = null; // clear this iterator object to close the file |
|
| 199 | if (!unlink($filename)) { |
|
| 200 | return false; // couldn't delete the file |
|
| 201 | } |
|
| 202 | } elseif (!$fObj->isDot() && $fObj->isDir()) { |
|
| 203 | // Try recursively on directory |
|
| 204 | self::rrmdir($fObj->getPathname()); |
|
| 205 | } |
|
| 206 | } |
|
| 207 | $iterator = null; // clear iterator Obj to close file/directory |
|
| 208 | return rmdir($src); // remove the directory & return results |
|
| 209 | } |
|
| 210 | ||
| 211 | /** |
|
| 212 | * Recursively move files from one directory to another |
|
| @@ 147-175 (lines=29) @@ | ||
| 144 | * |
|
| 145 | * @return bool true on success |
|
| 146 | */ |
|
| 147 | public static function rrmdir($src) |
|
| 148 | { |
|
| 149 | // Only continue if user is a 'global' Admin |
|
| 150 | if (!($GLOBALS['xoopsUser'] instanceof \XoopsUser) || !$GLOBALS['xoopsUser']->isAdmin()) { |
|
| 151 | return false; |
|
| 152 | } |
|
| 153 | ||
| 154 | // If source is not a directory stop processing |
|
| 155 | if (!is_dir($src)) { |
|
| 156 | return false; |
|
| 157 | } |
|
| 158 | ||
| 159 | // Open the source directory to read in files |
|
| 160 | $iterator = new \DirectoryIterator($src); |
|
| 161 | foreach ($iterator as $fObj) { |
|
| 162 | if ($fObj->isFile()) { |
|
| 163 | $filename = $fObj->getPathname(); |
|
| 164 | $fObj = null; // clear this iterator object to close the file |
|
| 165 | if (!unlink($filename)) { |
|
| 166 | return false; // couldn't delete the file |
|
| 167 | } |
|
| 168 | } elseif (!$fObj->isDot() && $fObj->isDir()) { |
|
| 169 | // Try recursively on directory |
|
| 170 | static::rrmdir($fObj->getPathname()); |
|
| 171 | } |
|
| 172 | } |
|
| 173 | $iterator = null; // clear iterator Obj to close file/directory |
|
| 174 | return rmdir($src); // remove the directory & return results |
|
| 175 | } |
|
| 176 | ||
| 177 | /** |
|
| 178 | * Recursively move files from one directory to another |
|