Blame view

sources/apps/files/lib/app.php 2.73 KB
31b7f2792   Kload   Upgrade to ownclo...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
  <?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 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';
  			}
  			$fileinfo = array(
  				'id' => $meta['fileid'],
  				'mime' => $meta['mimetype'],
  				'size' => $meta['size'],
  				'etag' => $meta['etag'],
  				'directory' => $dir,
  				'name' => $newname,
  				'isPreviewAvailable' => \OC::$server->getPreviewManager()->isMimeSupported($meta['mimetype']),
  				'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;
  	}
  
  }