. * */ namespace OCA\Files; class App { /** * @var \OC_L10N */ private $l10n; /** * @var \OC\Files\View */ private $view; public function __construct($view, $l10n) { $this->view = $view; $this->l10n = $l10n; } /** * 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" is denied if( $dir === '/' and $newname === 'Shared' ) { $result['data'] = array( 'message' => $this->l10n->t("Invalid folder name. Usage of 'Shared' is reserved.") ); // rename to existing file is denied } else if ($this->view->file_exists($dir . '/' . $newname)) { $result['data'] = array( 'message' => $this->l10n->t( "The name %s is already used in the folder %s. Please choose a different name.", array($newname, $dir)) ); } else if ( // rename to "." is denied $newname !== '.' and // rename of "/Shared" is denied !($dir === '/' and $oldname === 'Shared') and // THEN try to rename $this->view->rename($dir . '/' . $oldname, $dir . '/' . $newname) ) { // successful rename $meta = $this->view->getFileInfo($dir . '/' . $newname); if ($meta['mimetype'] === 'httpd/unix-directory') { $meta['type'] = 'dir'; } else { $meta['type'] = 'file'; } // these need to be set for determineIcon() $meta['isPreviewAvailable'] = \OC::$server->getPreviewManager()->isMimeSupported($meta['mimetype']); $meta['directory'] = $dir; $fileinfo = array( 'id' => $meta['fileid'], 'mime' => $meta['mimetype'], 'size' => $meta['size'], 'etag' => $meta['etag'], 'directory' => $meta['directory'], 'name' => $newname, 'isPreviewAvailable' => $meta['isPreviewAvailable'], 'icon' => \OCA\Files\Helper::determineIcon($meta) ); $result['success'] = true; $result['data'] = $fileinfo; } else { // rename failed $result['data'] = array( 'message' => $this->l10n->t('%s could not be renamed', array($oldname)) ); } return $result; } }