Blame view

sources/apps/files_texteditor/ajax/savefile.php 2.44 KB
42e4f8d60   Kload   add all apps
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
  <?php
  /**
   * ownCloud - files_texteditor
   *
   * @author Tom Needham
   * @copyright 2013 Tom Needham tom@owncloud.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/>.
   *
   */
  // Check if we are a user
  OCP\JSON::checkLoggedIn();
  OCP\JSON::callCheck();
  
  // Get paramteres
  $filecontents = $_POST['filecontents'];
  $path = isset($_POST['path']) ? $_POST['path'] : '';
  $mtime = isset($_POST['mtime']) ? $_POST['mtime'] : '';
  
  if($path != '' && $mtime != '') {
  	// Get file mtime
  	$filemtime = \OC\Files\Filesystem::filemtime($path);
  	if($mtime != $filemtime) {
  		// Then the file has changed since opening
  		OCP\JSON::error();
  		OCP\Util::writeLog(
  			'files_texteditor',
  			"File: ".$path." modified since opening.",
  			OCP\Util::ERROR
  			);
  	} else {
  		// File same as when opened, save file
  		if(\OC\Files\Filesystem::isUpdatable($path)) {
  			$filecontents = iconv(mb_detect_encoding($filecontents), "UTF-8", $filecontents);
  			\OC\Files\Filesystem::file_put_contents($path, $filecontents);
  			// Clear statcache
  			clearstatcache();
  			// Get new mtime
  			$newmtime = \OC\Files\Filesystem::filemtime($path);
  			$newsize = \OC\Files\Filesystem::filesize($path);
  			OCP\JSON::success(array('data' => array('mtime' => $newmtime, 'size' => $newsize)));
  		} else {
  			// Not writeable!
  			OCP\JSON::error(array('data' => array( 'message' => 'Insufficient permissions')));
  			OCP\Util::writeLog(
  				'files_texteditor',
  				"User does not have permission to write to file: ".$path,
  				OCP\Util::ERROR
  				);
  		}
  	}
  } else if($path == '') {
  	OCP\JSON::error(array('data' => array( 'message' => 'File path not supplied')));
  	OCP\Util::writeLog('files_texteditor','No file path supplied', OCP\Util::ERROR);
  } else if($mtime == '') {
  	OCP\JSON::error(array('data' => array( 'message' => 'File mtime not supplied')));
  	OCP\Util::writeLog('files_texteditor','No file mtime supplied' ,OCP\Util::ERROR);
  }