diff options
author | Morris Jobke <morris.jobke@gmail.com> | 2013-05-06 20:45:04 +0200 |
---|---|---|
committer | Morris Jobke <morris.jobke@gmail.com> | 2013-05-12 11:47:22 +0200 |
commit | 1020d5c16c452145b25725b71bc3269dceddbe6e (patch) | |
tree | 66719f3e57de74dfb4d5819a1bac6ec7a0f495a2 | |
parent | 33b31931bddb6932c35f2ab9ec6bce9ea723509a (diff) | |
download | nextcloud-server-1020d5c16c452145b25725b71bc3269dceddbe6e.tar.gz nextcloud-server-1020d5c16c452145b25725b71bc3269dceddbe6e.zip |
[files] refactoring
-rw-r--r-- | apps/files/ajax/rename.php | 50 | ||||
-rw-r--r-- | apps/files/lib/files.php | 80 |
2 files changed, 111 insertions, 19 deletions
diff --git a/apps/files/ajax/rename.php b/apps/files/ajax/rename.php index a0785f52df2..641655a9ea5 100644 --- a/apps/files/ajax/rename.php +++ b/apps/files/ajax/rename.php @@ -1,28 +1,40 @@ <?php -// Init owncloud +/** + * ownCloud - Core + * + * @author Morris Jobke + * @copyright 2013 Morris Jobke morris.jobke@gmail.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * License as published by the Free Software Foundation; either + * version 3 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + * + */ +require_once realpath( dirname(__FILE__).'/../lib/files.php' ); OCP\JSON::checkLoggedIn(); OCP\JSON::callCheck(); -// Get data -$dir = stripslashes($_GET["dir"]); -$file = stripslashes($_GET["file"]); -$newname = stripslashes($_GET["newname"]); +$files = new \OCA\Files\Files(); +$result = $files->rename( + stripslashes($_GET["dir"]), + stripslashes($_GET["file"]), + stripslashes($_GET["newname"]) +); -$l = OC_L10N::get('files'); - -if ( $newname !== '.' and ($dir !== '/' || $file !== 'Shared') and ($dir !== '/' || $newname !== 'Shared') ) { - $targetFile = \OC\Files\Filesystem::normalizePath($dir . '/' . $newname); - $sourceFile = \OC\Files\Filesystem::normalizePath($dir . '/' . $file); - if(\OC\Files\Filesystem::rename($sourceFile, $targetFile)) { - OCP\JSON::success(array("data" => array( "dir" => $dir, "file" => $file, "newname" => $newname ))); - } else { - OCP\JSON::error(array("data" => array( "message" => $l->t("Unable to rename file") ))); - } -} elseif( $dir === '/' and $newname === 'Shared' ) { - OCP\JSON::error(array("data" => array( "message" => $l->t("Invalid folder name. Usage of 'Shared' is reserved by Owncloud") ))); +if($result['success'] === true){ + OCP\JSON::success(array('data' => $result['data'])); } else { - OCP\JSON::error(array("data" => array( "message" => $l->t("Unable to rename file") ))); -} + OCP\JSON::error(array('data' => $result['data'])); +}
\ No newline at end of file diff --git a/apps/files/lib/files.php b/apps/files/lib/files.php new file mode 100644 index 00000000000..3cbeb384794 --- /dev/null +++ b/apps/files/lib/files.php @@ -0,0 +1,80 @@ +<?php + +/** + * ownCloud - Core + * + * @author Morris Jobke + * @copyright 2013 Morris Jobke morris.jobke@gmail.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * License as published by the Free Software Foundation; either + * version 3 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + * + */ + + +namespace OCA\Files; + +class Files { + private $l10n; + + public function __construct() { + $this->l10n = \OC_L10n::get('files'); + } + + /** + * rename a file + * + * @param string $dir + * @param string $oldname + * @param string $newname + * @return array + */ + public function rename($dir, $oldname, $newname) { + $result = array( + 'success' => false, + 'data' => NULL + ); + + // rename to "Shared" in root directory denied + if( $dir === '/' and $newname === 'Shared' ) { + $result['data'] = array( + 'message' => $this->t("Invalid folder name. Usage of 'Shared' is reserved by Owncloud") + ); + } elseif( + // rename to "." is denied + $newname !== '.' and + // rename to "Shared" inside the root directory is denied + !($dir === '/' and $file === 'Shared') and + // THEN try to rename + \OC\Files\Filesystem::rename( + \OC\Files\Filesystem::normalizePath($dir . '/' . $oldname), + \OC\Files\Filesystem::normalizePath($dir . '/' . $newname) + ) + ) { + // successful rename + $result['success'] = true; + $result['data'] = array( + 'dir' => $dir, + 'file' => $oldname, + 'newname' => $newname + ); + } else { + // rename failed + $result['data'] = array( + 'message' => $this->t('Unable to rename file') + ); + } + return $result; + } + +}
\ No newline at end of file |