basePath = $basePath; } public function checkPath($folder) { $folderPath = $this->basePath . $folder; if(!is_dir($folderPath)) { if(@mkdir($folderPath, 0774, true)) { return true; } else { # throw new \Exception("The folder '{$folder}' is missing and we could not create it. Please create the folder manually on your server."); return false; } } if(@is_writable($folderPath)) { return true; } else { # throw new \Exception("Please make the folder '{$folder}' writable."); return false; } return true; } public function checkFile($folder, $file) { if(!file_exists($this->basePath . $folder . DIRECTORY_SEPARATOR . $file)) { return false; } return true; } public function checkFileWithPath($filepath) { if(!file_exists($this->basePath . $filepath)) { return false; } return true; } public function writeFile($folder, $file, $data) { if($this->checkPath($folder)) { $filePath = $this->basePath . $folder . DIRECTORY_SEPARATOR . $file; $openFile = @fopen($filePath, "w"); if(!$openFile) { return false; } fwrite($openFile, $data); fclose($openFile); return true; } return false; } public function getFile($folderName, $fileName) { if($this->checkFile($folderName, $fileName)) { $fileContent = file_get_contents($folderName . DIRECTORY_SEPARATOR . $fileName); return $fileContent; } return false; } public function getFileWithPath($filepath) { if($this->checkFileWithPath($filepath)) { $fileContent = file_get_contents($filepath); return $fileContent; } return false; } public function deleteFileWithPath($filepath) { if($this->checkFileWithPath($filepath)) { unlink($this->basePath . $filepath); return true; } return false; } public function renameFile($folder, $oldname, $newname) { $oldFilePath = $this->basePath . $folder . DIRECTORY_SEPARATOR . $oldname; $newFilePath = $this->basePath . $folder . DIRECTORY_SEPARATOR . $newname; if(!file_exists($oldFilePath)) { return false; } if(@rename($oldFilePath, $newFilePath)) { return true; } return false; } public function moveElement($item, $folderPath, $index, $date = null) { $filetypes = array('md', 'txt', 'yaml'); # set new order as string $newOrder = ($index < 10) ? '0' . $index : $index; # create new path with foldername or filename but without file-type # $newPath = $this->basePath . 'content' . $folderPath . DIRECTORY_SEPARATOR . $newOrder . '-' . str_replace(" ", "-", $item->name); $newPath = $this->basePath . 'content' . $folderPath . DIRECTORY_SEPARATOR . $newOrder . '-' . $item->slug; if($item->elementType == 'folder') { $oldPath = $this->basePath . 'content' . $item->path; if(@rename($oldPath, $newPath)) { return true; } return false; } # create old path but without filetype $oldPath = substr($item->path, 0, strpos($item->path, ".")); $oldPath = $this->basePath . 'content' . $oldPath; $result = true; foreach($filetypes as $filetype) { $oldFilePath = $oldPath . '.' . $filetype; $newFilePath = $newPath . '.' . $filetype; #check if file with filetype exists and rename if($oldFilePath != $newFilePath && file_exists($oldFilePath)) { if(@rename($oldFilePath, $newFilePath)) { $result = $result; } else { $result = false; } } } return $result; } public function renamePost($oldPathWithoutType, $newPathWithoutType) { $filetypes = array('md', 'txt', 'yaml'); $oldPath = $this->basePath . 'content' . $oldPathWithoutType; $newPath = $this->basePath . 'content' . $newPathWithoutType; $result = true; foreach($filetypes as $filetype) { $oldFilePath = $oldPath . '.' . $filetype; $newFilePath = $newPath . '.' . $filetype; #check if file with filetype exists and rename if($oldFilePath != $newFilePath && file_exists($oldFilePath)) { if(@rename($oldFilePath, $newFilePath)) { $result = $result; } else { $result = false; } } } return $result; } }