Merge branch 'master' of github.com:owncloud/core into vcategories_db
Conflicts: lib/vcategories.php
This commit is contained in:
commit
1147dc9774
135 changed files with 950 additions and 1069 deletions
3
README
3
README
|
@ -4,6 +4,7 @@ A personal cloud which runs on your own server.
|
|||
http://ownCloud.org
|
||||
|
||||
Installation instructions: http://owncloud.org/support
|
||||
Contribution Guidelines: http://owncloud.org/dev/contribute/
|
||||
|
||||
Source code: https://github.com/owncloud
|
||||
Mailing list: https://mail.kde.org/mailman/listinfo/owncloud
|
||||
|
@ -16,4 +17,4 @@ Please submit translations via Transifex:
|
|||
https://www.transifex.com/projects/p/owncloud/
|
||||
|
||||
For more detailed information about translations:
|
||||
http://owncloud.org/dev/translation/
|
||||
http://owncloud.org/dev/translation/
|
||||
|
|
|
@ -44,7 +44,7 @@ if(OC_Filesystem::file_exists($base) and OC_Filesystem::is_dir($base)) {
|
|||
if(substr(strtolower($file), 0, $queryLen)==$query) {
|
||||
$item=$base.$file;
|
||||
if((!$dirOnly or OC_Filesystem::is_dir($item))) {
|
||||
$files[]=(object)array('id'=>$item,'label'=>$item,'name'=>$item);
|
||||
$files[]=(object)array('id'=>$item, 'label'=>$item, 'name'=>$item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ $file = stripslashes($_GET["file"]);
|
|||
$target = stripslashes(rawurldecode($_GET["target"]));
|
||||
|
||||
|
||||
if(OC_Filesystem::file_exists($target . '/' . $file)){
|
||||
if(OC_Filesystem::file_exists($target . '/' . $file)) {
|
||||
OCP\JSON::error(array("data" => array( "message" => "Could not move $file - File with this name already exists" )));
|
||||
exit;
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@ $totalSize=0;
|
|||
foreach($files['size'] as $size) {
|
||||
$totalSize+=$size;
|
||||
}
|
||||
if($totalSize>OC_Filesystem::free_space($dir)){
|
||||
if($totalSize>OC_Filesystem::free_space($dir)) {
|
||||
OCP\JSON::error(array("data" => array( "message" => "Not enough space available" )));
|
||||
exit();
|
||||
}
|
||||
|
@ -51,7 +51,7 @@ if(strpos($dir, '..') === false) {
|
|||
if(is_uploaded_file($files['tmp_name'][$i]) and OC_Filesystem::fromTmpFile($files['tmp_name'][$i], $target)) {
|
||||
$meta = OC_FileCache::get($target);
|
||||
$id = OC_FileCache::getId($target);
|
||||
$result[]=array( "status" => "success", 'mime'=>$meta['mimetype'],'size'=>$meta['size'], 'id'=>$id, 'name'=>basename($target));
|
||||
$result[]=array( "status" => "success", 'mime'=>$meta['mimetype'], 'size'=>$meta['size'], 'id'=>$id, 'name'=>basename($target));
|
||||
}
|
||||
}
|
||||
OCP\JSON::encodedPrint($result);
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
*/
|
||||
|
||||
// load needed apps
|
||||
$RUNTIME_APPTYPES=array('filesystem','authentication','logging');
|
||||
$RUNTIME_APPTYPES=array('filesystem', 'authentication', 'logging');
|
||||
OC_App::loadApps($RUNTIME_APPTYPES);
|
||||
if(!OC_User::isLoggedIn()) {
|
||||
if(!isset($_SERVER['PHP_AUTH_USER'])) {
|
||||
|
@ -36,7 +36,7 @@ if(!OC_User::isLoggedIn()) {
|
|||
}
|
||||
}
|
||||
|
||||
list($type,$file) = explode('/', substr($path_info, 1+strlen($service)+1), 2);
|
||||
list($type, $file) = explode('/', substr($path_info, 1+strlen($service)+1), 2);
|
||||
|
||||
if ($type != 'oc_chunked') {
|
||||
OC_Response::setStatus(OC_Response::STATUS_NOT_FOUND);
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
*
|
||||
*/
|
||||
// load needed apps
|
||||
$RUNTIME_APPTYPES=array('filesystem','authentication','logging');
|
||||
$RUNTIME_APPTYPES=array('filesystem', 'authentication', 'logging');
|
||||
|
||||
OC_App::loadApps($RUNTIME_APPTYPES);
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ $installedVersion=OCP\Config::getAppValue('files', 'installed_version');
|
|||
if (version_compare($installedVersion, '1.1.6', '<')) {
|
||||
$query = OC_DB::prepare( "SELECT `propertyname`, `propertypath`, `userid` FROM `*PREFIX*properties`" );
|
||||
$result = $query->execute();
|
||||
while( $row = $result->fetchRow()){
|
||||
while( $row = $result->fetchRow()) {
|
||||
if ( $row["propertyname"][0] != '{' ) {
|
||||
$query = OC_DB::prepare( 'UPDATE `*PREFIX*properties` SET `propertyname` = ? WHERE `userid` = ? AND `propertypath` = ?' );
|
||||
$query->execute( array( '{DAV:}' + $row["propertyname"], $row["userid"], $row["propertypath"] ));
|
||||
|
@ -39,7 +39,7 @@ foreach($filesToRemove as $file) {
|
|||
$success = OCP\Files::rmdirr($filepath);
|
||||
if($success === false) {
|
||||
//probably not sufficient privileges, give up and give a message.
|
||||
OCP\Util::writeLog('files','Could not clean /files/ directory. Please remove everything except webdav.php from ' . OC::$SERVERROOT . '/files/', OCP\Util::ERROR);
|
||||
OCP\Util::writeLog('files', 'Could not clean /files/ directory. Please remove everything except webdav.php from ' . OC::$SERVERROOT . '/files/', OCP\Util::ERROR);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -67,7 +67,7 @@ $breadcrumb = array();
|
|||
$pathtohere = '';
|
||||
foreach( explode( '/', $dir ) as $i ) {
|
||||
if( $i != '' ) {
|
||||
$pathtohere .= '/'.str_replace('+','%20', urlencode($i));
|
||||
$pathtohere .= '/'.str_replace('+', '%20', urlencode($i));
|
||||
$breadcrumb[] = array( 'dir' => $pathtohere, 'name' => $i );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?php OCP\Util::addscript('files','admin'); ?>
|
||||
<?php OCP\Util::addscript('files', 'admin'); ?>
|
||||
|
||||
<form name="filesForm" action='#' method='post'>
|
||||
<fieldset class="personalblock">
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<ul class="popup popupTop">
|
||||
<li style="background-image:url('<?php echo OCP\mimetype_icon('text/plain') ?>')" data-type='file'><p><?php echo $l->t('Text file');?></p></li>
|
||||
<li style="background-image:url('<?php echo OCP\mimetype_icon('dir') ?>')" data-type='folder'><p><?php echo $l->t('Folder');?></p></li>
|
||||
<li style="background-image:url('<?php echo OCP\image_path('core','actions/public.png') ?>')" data-type='web'><p><?php echo $l->t('From link');?></p></li>
|
||||
<li style="background-image:url('<?php echo OCP\image_path('core', 'actions/public.png') ?>')" data-type='web'><p><?php echo $l->t('From link');?></p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="file_upload_wrapper svg">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?php for($i=0; $i<count($_["breadcrumb"]); $i++):
|
||||
$crumb = $_["breadcrumb"][$i]; ?>
|
||||
<div class="crumb <?php if($i == count($_["breadcrumb"])-1) echo 'last';?> svg" data-dir='<?php echo urlencode($crumb["dir"]);?>' style='background-image:url("<?php echo OCP\image_path('core','breadcrumb.png');?>")'>
|
||||
<div class="crumb <?php if($i == count($_["breadcrumb"])-1) echo 'last';?> svg" data-dir='<?php echo urlencode($crumb["dir"]);?>' style='background-image:url("<?php echo OCP\image_path('core', 'breadcrumb.png');?>")'>
|
||||
<a href="<?php echo $_['baseURL'].urlencode($crumb["dir"]); ?>"><?php echo OCP\Util::sanitizeHTML($crumb["name"]); ?></a>
|
||||
</div>
|
||||
<?php endfor;?>
|
||||
|
|
|
@ -14,10 +14,10 @@
|
|||
$relative_modified_date = OCP\relative_modified_date($file['mtime']);
|
||||
$relative_date_color = round((time()-$file['mtime'])/60/60/24*14); // the older the file, the brighter the shade of grey; days*14
|
||||
if($relative_date_color>200) $relative_date_color = 200;
|
||||
$name = str_replace('+','%20', urlencode($file['name']));
|
||||
$name = str_replace('%2F','/', $name);
|
||||
$directory = str_replace('+','%20', urlencode($file['directory']));
|
||||
$directory = str_replace('%2F','/', $directory); ?>
|
||||
$name = str_replace('+', '%20', urlencode($file['name']));
|
||||
$name = str_replace('%2F', '/', $name);
|
||||
$directory = str_replace('+', '%20', urlencode($file['directory']));
|
||||
$directory = str_replace('%2F', '/', $directory); ?>
|
||||
<tr data-id="<?php echo $file['id']; ?>" data-file="<?php echo $name;?>" data-type="<?php echo ($file['type'] == 'dir')?'dir':'file'?>" data-mime="<?php echo $file['mimetype']?>" data-size='<?php echo $file['size'];?>' data-permissions='<?php echo $file['permissions']; ?>'>
|
||||
<td class="filename svg" style="background-image:url(<?php if($file['type'] == 'dir') echo OCP\mimetype_icon('dir'); else echo OCP\mimetype_icon($file['mimetype']); ?>)">
|
||||
<?php if(!isset($_['readonly']) || !$_['readonly']) { ?><input type="checkbox" /><?php } ?>
|
||||
|
|
|
@ -6,9 +6,9 @@ OC::$CLASSPATH['OC_FileProxy_Encryption'] = 'apps/files_encryption/lib/proxy.php
|
|||
|
||||
OC_FileProxy::register(new OC_FileProxy_Encryption());
|
||||
|
||||
OCP\Util::connectHook('OC_User','post_login','OC_Crypt','loginListener');
|
||||
OCP\Util::connectHook('OC_User', 'post_login', 'OC_Crypt', 'loginListener');
|
||||
|
||||
stream_wrapper_register('crypt','OC_CryptStream');
|
||||
stream_wrapper_register('crypt', 'OC_CryptStream');
|
||||
|
||||
if(!isset($_SESSION['enckey']) and OCP\User::isLoggedIn()) {//force the user to re-loggin if the encryption key isn't unlocked (happens when a user is logged in before the encryption app is enabled)
|
||||
OCP\User::logout();
|
||||
|
|
|
@ -80,7 +80,7 @@ class OC_Crypt {
|
|||
}
|
||||
}
|
||||
|
||||
public static function createkey($username,$passcode) {
|
||||
public static function createkey($username, $passcode) {
|
||||
// generate a random key
|
||||
$key=mt_rand(10000, 99999).mt_rand(10000, 99999).mt_rand(10000, 99999).mt_rand(10000, 99999);
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
/**
|
||||
* transparently encrypted filestream
|
||||
*
|
||||
* you can use it as wrapper around an existing stream by setting OC_CryptStream::$sourceStreams['foo']=array('path'=>$path,'stream'=>$stream)
|
||||
* you can use it as wrapper around an existing stream by setting OC_CryptStream::$sourceStreams['foo']=array('path'=>$path, 'stream'=>$stream)
|
||||
* and then fopen('crypt://streams/foo');
|
||||
*/
|
||||
|
||||
|
@ -123,11 +123,11 @@ class OC_CryptStream{
|
|||
$data=substr($data, 8192);
|
||||
}
|
||||
}
|
||||
$this->size=max($this->size,$currentPos+$length);
|
||||
$this->size=max($this->size, $currentPos+$length);
|
||||
return $length;
|
||||
}
|
||||
|
||||
public function stream_set_option($option,$arg1,$arg2) {
|
||||
public function stream_set_option($option, $arg1, $arg2) {
|
||||
switch($option) {
|
||||
case STREAM_OPTION_BLOCKING:
|
||||
stream_set_blocking($this->source, $arg1);
|
||||
|
|
|
@ -36,7 +36,7 @@ class OC_FileProxy_Encryption extends OC_FileProxy{
|
|||
*/
|
||||
private static function shouldEncrypt($path) {
|
||||
if(is_null(self::$enableEncryption)) {
|
||||
self::$enableEncryption=(OCP\Config::getAppValue('files_encryption','enable_encryption','true')=='true');
|
||||
self::$enableEncryption=(OCP\Config::getAppValue('files_encryption', 'enable_encryption', 'true')=='true');
|
||||
}
|
||||
if(!self::$enableEncryption) {
|
||||
return false;
|
||||
|
@ -59,7 +59,7 @@ class OC_FileProxy_Encryption extends OC_FileProxy{
|
|||
* @return bool
|
||||
*/
|
||||
private static function isEncrypted($path) {
|
||||
$metadata=OC_FileCache_Cached::get($path,'');
|
||||
$metadata=OC_FileCache_Cached::get($path, '');
|
||||
return isset($metadata['encrypted']) and (bool)$metadata['encrypted'];
|
||||
}
|
||||
|
||||
|
@ -68,14 +68,14 @@ class OC_FileProxy_Encryption extends OC_FileProxy{
|
|||
if (!is_resource($data)) {//stream put contents should have been converter to fopen
|
||||
$size=strlen($data);
|
||||
$data=OC_Crypt::blockEncrypt($data);
|
||||
OC_FileCache::put($path, array('encrypted'=>true,'size'=>$size),'');
|
||||
OC_FileCache::put($path, array('encrypted'=>true,'size'=>$size), '');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function postFile_get_contents($path,$data) {
|
||||
public function postFile_get_contents($path, $data) {
|
||||
if(self::isEncrypted($path)) {
|
||||
$cached=OC_FileCache_Cached::get($path,'');
|
||||
$cached=OC_FileCache_Cached::get($path, '');
|
||||
$data=OC_Crypt::blockDecrypt($data, '', $cached['size']);
|
||||
}
|
||||
return $data;
|
||||
|
@ -92,7 +92,7 @@ class OC_FileProxy_Encryption extends OC_FileProxy{
|
|||
}elseif(self::shouldEncrypt($path) and $meta['mode']!='r' and $meta['mode']!='rb') {
|
||||
if(OC_Filesystem::file_exists($path) and OC_Filesystem::filesize($path)>0) {
|
||||
//first encrypt the target file so we don't end up with a half encrypted file
|
||||
OCP\Util::writeLog('files_encryption','Decrypting '.$path.' before writing',OCP\Util::DEBUG);
|
||||
OCP\Util::writeLog('files_encryption', 'Decrypting '.$path.' before writing', OCP\Util::DEBUG);
|
||||
$tmp=fopen('php://temp');
|
||||
OCP\Files::streamCopy($result, $tmp);
|
||||
fclose($result);
|
||||
|
@ -106,14 +106,14 @@ class OC_FileProxy_Encryption extends OC_FileProxy{
|
|||
|
||||
public function postGetMimeType($path, $mime) {
|
||||
if(self::isEncrypted($path)) {
|
||||
$mime=OCP\Files::getMimeType('crypt://'.$path,'w');
|
||||
$mime=OCP\Files::getMimeType('crypt://'.$path, 'w');
|
||||
}
|
||||
return $mime;
|
||||
}
|
||||
|
||||
public function postStat($path, $data) {
|
||||
if(self::isEncrypted($path)) {
|
||||
$cached=OC_FileCache_Cached::get($path,'');
|
||||
$cached=OC_FileCache_Cached::get($path, '');
|
||||
$data['size']=$cached['size'];
|
||||
}
|
||||
return $data;
|
||||
|
@ -121,7 +121,7 @@ class OC_FileProxy_Encryption extends OC_FileProxy{
|
|||
|
||||
public function postFileSize($path, $size) {
|
||||
if(self::isEncrypted($path)) {
|
||||
$cached=OC_FileCache_Cached::get($path,'');
|
||||
$cached=OC_FileCache_Cached::get($path, '');
|
||||
return $cached['size'];
|
||||
}else{
|
||||
return $size;
|
||||
|
|
|
@ -8,11 +8,11 @@
|
|||
|
||||
$tmpl = new OCP\Template( 'files_encryption', 'settings');
|
||||
$blackList=explode(',', OCP\Config::getAppValue('files_encryption', 'type_blacklist', 'jpg,png,jpeg,avi,mpg,mpeg,mkv,mp3,oga,ogv,ogg'));
|
||||
$enabled=(OCP\Config::getAppValue('files_encryption','enable_encryption','true')=='true');
|
||||
$enabled=(OCP\Config::getAppValue('files_encryption', 'enable_encryption', 'true')=='true');
|
||||
$tmpl->assign('blacklist', $blackList);
|
||||
$tmpl->assign('encryption_enabled', $enabled);
|
||||
|
||||
OCP\Util::addscript('files_encryption','settings');
|
||||
OCP\Util::addscript('core','multiselect');
|
||||
OCP\Util::addscript('files_encryption', 'settings');
|
||||
OCP\Util::addscript('core', 'multiselect');
|
||||
|
||||
return $tmpl->fetchPage();
|
||||
|
|
|
@ -17,7 +17,7 @@ class Test_Encryption extends UnitTestCase {
|
|||
$this->assertNotEqual($encrypted, $source);
|
||||
$this->assertEqual($decrypted, $source);
|
||||
|
||||
$chunk=substr($source,0, 8192);
|
||||
$chunk=substr($source, 0, 8192);
|
||||
$encrypted=OC_Crypt::encrypt($chunk, $key);
|
||||
$this->assertEqual(strlen($chunk), strlen($encrypted));
|
||||
$decrypted=OC_Crypt::decrypt($encrypted, $key);
|
||||
|
@ -30,14 +30,14 @@ class Test_Encryption extends UnitTestCase {
|
|||
$this->assertEqual($decrypted, $source);
|
||||
|
||||
$tmpFileEncrypted=OCP\Files::tmpFile();
|
||||
OC_Crypt::encryptfile($file,$tmpFileEncrypted, $key);
|
||||
OC_Crypt::encryptfile($file, $tmpFileEncrypted, $key);
|
||||
$encrypted=file_get_contents($tmpFileEncrypted);
|
||||
$decrypted=OC_Crypt::blockDecrypt($encrypted, $key);
|
||||
$this->assertNotEqual($encrypted, $source);
|
||||
$this->assertEqual($decrypted, $source);
|
||||
|
||||
$tmpFileDecrypted=OCP\Files::tmpFile();
|
||||
OC_Crypt::decryptfile($tmpFileEncrypted,$tmpFileDecrypted, $key);
|
||||
OC_Crypt::decryptfile($tmpFileEncrypted, $tmpFileDecrypted, $key);
|
||||
$decrypted=file_get_contents($tmpFileDecrypted);
|
||||
$this->assertEqual($decrypted, $source);
|
||||
|
||||
|
|
|
@ -13,8 +13,8 @@ class Test_CryptProxy extends UnitTestCase {
|
|||
public function setUp() {
|
||||
$user=OC_User::getUser();
|
||||
|
||||
$this->oldConfig=OCP\Config::getAppValue('files_encryption','enable_encryption','true');
|
||||
OCP\Config::setAppValue('files_encryption','enable_encryption','true');
|
||||
$this->oldConfig=OCP\Config::getAppValue('files_encryption','enable_encryption', 'true');
|
||||
OCP\Config::setAppValue('files_encryption', 'enable_encryption', 'true');
|
||||
$this->oldKey=isset($_SESSION['enckey'])?$_SESSION['enckey']:null;
|
||||
|
||||
|
||||
|
@ -30,7 +30,7 @@ class Test_CryptProxy extends UnitTestCase {
|
|||
|
||||
//set up temporary storage
|
||||
OC_Filesystem::clearMounts();
|
||||
OC_Filesystem::mount('OC_Filestorage_Temporary', array(),'/');
|
||||
OC_Filesystem::mount('OC_Filestorage_Temporary', array(), '/');
|
||||
|
||||
OC_Filesystem::init('/'.$user.'/files');
|
||||
|
||||
|
|
|
@ -10,23 +10,23 @@ class Test_CryptStream extends UnitTestCase {
|
|||
private $tmpFiles=array();
|
||||
|
||||
function testStream() {
|
||||
$stream=$this->getStream('test1','w', strlen('foobar'));
|
||||
fwrite($stream,'foobar');
|
||||
$stream=$this->getStream('test1', 'w', strlen('foobar'));
|
||||
fwrite($stream, 'foobar');
|
||||
fclose($stream);
|
||||
|
||||
$stream=$this->getStream('test1','r', strlen('foobar'));
|
||||
$stream=$this->getStream('test1', 'r', strlen('foobar'));
|
||||
$data=fread($stream, 6);
|
||||
fclose($stream);
|
||||
$this->assertEqual('foobar', $data);
|
||||
|
||||
$file=OC::$SERVERROOT.'/3rdparty/MDB2.php';
|
||||
$source=fopen($file,'r');
|
||||
$source=fopen($file, 'r');
|
||||
$target=$this->getStream('test2', 'w', 0);
|
||||
OCP\Files::streamCopy($source, $target);
|
||||
fclose($target);
|
||||
fclose($source);
|
||||
|
||||
$stream=$this->getStream('test2','r', filesize($file));
|
||||
$stream=$this->getStream('test2', 'r', filesize($file));
|
||||
$data=stream_get_contents($stream);
|
||||
$original=file_get_contents($file);
|
||||
$this->assertEqual(strlen($original), strlen($data));
|
||||
|
@ -51,7 +51,7 @@ class Test_CryptStream extends UnitTestCase {
|
|||
$file=$this->tmpFiles[$id];
|
||||
}
|
||||
$stream=fopen($file, $mode);
|
||||
OC_CryptStream::$sourceStreams[$id]=array('path'=>'dummy'.$id,'stream'=>$stream,'size'=>$size);
|
||||
OC_CryptStream::$sourceStreams[$id]=array('path'=>'dummy'.$id, 'stream'=>$stream, 'size'=>$size);
|
||||
return fopen('crypt://streams/'.$id, $mode);
|
||||
}
|
||||
|
||||
|
@ -59,11 +59,11 @@ class Test_CryptStream extends UnitTestCase {
|
|||
$file=__DIR__.'/binary';
|
||||
$source=file_get_contents($file);
|
||||
|
||||
$stream=$this->getStream('test','w', strlen($source));
|
||||
$stream=$this->getStream('test', 'w', strlen($source));
|
||||
fwrite($stream, $source);
|
||||
fclose($stream);
|
||||
|
||||
$stream=$this->getStream('test','r', strlen($source));
|
||||
$stream=$this->getStream('test', 'r', strlen($source));
|
||||
$data=stream_get_contents($stream);
|
||||
fclose($stream);
|
||||
$this->assertEqual(strlen($data), strlen($source));
|
||||
|
@ -72,11 +72,11 @@ class Test_CryptStream extends UnitTestCase {
|
|||
$file=__DIR__.'/zeros';
|
||||
$source=file_get_contents($file);
|
||||
|
||||
$stream=$this->getStream('test2','w', strlen($source));
|
||||
$stream=$this->getStream('test2', 'w', strlen($source));
|
||||
fwrite($stream, $source);
|
||||
fclose($stream);
|
||||
|
||||
$stream=$this->getStream('test2','r', strlen($source));
|
||||
$stream=$this->getStream('test2', 'r', strlen($source));
|
||||
$data=stream_get_contents($stream);
|
||||
fclose($stream);
|
||||
$this->assertEqual(strlen($data), strlen($source));
|
||||
|
|
|
@ -53,7 +53,7 @@ class OC_FileStorage_FTP extends OC_FileStorage_StreamWrapper{
|
|||
case 'ab':
|
||||
//these are supported by the wrapper
|
||||
$context = stream_context_create(array('ftp' => array('overwrite' => true)));
|
||||
return fopen($this->constructUrl($path),$mode, false, $context);
|
||||
return fopen($this->constructUrl($path), $mode, false, $context);
|
||||
case 'r+':
|
||||
case 'w+':
|
||||
case 'wb+':
|
||||
|
@ -63,13 +63,13 @@ class OC_FileStorage_FTP extends OC_FileStorage_StreamWrapper{
|
|||
case 'c':
|
||||
case 'c+':
|
||||
//emulate these
|
||||
if(strrpos($path,'.')!==false) {
|
||||
$ext=substr($path, strrpos($path,'.'));
|
||||
if(strrpos($path, '.')!==false) {
|
||||
$ext=substr($path, strrpos($path, '.'));
|
||||
}else{
|
||||
$ext='';
|
||||
}
|
||||
$tmpFile=OCP\Files::tmpFile($ext);
|
||||
OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this,'writeBack');
|
||||
OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this, 'writeBack');
|
||||
if($this->file_exists($path)) {
|
||||
$this->getFile($path, $tmpFile);
|
||||
}
|
||||
|
|
|
@ -394,8 +394,8 @@ class OC_Filestorage_Google extends OC_Filestorage_Common {
|
|||
case 'x+':
|
||||
case 'c':
|
||||
case 'c+':
|
||||
if (strrpos($path,'.') !== false) {
|
||||
$ext = substr($path, strrpos($path,'.'));
|
||||
if (strrpos($path, '.') !== false) {
|
||||
$ext = substr($path, strrpos($path, '.'));
|
||||
} else {
|
||||
$ext = '';
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ class OC_FileStorage_SMB extends OC_FileStorage_StreamWrapper{
|
|||
if(!$this->root || $this->root[0]!='/') {
|
||||
$this->root='/'.$this->root;
|
||||
}
|
||||
if(substr($this->root,-1, 1)!='/') {
|
||||
if(substr($this->root, -1, 1)!='/') {
|
||||
$this->root.='/';
|
||||
}
|
||||
if(!$this->share || $this->share[0]!='/') {
|
||||
|
@ -41,7 +41,7 @@ class OC_FileStorage_SMB extends OC_FileStorage_StreamWrapper{
|
|||
}
|
||||
|
||||
public function constructUrl($path) {
|
||||
if(substr($path,-1)=='/') {
|
||||
if(substr($path, -1)=='/') {
|
||||
$path=substr($path, 0, -1);
|
||||
}
|
||||
return 'smb://'.$this->user.':'.$this->password.'@'.$this->host.$this->share.$this->root.$path;
|
||||
|
|
|
@ -60,8 +60,8 @@ abstract class OC_FileStorage_StreamWrapper extends OC_Filestorage_Common{
|
|||
|
||||
public function touch($path, $mtime=null) {
|
||||
if(is_null($mtime)) {
|
||||
$fh=$this->fopen($path,'a');
|
||||
fwrite($fh,'');
|
||||
$fh=$this->fopen($path, 'a');
|
||||
fwrite($fh, '');
|
||||
fclose($fh);
|
||||
}else{
|
||||
return false;//not supported
|
||||
|
|
|
@ -39,7 +39,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
|
|||
* @return string
|
||||
*/
|
||||
private function getContainerName($path) {
|
||||
$path=trim(trim($this->root,'/')."/".$path,'/.');
|
||||
$path=trim(trim($this->root, '/')."/".$path, '/.');
|
||||
return str_replace('/', '\\', $path);
|
||||
}
|
||||
|
||||
|
@ -205,7 +205,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
|
|||
unlink($tmpFile);
|
||||
return false;
|
||||
}else{
|
||||
$fh=fopen($tmpFile,'a');
|
||||
$fh=fopen($tmpFile, 'a');
|
||||
fwrite($fh, $name."\n");
|
||||
}
|
||||
}catch(Exception $e) {
|
||||
|
@ -432,7 +432,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
|
|||
case 'c':
|
||||
case 'c+':
|
||||
$tmpFile=$this->getTmpFile($path);
|
||||
OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this,'writeBack');
|
||||
OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this, 'writeBack');
|
||||
self::$tempFiles[$tmpFile]=$path;
|
||||
return fopen('close://'.$tmpFile, $mode);
|
||||
}
|
||||
|
|
|
@ -46,7 +46,7 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
|
|||
|
||||
if($caview = \OCP\Files::getStorage('files_external')) {
|
||||
$certPath=\OCP\Config::getSystemValue('datadirectory').$caview->getAbsolutePath("").'rootcerts.crt';
|
||||
if (file_exists($certPath)) {
|
||||
if (file_exists($certPath)) {
|
||||
$this->client->addTrustedCertificates($certPath);
|
||||
}
|
||||
}
|
||||
|
@ -252,7 +252,7 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
|
|||
public function stat($path) {
|
||||
$path=$this->cleanPath($path);
|
||||
try{
|
||||
$response=$this->client->propfind($path, array('{DAV:}getlastmodified','{DAV:}getcontentlength'));
|
||||
$response=$this->client->propfind($path, array('{DAV:}getlastmodified', '{DAV:}getcontentlength'));
|
||||
return array(
|
||||
'mtime'=>strtotime($response['{DAV:}getlastmodified']),
|
||||
'size'=>(int)isset($response['{DAV:}getcontentlength']) ? $response['{DAV:}getcontentlength'] : 0,
|
||||
|
@ -266,7 +266,7 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
|
|||
public function getMimeType($path) {
|
||||
$path=$this->cleanPath($path);
|
||||
try{
|
||||
$response=$this->client->propfind($path, array('{DAV:}getcontenttype','{DAV:}resourcetype'));
|
||||
$response=$this->client->propfind($path, array('{DAV:}getcontenttype', '{DAV:}resourcetype'));
|
||||
$responseType=$response["{DAV:}resourcetype"]->resourceType;
|
||||
$type=(count($responseType)>0 and $responseType[0]=="{DAV:}collection")?'dir':'file';
|
||||
if($type=='dir') {
|
||||
|
|
|
@ -1,223 +1,223 @@
|
|||
<?php
|
||||
// Load other apps for file previews
|
||||
OC_App::loadApps();
|
||||
|
||||
// Compatibility with shared-by-link items from ownCloud 4.0
|
||||
// requires old Sharing table !
|
||||
// support will be removed in OC 5.0,a
|
||||
if (isset($_GET['token'])) {
|
||||
unset($_GET['file']);
|
||||
$qry = \OC_DB::prepare('SELECT `source` FROM `*PREFIX*sharing` WHERE `target` = ? LIMIT 1');
|
||||
$filepath = $qry->execute(array($_GET['token']))->fetchOne();
|
||||
if(isset($filepath)) {
|
||||
$info = OC_FileCache_Cached::get($filepath, '');
|
||||
if(strtolower($info['mimetype']) == 'httpd/unix-directory') {
|
||||
$_GET['dir'] = $filepath;
|
||||
} else {
|
||||
$_GET['file'] = $filepath;
|
||||
}
|
||||
\OCP\Util::writeLog('files_sharing', 'You have files that are shared by link originating from ownCloud 4.0. Redistribute the new links, because backwards compatibility will be removed in ownCloud 5.', \OCP\Util::WARN);
|
||||
}
|
||||
}
|
||||
// Enf of backward compatibility
|
||||
|
||||
function getID($path) {
|
||||
// use the share table from the db to find the item source if the file was reshared because shared files
|
||||
//are not stored in the file cache.
|
||||
if (substr(OC_Filesystem::getMountPoint($path), -7, 6) == "Shared") {
|
||||
$path_parts = explode('/', $path, 5);
|
||||
$user = $path_parts[1];
|
||||
$intPath = '/'.$path_parts[4];
|
||||
$query = \OC_DB::prepare('SELECT item_source FROM *PREFIX*share WHERE uid_owner = ? AND file_target = ? ');
|
||||
$result = $query->execute(array($user, $intPath));
|
||||
$row = $result->fetchRow();
|
||||
$fileSource = $row['item_source'];
|
||||
} else {
|
||||
$fileSource = OC_Filecache::getId($path, '');
|
||||
}
|
||||
|
||||
return $fileSource;
|
||||
}
|
||||
|
||||
if (isset($_GET['file']) || isset($_GET['dir'])) {
|
||||
if (isset($_GET['dir'])) {
|
||||
$type = 'folder';
|
||||
$path = $_GET['dir'];
|
||||
if(strlen($path)>1 and substr($path, -1, 1)==='/') {
|
||||
$path=substr($path, 0, -1);
|
||||
}
|
||||
$baseDir = $path;
|
||||
$dir = $baseDir;
|
||||
} else {
|
||||
$type = 'file';
|
||||
$path = $_GET['file'];
|
||||
if(strlen($path)>1 and substr($path, -1, 1)==='/') {
|
||||
$path=substr($path, 0, -1);
|
||||
}
|
||||
}
|
||||
$uidOwner = substr($path, 1, strpos($path, '/', 1) - 1);
|
||||
if (OCP\User::userExists($uidOwner)) {
|
||||
OC_Util::setupFS($uidOwner);
|
||||
$fileSource = getId($path);
|
||||
if ($fileSource != -1 && ($linkItem = OCP\Share::getItemSharedWithByLink($type, $fileSource, $uidOwner))) {
|
||||
// TODO Fix in the getItems
|
||||
if (!isset($linkItem['item_type']) || $linkItem['item_type'] != $type) {
|
||||
header('HTTP/1.0 404 Not Found');
|
||||
$tmpl = new OCP\Template('', '404', 'guest');
|
||||
$tmpl->printPage();
|
||||
exit();
|
||||
}
|
||||
if (isset($linkItem['share_with'])) {
|
||||
// Check password
|
||||
if (isset($_GET['file'])) {
|
||||
$url = OCP\Util::linkToPublic('files').'&file='.$_GET['file'];
|
||||
} else {
|
||||
$url = OCP\Util::linkToPublic('files').'&dir='.$_GET['dir'];
|
||||
}
|
||||
if (isset($_POST['password'])) {
|
||||
$password = $_POST['password'];
|
||||
$storedHash = $linkItem['share_with'];
|
||||
$forcePortable = (CRYPT_BLOWFISH != 1);
|
||||
$hasher = new PasswordHash(8, $forcePortable);
|
||||
if (!($hasher->CheckPassword($password.OC_Config::getValue('passwordsalt', ''), $storedHash))) {
|
||||
$tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest');
|
||||
$tmpl->assign('URL', $url);
|
||||
$tmpl->assign('error', true);
|
||||
$tmpl->printPage();
|
||||
exit();
|
||||
} else {
|
||||
// Save item id in session for future requests
|
||||
$_SESSION['public_link_authenticated'] = $linkItem['id'];
|
||||
}
|
||||
// Check if item id is set in session
|
||||
} else if (!isset($_SESSION['public_link_authenticated']) || $_SESSION['public_link_authenticated'] !== $linkItem['id']) {
|
||||
// Prompt for password
|
||||
$tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest');
|
||||
$tmpl->assign('URL', $url);
|
||||
$tmpl->printPage();
|
||||
exit();
|
||||
}
|
||||
}
|
||||
$path = $linkItem['path'];
|
||||
if (isset($_GET['path'])) {
|
||||
$path .= $_GET['path'];
|
||||
$dir .= $_GET['path'];
|
||||
if (!OC_Filesystem::file_exists($path)) {
|
||||
header('HTTP/1.0 404 Not Found');
|
||||
$tmpl = new OCP\Template('', '404', 'guest');
|
||||
$tmpl->printPage();
|
||||
exit();
|
||||
}
|
||||
}
|
||||
// Download the file
|
||||
if (isset($_GET['download'])) {
|
||||
if (isset($_GET['dir'])) {
|
||||
if ( isset($_GET['files']) ) { // download selected files
|
||||
OC_Files::get($path, $_GET['files'], $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
|
||||
} else if (isset($_GET['path']) && $_GET['path'] != '' ) { // download a file from a shared directory
|
||||
OC_Files::get('', $path, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
|
||||
} else { // download the whole shared directory
|
||||
OC_Files::get($path, '', $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
|
||||
}
|
||||
} else { // download a single shared file
|
||||
OC_Files::get("", $path, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
|
||||
}
|
||||
|
||||
} else {
|
||||
OCP\Util::addStyle('files_sharing', 'public');
|
||||
OCP\Util::addScript('files_sharing', 'public');
|
||||
OCP\Util::addScript('files', 'fileactions');
|
||||
$tmpl = new OCP\Template('files_sharing', 'public', 'base');
|
||||
$tmpl->assign('owner', $uidOwner);
|
||||
// Show file list
|
||||
if (OC_Filesystem::is_dir($path)) {
|
||||
OCP\Util::addStyle('files', 'files');
|
||||
OCP\Util::addScript('files', 'files');
|
||||
OCP\Util::addScript('files', 'filelist');
|
||||
$files = array();
|
||||
$rootLength = strlen($baseDir) + 1;
|
||||
foreach (OC_Files::getDirectoryContent($path) as $i) {
|
||||
$i['date'] = OCP\Util::formatDate($i['mtime']);
|
||||
if ($i['type'] == 'file') {
|
||||
$fileinfo = pathinfo($i['name']);
|
||||
$i['basename'] = $fileinfo['filename'];
|
||||
$i['extension'] = isset($fileinfo['extension']) ? ('.'.$fileinfo['extension']) : '';
|
||||
}
|
||||
$i['directory'] = '/'.substr('/'.$uidOwner.'/files'.$i['directory'], $rootLength);
|
||||
if ($i['directory'] == '/') {
|
||||
$i['directory'] = '';
|
||||
}
|
||||
$i['permissions'] = OCP\Share::PERMISSION_READ;
|
||||
$files[] = $i;
|
||||
}
|
||||
// Make breadcrumb
|
||||
$breadcrumb = array();
|
||||
$pathtohere = '';
|
||||
$count = 1;
|
||||
foreach (explode('/', $dir) as $i) {
|
||||
if ($i != '') {
|
||||
if ($i != $baseDir) {
|
||||
$pathtohere .= '/'.$i;
|
||||
}
|
||||
if ( strlen($pathtohere) < strlen($_GET['dir'])) {
|
||||
continue;
|
||||
}
|
||||
$breadcrumb[] = array('dir' => str_replace($_GET['dir'], "", $pathtohere, $count), 'name' => $i);
|
||||
}
|
||||
}
|
||||
$list = new OCP\Template('files', 'part.list', '');
|
||||
$list->assign('files', $files, false);
|
||||
$list->assign('publicListView', true);
|
||||
$list->assign('baseURL', OCP\Util::linkToPublic('files').'&dir='.urlencode($_GET['dir']).'&path=', false);
|
||||
$list->assign('downloadURL', OCP\Util::linkToPublic('files').'&download&dir='.urlencode($_GET['dir']).'&path=', false);
|
||||
$breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', '' );
|
||||
$breadcrumbNav->assign('breadcrumb', $breadcrumb, false);
|
||||
$breadcrumbNav->assign('baseURL', OCP\Util::linkToPublic('files').'&dir='.urlencode($_GET['dir']).'&path=', false);
|
||||
$folder = new OCP\Template('files', 'index', '');
|
||||
$folder->assign('fileList', $list->fetchPage(), false);
|
||||
$folder->assign('breadcrumb', $breadcrumbNav->fetchPage(), false);
|
||||
$folder->assign('dir', basename($dir));
|
||||
$folder->assign('isCreatable', false);
|
||||
$folder->assign('permissions', 0);
|
||||
$folder->assign('files', $files);
|
||||
$folder->assign('uploadMaxFilesize', 0);
|
||||
$folder->assign('uploadMaxHumanFilesize', 0);
|
||||
$folder->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true)));
|
||||
$tmpl->assign('folder', $folder->fetchPage(), false);
|
||||
$tmpl->assign('uidOwner', $uidOwner);
|
||||
$tmpl->assign('dir', basename($dir));
|
||||
$tmpl->assign('filename', basename($path));
|
||||
$tmpl->assign('mimetype', OC_Filesystem::getMimeType($path));
|
||||
$tmpl->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true)));
|
||||
if (isset($_GET['path'])) {
|
||||
$getPath = $_GET['path'];
|
||||
} else {
|
||||
$getPath = '';
|
||||
}
|
||||
$tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').'&download&dir='.urlencode($_GET['dir']).'&path='.urlencode($getPath), false);
|
||||
} else {
|
||||
// Show file preview if viewer is available
|
||||
$tmpl->assign('uidOwner', $uidOwner);
|
||||
$tmpl->assign('dir', dirname($path));
|
||||
$tmpl->assign('filename', basename($path));
|
||||
$tmpl->assign('mimetype', OC_Filesystem::getMimeType($path));
|
||||
if ($type == 'file') {
|
||||
$tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').'&file='.urlencode($_GET['file']).'&download', false);
|
||||
} else {
|
||||
if (isset($_GET['path'])) {
|
||||
$getPath = $_GET['path'];
|
||||
} else {
|
||||
$getPath = '';
|
||||
}
|
||||
$tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').'&download&dir='.urlencode($_GET['dir']).'&path='.urlencode($getPath), false);
|
||||
}
|
||||
}
|
||||
$tmpl->printPage();
|
||||
}
|
||||
exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
header('HTTP/1.0 404 Not Found');
|
||||
$tmpl = new OCP\Template('', '404', 'guest');
|
||||
$tmpl->printPage();
|
||||
<?php
|
||||
// Load other apps for file previews
|
||||
OC_App::loadApps();
|
||||
|
||||
// Compatibility with shared-by-link items from ownCloud 4.0
|
||||
// requires old Sharing table !
|
||||
// support will be removed in OC 5.0,a
|
||||
if (isset($_GET['token'])) {
|
||||
unset($_GET['file']);
|
||||
$qry = \OC_DB::prepare('SELECT `source` FROM `*PREFIX*sharing` WHERE `target` = ? LIMIT 1');
|
||||
$filepath = $qry->execute(array($_GET['token']))->fetchOne();
|
||||
if(isset($filepath)) {
|
||||
$info = OC_FileCache_Cached::get($filepath, '');
|
||||
if(strtolower($info['mimetype']) == 'httpd/unix-directory') {
|
||||
$_GET['dir'] = $filepath;
|
||||
} else {
|
||||
$_GET['file'] = $filepath;
|
||||
}
|
||||
\OCP\Util::writeLog('files_sharing', 'You have files that are shared by link originating from ownCloud 4.0. Redistribute the new links, because backwards compatibility will be removed in ownCloud 5.', \OCP\Util::WARN);
|
||||
}
|
||||
}
|
||||
// Enf of backward compatibility
|
||||
|
||||
function getID($path) {
|
||||
// use the share table from the db to find the item source if the file was reshared because shared files
|
||||
//are not stored in the file cache.
|
||||
if (substr(OC_Filesystem::getMountPoint($path), -7, 6) == "Shared") {
|
||||
$path_parts = explode('/', $path, 5);
|
||||
$user = $path_parts[1];
|
||||
$intPath = '/'.$path_parts[4];
|
||||
$query = \OC_DB::prepare('SELECT item_source FROM *PREFIX*share WHERE uid_owner = ? AND file_target = ? ');
|
||||
$result = $query->execute(array($user, $intPath));
|
||||
$row = $result->fetchRow();
|
||||
$fileSource = $row['item_source'];
|
||||
} else {
|
||||
$fileSource = OC_Filecache::getId($path, '');
|
||||
}
|
||||
|
||||
return $fileSource;
|
||||
}
|
||||
|
||||
if (isset($_GET['file']) || isset($_GET['dir'])) {
|
||||
if (isset($_GET['dir'])) {
|
||||
$type = 'folder';
|
||||
$path = $_GET['dir'];
|
||||
if(strlen($path)>1 and substr($path, -1, 1)==='/') {
|
||||
$path=substr($path, 0, -1);
|
||||
}
|
||||
$baseDir = $path;
|
||||
$dir = $baseDir;
|
||||
} else {
|
||||
$type = 'file';
|
||||
$path = $_GET['file'];
|
||||
if(strlen($path)>1 and substr($path, -1, 1)==='/') {
|
||||
$path=substr($path, 0, -1);
|
||||
}
|
||||
}
|
||||
$uidOwner = substr($path, 1, strpos($path, '/', 1) - 1);
|
||||
if (OCP\User::userExists($uidOwner)) {
|
||||
OC_Util::setupFS($uidOwner);
|
||||
$fileSource = getId($path);
|
||||
if ($fileSource != -1 && ($linkItem = OCP\Share::getItemSharedWithByLink($type, $fileSource, $uidOwner))) {
|
||||
// TODO Fix in the getItems
|
||||
if (!isset($linkItem['item_type']) || $linkItem['item_type'] != $type) {
|
||||
header('HTTP/1.0 404 Not Found');
|
||||
$tmpl = new OCP\Template('', '404', 'guest');
|
||||
$tmpl->printPage();
|
||||
exit();
|
||||
}
|
||||
if (isset($linkItem['share_with'])) {
|
||||
// Check password
|
||||
if (isset($_GET['file'])) {
|
||||
$url = OCP\Util::linkToPublic('files').'&file='.$_GET['file'];
|
||||
} else {
|
||||
$url = OCP\Util::linkToPublic('files').'&dir='.$_GET['dir'];
|
||||
}
|
||||
if (isset($_POST['password'])) {
|
||||
$password = $_POST['password'];
|
||||
$storedHash = $linkItem['share_with'];
|
||||
$forcePortable = (CRYPT_BLOWFISH != 1);
|
||||
$hasher = new PasswordHash(8, $forcePortable);
|
||||
if (!($hasher->CheckPassword($password.OC_Config::getValue('passwordsalt', ''), $storedHash))) {
|
||||
$tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest');
|
||||
$tmpl->assign('URL', $url);
|
||||
$tmpl->assign('error', true);
|
||||
$tmpl->printPage();
|
||||
exit();
|
||||
} else {
|
||||
// Save item id in session for future requests
|
||||
$_SESSION['public_link_authenticated'] = $linkItem['id'];
|
||||
}
|
||||
// Check if item id is set in session
|
||||
} else if (!isset($_SESSION['public_link_authenticated']) || $_SESSION['public_link_authenticated'] !== $linkItem['id']) {
|
||||
// Prompt for password
|
||||
$tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest');
|
||||
$tmpl->assign('URL', $url);
|
||||
$tmpl->printPage();
|
||||
exit();
|
||||
}
|
||||
}
|
||||
$path = $linkItem['path'];
|
||||
if (isset($_GET['path'])) {
|
||||
$path .= $_GET['path'];
|
||||
$dir .= $_GET['path'];
|
||||
if (!OC_Filesystem::file_exists($path)) {
|
||||
header('HTTP/1.0 404 Not Found');
|
||||
$tmpl = new OCP\Template('', '404', 'guest');
|
||||
$tmpl->printPage();
|
||||
exit();
|
||||
}
|
||||
}
|
||||
// Download the file
|
||||
if (isset($_GET['download'])) {
|
||||
if (isset($_GET['dir'])) {
|
||||
if ( isset($_GET['files']) ) { // download selected files
|
||||
OC_Files::get($path, $_GET['files'], $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
|
||||
} else if (isset($_GET['path']) && $_GET['path'] != '' ) { // download a file from a shared directory
|
||||
OC_Files::get('', $path, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
|
||||
} else { // download the whole shared directory
|
||||
OC_Files::get($path, '', $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
|
||||
}
|
||||
} else { // download a single shared file
|
||||
OC_Files::get("", $path, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
|
||||
}
|
||||
|
||||
} else {
|
||||
OCP\Util::addStyle('files_sharing', 'public');
|
||||
OCP\Util::addScript('files_sharing', 'public');
|
||||
OCP\Util::addScript('files', 'fileactions');
|
||||
$tmpl = new OCP\Template('files_sharing', 'public', 'base');
|
||||
$tmpl->assign('owner', $uidOwner);
|
||||
// Show file list
|
||||
if (OC_Filesystem::is_dir($path)) {
|
||||
OCP\Util::addStyle('files', 'files');
|
||||
OCP\Util::addScript('files', 'files');
|
||||
OCP\Util::addScript('files', 'filelist');
|
||||
$files = array();
|
||||
$rootLength = strlen($baseDir) + 1;
|
||||
foreach (OC_Files::getDirectoryContent($path) as $i) {
|
||||
$i['date'] = OCP\Util::formatDate($i['mtime']);
|
||||
if ($i['type'] == 'file') {
|
||||
$fileinfo = pathinfo($i['name']);
|
||||
$i['basename'] = $fileinfo['filename'];
|
||||
$i['extension'] = isset($fileinfo['extension']) ? ('.'.$fileinfo['extension']) : '';
|
||||
}
|
||||
$i['directory'] = '/'.substr('/'.$uidOwner.'/files'.$i['directory'], $rootLength);
|
||||
if ($i['directory'] == '/') {
|
||||
$i['directory'] = '';
|
||||
}
|
||||
$i['permissions'] = OCP\Share::PERMISSION_READ;
|
||||
$files[] = $i;
|
||||
}
|
||||
// Make breadcrumb
|
||||
$breadcrumb = array();
|
||||
$pathtohere = '';
|
||||
$count = 1;
|
||||
foreach (explode('/', $dir) as $i) {
|
||||
if ($i != '') {
|
||||
if ($i != $baseDir) {
|
||||
$pathtohere .= '/'.$i;
|
||||
}
|
||||
if ( strlen($pathtohere) < strlen($_GET['dir'])) {
|
||||
continue;
|
||||
}
|
||||
$breadcrumb[] = array('dir' => str_replace($_GET['dir'], "", $pathtohere, $count), 'name' => $i);
|
||||
}
|
||||
}
|
||||
$list = new OCP\Template('files', 'part.list', '');
|
||||
$list->assign('files', $files, false);
|
||||
$list->assign('publicListView', true);
|
||||
$list->assign('baseURL', OCP\Util::linkToPublic('files').'&dir='.urlencode($_GET['dir']).'&path=', false);
|
||||
$list->assign('downloadURL', OCP\Util::linkToPublic('files').'&download&dir='.urlencode($_GET['dir']).'&path=', false);
|
||||
$breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', '' );
|
||||
$breadcrumbNav->assign('breadcrumb', $breadcrumb, false);
|
||||
$breadcrumbNav->assign('baseURL', OCP\Util::linkToPublic('files').'&dir='.urlencode($_GET['dir']).'&path=', false);
|
||||
$folder = new OCP\Template('files', 'index', '');
|
||||
$folder->assign('fileList', $list->fetchPage(), false);
|
||||
$folder->assign('breadcrumb', $breadcrumbNav->fetchPage(), false);
|
||||
$folder->assign('dir', basename($dir));
|
||||
$folder->assign('isCreatable', false);
|
||||
$folder->assign('permissions', 0);
|
||||
$folder->assign('files', $files);
|
||||
$folder->assign('uploadMaxFilesize', 0);
|
||||
$folder->assign('uploadMaxHumanFilesize', 0);
|
||||
$folder->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true)));
|
||||
$tmpl->assign('folder', $folder->fetchPage(), false);
|
||||
$tmpl->assign('uidOwner', $uidOwner);
|
||||
$tmpl->assign('dir', basename($dir));
|
||||
$tmpl->assign('filename', basename($path));
|
||||
$tmpl->assign('mimetype', OC_Filesystem::getMimeType($path));
|
||||
$tmpl->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true)));
|
||||
if (isset($_GET['path'])) {
|
||||
$getPath = $_GET['path'];
|
||||
} else {
|
||||
$getPath = '';
|
||||
}
|
||||
$tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').'&download&dir='.urlencode($_GET['dir']).'&path='.urlencode($getPath), false);
|
||||
} else {
|
||||
// Show file preview if viewer is available
|
||||
$tmpl->assign('uidOwner', $uidOwner);
|
||||
$tmpl->assign('dir', dirname($path));
|
||||
$tmpl->assign('filename', basename($path));
|
||||
$tmpl->assign('mimetype', OC_Filesystem::getMimeType($path));
|
||||
if ($type == 'file') {
|
||||
$tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').'&file='.urlencode($_GET['file']).'&download', false);
|
||||
} else {
|
||||
if (isset($_GET['path'])) {
|
||||
$getPath = $_GET['path'];
|
||||
} else {
|
||||
$getPath = '';
|
||||
}
|
||||
$tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').'&download&dir='.urlencode($_GET['dir']).'&path='.urlencode($getPath), false);
|
||||
}
|
||||
}
|
||||
$tmpl->printPage();
|
||||
}
|
||||
exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
header('HTTP/1.0 404 Not Found');
|
||||
$tmpl = new OCP\Template('', '404', 'guest');
|
||||
$tmpl->printPage();
|
||||
|
|
|
@ -5,7 +5,7 @@ OC::$CLASSPATH['OCA_Versions\Storage'] = 'apps/files_versions/lib/versions.php';
|
|||
OC::$CLASSPATH['OCA_Versions\Hooks'] = 'apps/files_versions/lib/hooks.php';
|
||||
|
||||
OCP\App::registerAdmin('files_versions', 'settings');
|
||||
OCP\App::registerPersonal('files_versions','settings-personal');
|
||||
OCP\App::registerPersonal('files_versions', 'settings-personal');
|
||||
|
||||
OCP\Util::addscript('files_versions', 'versions');
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
*/
|
||||
|
||||
OCP\User::checkLoggedIn( );
|
||||
OCP\Util::addStyle('files_versions','versions');
|
||||
OCP\Util::addStyle('files_versions', 'versions');
|
||||
$tmpl = new OCP\Template( 'files_versions', 'history', 'user' );
|
||||
|
||||
if ( isset( $_GET['path'] ) ) {
|
||||
|
|
|
@ -1,278 +1,278 @@
|
|||
<?php
|
||||
/**
|
||||
* Copyright (c) 2012 Frank Karlitschek <frank@owncloud.org>
|
||||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later.
|
||||
* See the COPYING-README file.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Versions
|
||||
*
|
||||
* A class to handle the versioning of files.
|
||||
*/
|
||||
|
||||
namespace OCA_Versions;
|
||||
|
||||
class Storage {
|
||||
|
||||
|
||||
// config.php configuration:
|
||||
// - files_versions
|
||||
// - files_versionsfolder
|
||||
// - files_versionsblacklist
|
||||
// - files_versionsmaxfilesize
|
||||
// - files_versionsinterval
|
||||
// - files_versionmaxversions
|
||||
//
|
||||
// todo:
|
||||
// - finish porting to OC_FilesystemView to enable network transparency
|
||||
// - add transparent compression. first test if it´s worth it.
|
||||
|
||||
const DEFAULTENABLED=true;
|
||||
const DEFAULTBLACKLIST='avi mp3 mpg mp4 ctmp';
|
||||
const DEFAULTMAXFILESIZE=1048576; // 10MB
|
||||
const DEFAULTMININTERVAL=60; // 1 min
|
||||
const DEFAULTMAXVERSIONS=50;
|
||||
|
||||
private static function getUidAndFilename($filename)
|
||||
{
|
||||
if (\OCP\App::isEnabled('files_sharing')
|
||||
&& substr($filename, 0, 7) == '/Shared'
|
||||
&& $source = \OCP\Share::getItemSharedWith('file',
|
||||
substr($filename, 7),
|
||||
\OC_Share_Backend_File::FORMAT_SHARED_STORAGE)) {
|
||||
$filename = $source['path'];
|
||||
$pos = strpos($filename, '/files', 1);
|
||||
$uid = substr($filename, 1, $pos - 1);
|
||||
$filename = substr($filename, $pos + 6);
|
||||
} else {
|
||||
$uid = \OCP\User::getUser();
|
||||
}
|
||||
return array($uid, $filename);
|
||||
}
|
||||
|
||||
/**
|
||||
* store a new version of a file.
|
||||
*/
|
||||
public function store($filename) {
|
||||
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
|
||||
list($uid, $filename) = self::getUidAndFilename($filename);
|
||||
$files_view = new \OC_FilesystemView('/'.\OCP\User::getUser() .'/files');
|
||||
$users_view = new \OC_FilesystemView('/'.\OCP\User::getUser());
|
||||
|
||||
//check if source file already exist as version to avoid recursions.
|
||||
// todo does this check work?
|
||||
if ($users_view->file_exists($filename)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// check if filename is a directory
|
||||
if($files_view->is_dir($filename)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// check filetype blacklist
|
||||
$blacklist=explode(' ', \OCP\Config::getSystemValue('files_versionsblacklist', Storage::DEFAULTBLACKLIST));
|
||||
foreach($blacklist as $bl) {
|
||||
$parts=explode('.', $filename);
|
||||
$ext=end($parts);
|
||||
if(strtolower($ext)==$bl) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// we should have a source file to work with
|
||||
if (!$files_view->file_exists($filename)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// check filesize
|
||||
if($files_view->filesize($filename)>\OCP\Config::getSystemValue('files_versionsmaxfilesize', Storage::DEFAULTMAXFILESIZE)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// check mininterval if the file is being modified by the owner (all shared files should be versioned despite mininterval)
|
||||
if ($uid == \OCP\User::getUser()) {
|
||||
$versions_fileview = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_versions');
|
||||
$versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
|
||||
$versionsFolderName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('');
|
||||
$matches=glob($versionsName.'.v*');
|
||||
sort($matches);
|
||||
$parts=explode('.v', end($matches));
|
||||
if((end($parts)+Storage::DEFAULTMININTERVAL)>time()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// create all parent folders
|
||||
$info=pathinfo($filename);
|
||||
if(!file_exists($versionsFolderName.'/'.$info['dirname'])) {
|
||||
mkdir($versionsFolderName.'/'.$info['dirname'],0750, true);
|
||||
}
|
||||
|
||||
// store a new version of a file
|
||||
$users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.time());
|
||||
|
||||
// expire old revisions if necessary
|
||||
Storage::expire($filename);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* rollback to an old version of a file.
|
||||
*/
|
||||
public static function rollback($filename, $revision) {
|
||||
|
||||
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
|
||||
list($uid, $filename) = self::getUidAndFilename($filename);
|
||||
$users_view = new \OC_FilesystemView('/'.\OCP\User::getUser());
|
||||
|
||||
// rollback
|
||||
if( @$users_view->copy('files_versions'.$filename.'.v'.$revision, 'files'.$filename) ) {
|
||||
|
||||
return true;
|
||||
|
||||
}else{
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* check if old versions of a file exist.
|
||||
*/
|
||||
public static function isversioned($filename) {
|
||||
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
|
||||
list($uid, $filename) = self::getUidAndFilename($filename);
|
||||
$versions_fileview = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_versions');
|
||||
|
||||
$versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
|
||||
|
||||
// check for old versions
|
||||
$matches=glob($versionsName.'.v*');
|
||||
if(count($matches)>0) {
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}else{
|
||||
return(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief get a list of all available versions of a file in descending chronological order
|
||||
* @param $filename file to find versions of, relative to the user files dir
|
||||
* @param $count number of versions to return
|
||||
* @returns array
|
||||
*/
|
||||
public static function getVersions( $filename, $count = 0 ) {
|
||||
if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) {
|
||||
list($uid, $filename) = self::getUidAndFilename($filename);
|
||||
$versions_fileview = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_versions');
|
||||
|
||||
$versionsName = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
|
||||
$versions = array();
|
||||
// fetch for old versions
|
||||
$matches = glob( $versionsName.'.v*' );
|
||||
|
||||
sort( $matches );
|
||||
|
||||
$i = 0;
|
||||
|
||||
$files_view = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files');
|
||||
$local_file = $files_view->getLocalFile($filename);
|
||||
foreach( $matches as $ma ) {
|
||||
|
||||
$i++;
|
||||
$versions[$i]['cur'] = 0;
|
||||
$parts = explode( '.v', $ma );
|
||||
$versions[$i]['version'] = ( end( $parts ) );
|
||||
|
||||
// if file with modified date exists, flag it in array as currently enabled version
|
||||
( \md5_file( $ma ) == \md5_file( $local_file ) ? $versions[$i]['fileMatch'] = 1 : $versions[$i]['fileMatch'] = 0 );
|
||||
|
||||
}
|
||||
|
||||
$versions = array_reverse( $versions );
|
||||
|
||||
foreach( $versions as $key => $value ) {
|
||||
|
||||
// flag the first matched file in array (which will have latest modification date) as current version
|
||||
if ( $value['fileMatch'] ) {
|
||||
|
||||
$value['cur'] = 1;
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$versions = array_reverse( $versions );
|
||||
|
||||
// only show the newest commits
|
||||
if( $count != 0 and ( count( $versions )>$count ) ) {
|
||||
|
||||
$versions = array_slice( $versions, count( $versions ) - $count );
|
||||
|
||||
}
|
||||
|
||||
return( $versions );
|
||||
|
||||
|
||||
} else {
|
||||
|
||||
// if versioning isn't enabled then return an empty array
|
||||
return( array() );
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Erase a file's versions which exceed the set quota
|
||||
*/
|
||||
public static function expire($filename) {
|
||||
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
|
||||
list($uid, $filename) = self::getUidAndFilename($filename);
|
||||
$versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
|
||||
|
||||
$versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
|
||||
|
||||
// check for old versions
|
||||
$matches = glob( $versionsName.'.v*' );
|
||||
|
||||
if( count( $matches ) > \OCP\Config::getSystemValue( 'files_versionmaxversions', Storage::DEFAULTMAXVERSIONS ) ) {
|
||||
|
||||
$numberToDelete = count($matches) - \OCP\Config::getSystemValue( 'files_versionmaxversions', Storage::DEFAULTMAXVERSIONS );
|
||||
|
||||
// delete old versions of a file
|
||||
$deleteItems = array_slice( $matches, 0, $numberToDelete );
|
||||
|
||||
foreach( $deleteItems as $de ) {
|
||||
|
||||
unlink( $versionsName.'.v'.$de );
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Erase all old versions of all user files
|
||||
* @return true/false
|
||||
*/
|
||||
public function expireAll() {
|
||||
$view = \OCP\Files::getStorage('files_versions');
|
||||
return $view->deleteAll('', true);
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* Copyright (c) 2012 Frank Karlitschek <frank@owncloud.org>
|
||||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later.
|
||||
* See the COPYING-README file.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Versions
|
||||
*
|
||||
* A class to handle the versioning of files.
|
||||
*/
|
||||
|
||||
namespace OCA_Versions;
|
||||
|
||||
class Storage {
|
||||
|
||||
|
||||
// config.php configuration:
|
||||
// - files_versions
|
||||
// - files_versionsfolder
|
||||
// - files_versionsblacklist
|
||||
// - files_versionsmaxfilesize
|
||||
// - files_versionsinterval
|
||||
// - files_versionmaxversions
|
||||
//
|
||||
// todo:
|
||||
// - finish porting to OC_FilesystemView to enable network transparency
|
||||
// - add transparent compression. first test if it´s worth it.
|
||||
|
||||
const DEFAULTENABLED=true;
|
||||
const DEFAULTBLACKLIST='avi mp3 mpg mp4 ctmp';
|
||||
const DEFAULTMAXFILESIZE=1048576; // 10MB
|
||||
const DEFAULTMININTERVAL=60; // 1 min
|
||||
const DEFAULTMAXVERSIONS=50;
|
||||
|
||||
private static function getUidAndFilename($filename)
|
||||
{
|
||||
if (\OCP\App::isEnabled('files_sharing')
|
||||
&& substr($filename, 0, 7) == '/Shared'
|
||||
&& $source = \OCP\Share::getItemSharedWith('file',
|
||||
substr($filename, 7),
|
||||
\OC_Share_Backend_File::FORMAT_SHARED_STORAGE)) {
|
||||
$filename = $source['path'];
|
||||
$pos = strpos($filename, '/files', 1);
|
||||
$uid = substr($filename, 1, $pos - 1);
|
||||
$filename = substr($filename, $pos + 6);
|
||||
} else {
|
||||
$uid = \OCP\User::getUser();
|
||||
}
|
||||
return array($uid, $filename);
|
||||
}
|
||||
|
||||
/**
|
||||
* store a new version of a file.
|
||||
*/
|
||||
public function store($filename) {
|
||||
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
|
||||
list($uid, $filename) = self::getUidAndFilename($filename);
|
||||
$files_view = new \OC_FilesystemView('/'.\OCP\User::getUser() .'/files');
|
||||
$users_view = new \OC_FilesystemView('/'.\OCP\User::getUser());
|
||||
|
||||
//check if source file already exist as version to avoid recursions.
|
||||
// todo does this check work?
|
||||
if ($users_view->file_exists($filename)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// check if filename is a directory
|
||||
if($files_view->is_dir($filename)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// check filetype blacklist
|
||||
$blacklist=explode(' ', \OCP\Config::getSystemValue('files_versionsblacklist', Storage::DEFAULTBLACKLIST));
|
||||
foreach($blacklist as $bl) {
|
||||
$parts=explode('.', $filename);
|
||||
$ext=end($parts);
|
||||
if(strtolower($ext)==$bl) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// we should have a source file to work with
|
||||
if (!$files_view->file_exists($filename)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// check filesize
|
||||
if($files_view->filesize($filename)>\OCP\Config::getSystemValue('files_versionsmaxfilesize', Storage::DEFAULTMAXFILESIZE)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// check mininterval if the file is being modified by the owner (all shared files should be versioned despite mininterval)
|
||||
if ($uid == \OCP\User::getUser()) {
|
||||
$versions_fileview = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_versions');
|
||||
$versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
|
||||
$versionsFolderName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('');
|
||||
$matches=glob($versionsName.'.v*');
|
||||
sort($matches);
|
||||
$parts=explode('.v', end($matches));
|
||||
if((end($parts)+Storage::DEFAULTMININTERVAL)>time()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// create all parent folders
|
||||
$info=pathinfo($filename);
|
||||
if(!file_exists($versionsFolderName.'/'.$info['dirname'])) {
|
||||
mkdir($versionsFolderName.'/'.$info['dirname'], 0750, true);
|
||||
}
|
||||
|
||||
// store a new version of a file
|
||||
$users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.time());
|
||||
|
||||
// expire old revisions if necessary
|
||||
Storage::expire($filename);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* rollback to an old version of a file.
|
||||
*/
|
||||
public static function rollback($filename, $revision) {
|
||||
|
||||
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
|
||||
list($uid, $filename) = self::getUidAndFilename($filename);
|
||||
$users_view = new \OC_FilesystemView('/'.\OCP\User::getUser());
|
||||
|
||||
// rollback
|
||||
if( @$users_view->copy('files_versions'.$filename.'.v'.$revision, 'files'.$filename) ) {
|
||||
|
||||
return true;
|
||||
|
||||
}else{
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* check if old versions of a file exist.
|
||||
*/
|
||||
public static function isversioned($filename) {
|
||||
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
|
||||
list($uid, $filename) = self::getUidAndFilename($filename);
|
||||
$versions_fileview = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_versions');
|
||||
|
||||
$versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
|
||||
|
||||
// check for old versions
|
||||
$matches=glob($versionsName.'.v*');
|
||||
if(count($matches)>0) {
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}else{
|
||||
return(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief get a list of all available versions of a file in descending chronological order
|
||||
* @param $filename file to find versions of, relative to the user files dir
|
||||
* @param $count number of versions to return
|
||||
* @returns array
|
||||
*/
|
||||
public static function getVersions( $filename, $count = 0 ) {
|
||||
if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) {
|
||||
list($uid, $filename) = self::getUidAndFilename($filename);
|
||||
$versions_fileview = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_versions');
|
||||
|
||||
$versionsName = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
|
||||
$versions = array();
|
||||
// fetch for old versions
|
||||
$matches = glob( $versionsName.'.v*' );
|
||||
|
||||
sort( $matches );
|
||||
|
||||
$i = 0;
|
||||
|
||||
$files_view = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files');
|
||||
$local_file = $files_view->getLocalFile($filename);
|
||||
foreach( $matches as $ma ) {
|
||||
|
||||
$i++;
|
||||
$versions[$i]['cur'] = 0;
|
||||
$parts = explode( '.v', $ma );
|
||||
$versions[$i]['version'] = ( end( $parts ) );
|
||||
|
||||
// if file with modified date exists, flag it in array as currently enabled version
|
||||
( \md5_file( $ma ) == \md5_file( $local_file ) ? $versions[$i]['fileMatch'] = 1 : $versions[$i]['fileMatch'] = 0 );
|
||||
|
||||
}
|
||||
|
||||
$versions = array_reverse( $versions );
|
||||
|
||||
foreach( $versions as $key => $value ) {
|
||||
|
||||
// flag the first matched file in array (which will have latest modification date) as current version
|
||||
if ( $value['fileMatch'] ) {
|
||||
|
||||
$value['cur'] = 1;
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$versions = array_reverse( $versions );
|
||||
|
||||
// only show the newest commits
|
||||
if( $count != 0 and ( count( $versions )>$count ) ) {
|
||||
|
||||
$versions = array_slice( $versions, count( $versions ) - $count );
|
||||
|
||||
}
|
||||
|
||||
return( $versions );
|
||||
|
||||
|
||||
} else {
|
||||
|
||||
// if versioning isn't enabled then return an empty array
|
||||
return( array() );
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Erase a file's versions which exceed the set quota
|
||||
*/
|
||||
public static function expire($filename) {
|
||||
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
|
||||
list($uid, $filename) = self::getUidAndFilename($filename);
|
||||
$versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
|
||||
|
||||
$versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
|
||||
|
||||
// check for old versions
|
||||
$matches = glob( $versionsName.'.v*' );
|
||||
|
||||
if( count( $matches ) > \OCP\Config::getSystemValue( 'files_versionmaxversions', Storage::DEFAULTMAXVERSIONS ) ) {
|
||||
|
||||
$numberToDelete = count($matches) - \OCP\Config::getSystemValue( 'files_versionmaxversions', Storage::DEFAULTMAXVERSIONS );
|
||||
|
||||
// delete old versions of a file
|
||||
$deleteItems = array_slice( $matches, 0, $numberToDelete );
|
||||
|
||||
foreach( $deleteItems as $de ) {
|
||||
|
||||
unlink( $versionsName.'.v'.$de );
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Erase all old versions of all user files
|
||||
* @return true/false
|
||||
*/
|
||||
public function expireAll() {
|
||||
$view = \OCP\Files::getStorage('files_versions');
|
||||
return $view->deleteAll('', true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,6 @@
|
|||
|
||||
$tmpl = new OCP\Template( 'files_versions', 'settings-personal');
|
||||
|
||||
OCP\Util::addscript('files_versions','settings-personal');
|
||||
OCP\Util::addscript('files_versions', 'settings-personal');
|
||||
|
||||
return $tmpl->fetchPage();
|
||||
|
|
|
@ -124,7 +124,7 @@ class GROUP_LDAP extends lib\Access implements \OCP\GroupInterface {
|
|||
$this->connection->ldapGroupFilter,
|
||||
$this->connection->ldapGroupMemberAssocAttr.'='.$uid
|
||||
));
|
||||
$groups = $this->fetchListOfGroups($filter, array($this->connection->ldapGroupDisplayName,'dn'));
|
||||
$groups = $this->fetchListOfGroups($filter, array($this->connection->ldapGroupDisplayName, 'dn'));
|
||||
$groups = array_unique($this->ownCloudGroupNames($groups), SORT_LOCALE_STRING);
|
||||
$this->connection->writeToCache($cacheKey, $groups);
|
||||
|
||||
|
|
|
@ -180,13 +180,13 @@ class Connection {
|
|||
* Caches the general LDAP configuration.
|
||||
*/
|
||||
private function readConfiguration($force = false) {
|
||||
\OCP\Util::writeLog('user_ldap','Checking conf state: isConfigured? '.print_r($this->configured, true).' isForce? '.print_r($force, true).' configID? '.print_r($this->configID, true), \OCP\Util::DEBUG);
|
||||
\OCP\Util::writeLog('user_ldap', 'Checking conf state: isConfigured? '.print_r($this->configured, true).' isForce? '.print_r($force, true).' configID? '.print_r($this->configID, true), \OCP\Util::DEBUG);
|
||||
if((!$this->configured || $force) && !is_null($this->configID)) {
|
||||
\OCP\Util::writeLog('user_ldap','Reading the configuration', \OCP\Util::DEBUG);
|
||||
\OCP\Util::writeLog('user_ldap', 'Reading the configuration', \OCP\Util::DEBUG);
|
||||
$this->config['ldapHost'] = \OCP\Config::getAppValue($this->configID, 'ldap_host', '');
|
||||
$this->config['ldapPort'] = \OCP\Config::getAppValue($this->configID, 'ldap_port', 389);
|
||||
$this->config['ldapAgentName'] = \OCP\Config::getAppValue($this->configID, 'ldap_dn','');
|
||||
$this->config['ldapAgentPassword'] = base64_decode(\OCP\Config::getAppValue($this->configID, 'ldap_agent_password',''));
|
||||
$this->config['ldapAgentName'] = \OCP\Config::getAppValue($this->configID, 'ldap_dn', '');
|
||||
$this->config['ldapAgentPassword'] = base64_decode(\OCP\Config::getAppValue($this->configID, 'ldap_agent_password', ''));
|
||||
$this->config['ldapBase'] = \OCP\Config::getAppValue($this->configID, 'ldap_base', '');
|
||||
$this->config['ldapBaseUsers'] = \OCP\Config::getAppValue($this->configID, 'ldap_base_users', $this->config['ldapBase']);
|
||||
$this->config['ldapBaseGroups'] = \OCP\Config::getAppValue($this->configID, 'ldap_base_groups', $this->config['ldapBase']);
|
||||
|
@ -194,8 +194,8 @@ class Connection {
|
|||
$this->config['ldapNoCase'] = \OCP\Config::getAppValue($this->configID, 'ldap_nocase', 0);
|
||||
$this->config['turnOffCertCheck'] = \OCP\Config::getAppValue($this->configID, 'ldap_turn_off_cert_check', 0);
|
||||
$this->config['ldapUserDisplayName'] = mb_strtolower(\OCP\Config::getAppValue($this->configID, 'ldap_display_name', 'uid'), 'UTF-8');
|
||||
$this->config['ldapUserFilter'] = \OCP\Config::getAppValue($this->configID, 'ldap_userlist_filter','objectClass=person');
|
||||
$this->config['ldapGroupFilter'] = \OCP\Config::getAppValue($this->configID, 'ldap_group_filter','(objectClass=posixGroup)');
|
||||
$this->config['ldapUserFilter'] = \OCP\Config::getAppValue($this->configID, 'ldap_userlist_filter', 'objectClass=person');
|
||||
$this->config['ldapGroupFilter'] = \OCP\Config::getAppValue($this->configID, 'ldap_group_filter', '(objectClass=posixGroup)');
|
||||
$this->config['ldapLoginFilter'] = \OCP\Config::getAppValue($this->configID, 'ldap_login_filter', '(uid=%uid)');
|
||||
$this->config['ldapGroupDisplayName'] = mb_strtolower(\OCP\Config::getAppValue($this->configID, 'ldap_group_display_name', 'uid'), 'UTF-8');
|
||||
$this->config['ldapQuotaAttribute'] = \OCP\Config::getAppValue($this->configID, 'ldap_quota_attr', '');
|
||||
|
@ -263,7 +263,7 @@ class Connection {
|
|||
if(empty($this->config['ldapGroupFilter']) && empty($this->config['ldapGroupMemberAssocAttr'])) {
|
||||
\OCP\Util::writeLog('user_ldap', 'No group filter is specified, LDAP group feature will not be used.', \OCP\Util::INFO);
|
||||
}
|
||||
if(!in_array($this->config['ldapUuidAttribute'], array('auto','entryuuid', 'nsuniqueid', 'objectguid')) && (!is_null($this->configID))) {
|
||||
if(!in_array($this->config['ldapUuidAttribute'], array('auto', 'entryuuid', 'nsuniqueid', 'objectguid')) && (!is_null($this->configID))) {
|
||||
\OCP\Config::setAppValue($this->configID, 'ldap_uuid_attribute', 'auto');
|
||||
\OCP\Util::writeLog('user_ldap', 'Illegal value for the UUID Attribute, reset to autodetect.', \OCP\Util::INFO);
|
||||
}
|
||||
|
|
|
@ -26,16 +26,12 @@ OCP\Util::addscript('user_ldap', 'settings');
|
|||
OCP\Util::addstyle('user_ldap', 'settings');
|
||||
|
||||
if ($_POST) {
|
||||
$clearCache = false;
|
||||
foreach($params as $param) {
|
||||
if(isset($_POST[$param])) {
|
||||
$clearCache = true;
|
||||
if('ldap_agent_password' == $param) {
|
||||
OCP\Config::setAppValue('user_ldap', $param, base64_encode($_POST[$param]));
|
||||
} elseif('ldap_cache_ttl' == $param) {
|
||||
if(OCP\Config::getAppValue('user_ldap', $param,'') != $_POST[$param]) {
|
||||
$ldap = new \OCA\user_ldap\lib\Connection('user_ldap');
|
||||
$ldap->clearCache();
|
||||
OCP\Config::setAppValue('user_ldap', $param, $_POST[$param]);
|
||||
}
|
||||
} elseif('home_folder_naming_rule' == $param) {
|
||||
$value = empty($_POST[$param]) ? 'opt:username' : 'attr:'.$_POST[$param];
|
||||
OCP\Config::setAppValue('user_ldap', $param, $value);
|
||||
|
@ -54,12 +50,16 @@ if ($_POST) {
|
|||
OCP\Config::setAppValue('user_ldap', $param, 0);
|
||||
}
|
||||
}
|
||||
if($clearCache) {
|
||||
$ldap = new \OCA\user_ldap\lib\Connection('user_ldap');
|
||||
$ldap->clearCache();
|
||||
}
|
||||
}
|
||||
|
||||
// fill template
|
||||
$tmpl = new OCP\Template( 'user_ldap', 'settings');
|
||||
foreach($params as $param) {
|
||||
$value = OCP\Config::getAppValue('user_ldap', $param,'');
|
||||
$value = OCP\Config::getAppValue('user_ldap', $param, '');
|
||||
$tmpl->assign($param, $value);
|
||||
}
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
<p><label for="ldap_cache_ttl">Cache Time-To-Live</label><input type="text" id="ldap_cache_ttl" name="ldap_cache_ttl" value="<?php echo $_['ldap_cache_ttl']; ?>" title="<?php echo $l->t('in seconds. A change empties the cache.');?>" /></p>
|
||||
<p><label for="home_folder_naming_rule">User Home Folder Naming Rule</label><input type="text" id="home_folder_naming_rule" name="home_folder_naming_rule" value="<?php echo $_['home_folder_naming_rule']; ?>" title="<?php echo $l->t('Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute.');?>" /></p>
|
||||
</fieldset>
|
||||
<input type="submit" value="Save" /> <button id="ldap_action_test_connection" name="ldap_action_test_connection">Test Configuration</button> <a href="http://owncloud.org/support/ldap-backend/" target="_blank"><img src="<?php echo OCP\Util::imagePath('','actions/info.png'); ?>" style="height:1.75ex" /> <?php echo $l->t('Help');?></a>
|
||||
<input type="submit" value="Save" /> <button id="ldap_action_test_connection" name="ldap_action_test_connection">Test Configuration</button> <a href="http://owncloud.org/support/ldap-backend/" target="_blank"><img src="<?php echo OCP\Util::imagePath('', 'actions/info.png'); ?>" style="height:1.75ex" /> <?php echo $l->t('Help');?></a>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
|
|
@ -32,8 +32,8 @@ class Test_Group_Ldap extends UnitTestCase {
|
|||
$this->assertIsA(OC_Group::getGroups(), gettype(array()));
|
||||
$this->assertIsA($group_ldap->getGroups(), gettype(array()));
|
||||
|
||||
$this->assertFalse(OC_Group::inGroup('john','dosers'), gettype(false));
|
||||
$this->assertFalse($group_ldap->inGroup('john','dosers'), gettype(false));
|
||||
$this->assertFalse(OC_Group::inGroup('john', 'dosers'), gettype(false));
|
||||
$this->assertFalse($group_ldap->inGroup('john', 'dosers'), gettype(false));
|
||||
//TODO: check also for expected true result. This backend won't be able to do any modifications, maybe use a dummy for this.
|
||||
|
||||
$this->assertIsA(OC_Group::getUserGroups('john doe'), gettype(array()));
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
|
||||
require_once 'apps/user_webdavauth/user_webdavauth.php';
|
||||
|
||||
OC_APP::registerAdmin('user_webdavauth','settings');
|
||||
OC_APP::registerAdmin('user_webdavauth', 'settings');
|
||||
|
||||
OC_User::registerBackend("WEBDAVAUTH");
|
||||
OC_User::useBackend( "WEBDAVAUTH" );
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
print_r($_POST);
|
||||
if($_POST) {
|
||||
|
||||
if(isset($_POST['webdav_url'])) {
|
||||
|
|
|
@ -1,40 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* ownCloud
|
||||
* @author Christian Reiner
|
||||
* @copyright 2011-2012 Christian Reiner <foss@christian-reiner.info>
|
||||
*
|
||||
* 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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file core/ajax/requesttoken.php
|
||||
* @brief Ajax method to retrieve a fresh request protection token for ajax calls
|
||||
* @return json: success/error state indicator including a fresh request token
|
||||
* @author Christian Reiner
|
||||
*/
|
||||
|
||||
// don't load apps or filesystem for this task
|
||||
$RUNTIME_NOAPPS = true;
|
||||
$RUNTIME_NOSETUPFS = true;
|
||||
|
||||
// Sanity checks
|
||||
// using OCP\JSON::callCheck() below protects the token refreshing itself.
|
||||
//OCP\JSON::callCheck ( );
|
||||
OCP\JSON::checkLoggedIn ( );
|
||||
// hand out a fresh token
|
||||
OCP\JSON::success ( array ( 'token' => OCP\Util::callRegister() ) );
|
||||
?>
|
|
@ -40,7 +40,7 @@ OC.EventSource=function(src,data){
|
|||
dataStr+=name+'='+encodeURIComponent(data[name])+'&';
|
||||
}
|
||||
}
|
||||
dataStr+='requesttoken='+OC.Request.Token;
|
||||
dataStr+='requesttoken='+OC.EventSource.requesttoken;
|
||||
if(!this.useFallBack && typeof EventSource !='undefined'){
|
||||
this.source=new EventSource(src+'?'+dataStr);
|
||||
this.source.onmessage=function(e){
|
||||
|
|
|
@ -1,55 +0,0 @@
|
|||
/**
|
||||
* ownCloud
|
||||
*
|
||||
* @file core/js/requesttoken.js
|
||||
* @brief Routine to refresh the Request protection request token periodically
|
||||
* @author Christian Reiner (arkascha)
|
||||
* @copyright 2011-2012 Christian Reiner <foss@christian-reiner.info>
|
||||
*
|
||||
* 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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
OC.Request = {
|
||||
// the request token
|
||||
Token: {},
|
||||
// the lifespan span (in secs)
|
||||
Lifespan: {},
|
||||
// method to refresh the local request token periodically
|
||||
Refresh: function(){
|
||||
// just a client side console log to preserve efficiency
|
||||
console.log("refreshing request token (lifebeat)");
|
||||
var dfd=new $.Deferred();
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: OC.filePath('core','ajax','requesttoken.php'),
|
||||
cache: false,
|
||||
data: { },
|
||||
dataType: 'json'
|
||||
}).done(function(response){
|
||||
// store refreshed token inside this class
|
||||
OC.Request.Token=response.token;
|
||||
dfd.resolve();
|
||||
}).fail(dfd.reject);
|
||||
return dfd;
|
||||
}
|
||||
}
|
||||
// accept requesttoken and lifespan into the OC namespace
|
||||
OC.Request.Token = oc_requesttoken;
|
||||
OC.Request.Lifespan = oc_requestlifespan;
|
||||
// refresh the request token periodically shortly before it becomes invalid on the server side
|
||||
setInterval(OC.Request.Refresh,Math.floor(1000*OC.Request.Lifespan*0.93)), // 93% of lifespan value, close to when the token expires
|
||||
// early bind token as additional ajax argument for every single request
|
||||
$(document).bind('ajaxSend', function(elm, xhr, s){xhr.setRequestHeader('requesttoken', OC.Request.Token);});
|
|
@ -13,9 +13,6 @@ $this->create('search_ajax_search', '/search/ajax/search.php')
|
|||
// AppConfig
|
||||
$this->create('core_ajax_appconfig', '/core/ajax/appconfig.php')
|
||||
->actionInclude('core/ajax/appconfig.php');
|
||||
// RequestToken
|
||||
$this->create('core_ajax_requesttoken', '/core/ajax/requesttoken.php')
|
||||
->actionInclude('core/ajax/requesttoken.php');
|
||||
// Share
|
||||
$this->create('core_ajax_share', '/core/ajax/share.php')
|
||||
->actionInclude('core/ajax/share.php');
|
||||
|
|
|
@ -73,7 +73,7 @@
|
|||
<p>MySQL <?php echo $l->t( 'will be used' ); ?>.</p>
|
||||
<input type="hidden" id="dbtype" name="dbtype" value="mysql" />
|
||||
<?php else: ?>
|
||||
<input type="radio" name="dbtype" value="mysql" id="mysql" <?php OC_Helper::init_radio('dbtype','mysql', 'sqlite'); ?>/>
|
||||
<input type="radio" name="dbtype" value="mysql" id="mysql" <?php OC_Helper::init_radio('dbtype', 'mysql', 'sqlite'); ?>/>
|
||||
<label class="mysql" for="mysql">MySQL</label>
|
||||
<?php endif; ?>
|
||||
<?php endif; ?>
|
||||
|
@ -84,7 +84,7 @@
|
|||
<input type="hidden" id="dbtype" name="dbtype" value="pgsql" />
|
||||
<?php else: ?>
|
||||
<label class="pgsql" for="pgsql">PostgreSQL</label>
|
||||
<input type="radio" name="dbtype" value='pgsql' id="pgsql" <?php OC_Helper::init_radio('dbtype','pgsql', 'sqlite'); ?>/>
|
||||
<input type="radio" name="dbtype" value='pgsql' id="pgsql" <?php OC_Helper::init_radio('dbtype', 'pgsql', 'sqlite'); ?>/>
|
||||
<?php endif; ?>
|
||||
<?php endif; ?>
|
||||
|
||||
|
@ -94,7 +94,7 @@
|
|||
<input type="hidden" id="dbtype" name="dbtype" value="oci" />
|
||||
<?php else: ?>
|
||||
<label class="oci" for="oci">Oracle</label>
|
||||
<input type="radio" name="dbtype" value='oci' id="oci" <?php OC_Helper::init_radio('dbtype','oci', 'sqlite'); ?>/>
|
||||
<input type="radio" name="dbtype" value='oci' id="oci" <?php OC_Helper::init_radio('dbtype', 'oci', 'sqlite'); ?>/>
|
||||
<?php endif; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
var oc_webroot = '<?php echo OC::$WEBROOT; ?>';
|
||||
var oc_appswebroots = <?php echo $_['apps_paths'] ?>;
|
||||
var oc_requesttoken = '<?php echo $_['requesttoken']; ?>';
|
||||
var oc_requestlifespan = '<?php echo $_['requestlifespan']; ?>';
|
||||
</script>
|
||||
<?php foreach ($_['jsfiles'] as $jsfile): ?>
|
||||
<script type="text/javascript" src="<?php echo $jsfile; ?>"></script>
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
var oc_webroot = '<?php echo OC::$WEBROOT; ?>';
|
||||
var oc_appswebroots = <?php echo $_['apps_paths'] ?>;
|
||||
var oc_requesttoken = '<?php echo $_['requesttoken']; ?>';
|
||||
var oc_requestlifespan = '<?php echo $_['requestlifespan']; ?>';
|
||||
var datepickerFormatDate = <?php echo json_encode($l->l('jsdate', 'jsdate')) ?>;
|
||||
var dayNames = <?php echo json_encode(array((string)$l->t('Sunday'), (string)$l->t('Monday'), (string)$l->t('Tuesday'), (string)$l->t('Wednesday'), (string)$l->t('Thursday'), (string)$l->t('Friday'), (string)$l->t('Saturday'))) ?>;
|
||||
var monthNames = <?php echo json_encode(array((string)$l->t('January'), (string)$l->t('February'), (string)$l->t('March'), (string)$l->t('April'), (string)$l->t('May'), (string)$l->t('June'), (string)$l->t('July'), (string)$l->t('August'), (string)$l->t('September'), (string)$l->t('October'), (string)$l->t('November'), (string)$l->t('December'))) ?>;
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
var oc_appswebroots = <?php echo $_['apps_paths'] ?>;
|
||||
var oc_current_user = '<?php echo OC_User::getUser() ?>';
|
||||
var oc_requesttoken = '<?php echo $_['requesttoken']; ?>';
|
||||
var oc_requestlifespan = '<?php echo $_['requestlifespan']; ?>';
|
||||
var datepickerFormatDate = <?php echo json_encode($l->l('jsdate', 'jsdate')) ?>;
|
||||
var dayNames = <?php echo json_encode(array((string)$l->t('Sunday'), (string)$l->t('Monday'), (string)$l->t('Tuesday'), (string)$l->t('Wednesday'), (string)$l->t('Thursday'), (string)$l->t('Friday'), (string)$l->t('Saturday'))) ?>;
|
||||
var monthNames = <?php echo json_encode(array((string)$l->t('January'), (string)$l->t('February'), (string)$l->t('March'), (string)$l->t('April'), (string)$l->t('May'), (string)$l->t('June'), (string)$l->t('July'), (string)$l->t('August'), (string)$l->t('September'), (string)$l->t('October'), (string)$l->t('November'), (string)$l->t('December'))) ?>;
|
||||
|
@ -21,6 +20,13 @@
|
|||
<?php foreach($_['jsfiles'] as $jsfile): ?>
|
||||
<script type="text/javascript" src="<?php echo $jsfile; ?>"></script>
|
||||
<?php endforeach; ?>
|
||||
<script type="text/javascript">
|
||||
requesttoken = '<?php echo $_['requesttoken']; ?>';
|
||||
OC.EventSource.requesttoken=requesttoken;
|
||||
$(document).bind('ajaxSend', function(elm, xhr, s) {
|
||||
xhr.setRequestHeader('requesttoken', requesttoken);
|
||||
});
|
||||
</script>
|
||||
<?php foreach($_['headers'] as $header): ?>
|
||||
<?php
|
||||
echo '<'.$header['tag'].' ';
|
||||
|
|
4
cron.php
4
cron.php
|
@ -30,7 +30,7 @@ class my_temporary_cron_class {
|
|||
// We use this function to handle (unexpected) shutdowns
|
||||
function handleUnexpectedShutdown() {
|
||||
// Delete lockfile
|
||||
if( !my_temporary_cron_class::$keeplock && file_exists( my_temporary_cron_class::$lockfile )){
|
||||
if( !my_temporary_cron_class::$keeplock && file_exists( my_temporary_cron_class::$lockfile )) {
|
||||
unlink( my_temporary_cron_class::$lockfile );
|
||||
}
|
||||
|
||||
|
@ -80,7 +80,7 @@ if( OC::$CLI ) {
|
|||
}
|
||||
|
||||
// check if backgroundjobs is still running
|
||||
if( file_exists( my_temporary_cron_class::$lockfile )){
|
||||
if( file_exists( my_temporary_cron_class::$lockfile )) {
|
||||
my_temporary_cron_class::$keeplock = true;
|
||||
my_temporary_cron_class::$sent = true;
|
||||
echo "Another instance of cron.php is still running!";
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-11-04 00:00+0100\n"
|
||||
"POT-Creation-Date: 2012-11-05 00:03+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -29,7 +29,7 @@ msgstr ""
|
|||
msgid "This category already exists: "
|
||||
msgstr ""
|
||||
|
||||
#: js/js.js:243 templates/layout.user.php:53 templates/layout.user.php:54
|
||||
#: js/js.js:243 templates/layout.user.php:59 templates/layout.user.php:60
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
|
@ -314,87 +314,87 @@ msgstr ""
|
|||
msgid "Finish setup"
|
||||
msgstr ""
|
||||
|
||||
#: templates/layout.guest.php:16 templates/layout.user.php:17
|
||||
#: templates/layout.guest.php:15 templates/layout.user.php:16
|
||||
msgid "Sunday"
|
||||
msgstr ""
|
||||
|
||||
#: templates/layout.guest.php:16 templates/layout.user.php:17
|
||||
#: templates/layout.guest.php:15 templates/layout.user.php:16
|
||||
msgid "Monday"
|
||||
msgstr ""
|
||||
|
||||
#: templates/layout.guest.php:16 templates/layout.user.php:17
|
||||
#: templates/layout.guest.php:15 templates/layout.user.php:16
|
||||
msgid "Tuesday"
|
||||
msgstr ""
|
||||
|
||||
#: templates/layout.guest.php:16 templates/layout.user.php:17
|
||||
#: templates/layout.guest.php:15 templates/layout.user.php:16
|
||||
msgid "Wednesday"
|
||||
msgstr ""
|
||||
|
||||
#: templates/layout.guest.php:16 templates/layout.user.php:17
|
||||
#: templates/layout.guest.php:15 templates/layout.user.php:16
|
||||
msgid "Thursday"
|
||||
msgstr ""
|
||||
|
||||
#: templates/layout.guest.php:16 templates/layout.user.php:17
|
||||
#: templates/layout.guest.php:15 templates/layout.user.php:16
|
||||
msgid "Friday"
|
||||
msgstr ""
|
||||
|
||||
#: templates/layout.guest.php:16 templates/layout.user.php:17
|
||||
#: templates/layout.guest.php:15 templates/layout.user.php:16
|
||||
msgid "Saturday"
|
||||
msgstr ""
|
||||
|
||||
#: templates/layout.guest.php:17 templates/layout.user.php:18
|
||||
#: templates/layout.guest.php:16 templates/layout.user.php:17
|
||||
msgid "January"
|
||||
msgstr ""
|
||||
|
||||
#: templates/layout.guest.php:17 templates/layout.user.php:18
|
||||
#: templates/layout.guest.php:16 templates/layout.user.php:17
|
||||
msgid "February"
|
||||
msgstr ""
|
||||
|
||||
#: templates/layout.guest.php:17 templates/layout.user.php:18
|
||||
#: templates/layout.guest.php:16 templates/layout.user.php:17
|
||||
msgid "March"
|
||||
msgstr ""
|
||||
|
||||
#: templates/layout.guest.php:17 templates/layout.user.php:18
|
||||
#: templates/layout.guest.php:16 templates/layout.user.php:17
|
||||
msgid "April"
|
||||
msgstr ""
|
||||
|
||||
#: templates/layout.guest.php:17 templates/layout.user.php:18
|
||||
#: templates/layout.guest.php:16 templates/layout.user.php:17
|
||||
msgid "May"
|
||||
msgstr ""
|
||||
|
||||
#: templates/layout.guest.php:17 templates/layout.user.php:18
|
||||
#: templates/layout.guest.php:16 templates/layout.user.php:17
|
||||
msgid "June"
|
||||
msgstr ""
|
||||
|
||||
#: templates/layout.guest.php:17 templates/layout.user.php:18
|
||||
#: templates/layout.guest.php:16 templates/layout.user.php:17
|
||||
msgid "July"
|
||||
msgstr ""
|
||||
|
||||
#: templates/layout.guest.php:17 templates/layout.user.php:18
|
||||
#: templates/layout.guest.php:16 templates/layout.user.php:17
|
||||
msgid "August"
|
||||
msgstr ""
|
||||
|
||||
#: templates/layout.guest.php:17 templates/layout.user.php:18
|
||||
#: templates/layout.guest.php:16 templates/layout.user.php:17
|
||||
msgid "September"
|
||||
msgstr ""
|
||||
|
||||
#: templates/layout.guest.php:17 templates/layout.user.php:18
|
||||
#: templates/layout.guest.php:16 templates/layout.user.php:17
|
||||
msgid "October"
|
||||
msgstr ""
|
||||
|
||||
#: templates/layout.guest.php:17 templates/layout.user.php:18
|
||||
#: templates/layout.guest.php:16 templates/layout.user.php:17
|
||||
msgid "November"
|
||||
msgstr ""
|
||||
|
||||
#: templates/layout.guest.php:17 templates/layout.user.php:18
|
||||
#: templates/layout.guest.php:16 templates/layout.user.php:17
|
||||
msgid "December"
|
||||
msgstr ""
|
||||
|
||||
#: templates/layout.guest.php:42
|
||||
#: templates/layout.guest.php:41
|
||||
msgid "web services under your control"
|
||||
msgstr ""
|
||||
|
||||
#: templates/layout.user.php:38
|
||||
#: templates/layout.user.php:44
|
||||
msgid "Log out"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-11-04 00:00+0100\n"
|
||||
"POT-Creation-Date: 2012-11-05 00:03+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-11-04 00:00+0100\n"
|
||||
"POT-Creation-Date: 2012-11-05 00:03+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-11-04 00:00+0100\n"
|
||||
"POT-Creation-Date: 2012-11-05 00:03+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-11-04 00:00+0100\n"
|
||||
"POT-Creation-Date: 2012-11-05 00:03+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-11-04 00:00+0100\n"
|
||||
"POT-Creation-Date: 2012-11-05 00:03+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-11-04 00:01+0100\n"
|
||||
"POT-Creation-Date: 2012-11-05 00:03+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-11-04 00:01+0100\n"
|
||||
"POT-Creation-Date: 2012-11-05 00:03+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-11-04 00:00+0100\n"
|
||||
"POT-Creation-Date: 2012-11-05 00:03+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
|
|
@ -476,7 +476,7 @@ class MDB2_Driver_Reverse_sqlite3 extends MDB2_Driver_Reverse_Common
|
|||
$definition['unique'] = true;
|
||||
$count = count($column_names);
|
||||
for ($i=0; $i<$count; ++$i) {
|
||||
$column_name = strtok($column_names[$i]," ");
|
||||
$column_name = strtok($column_names[$i], " ");
|
||||
$collation = strtok(" ");
|
||||
$definition['fields'][$column_name] = array(
|
||||
'position' => $i+1
|
||||
|
|
|
@ -351,7 +351,7 @@ class MDB2_Driver_sqlite3 extends MDB2_Driver_Common
|
|||
}
|
||||
|
||||
if ($database_file !== ':memory:') {
|
||||
if(!strpos($database_file,'.db')) {
|
||||
if(!strpos($database_file, '.db')) {
|
||||
$database_file="$datadir/$database_file.db";
|
||||
}
|
||||
if (!file_exists($database_file)) {
|
||||
|
@ -387,7 +387,7 @@ class MDB2_Driver_sqlite3 extends MDB2_Driver_Common
|
|||
|
||||
$php_errormsg = '';
|
||||
$this->connection = new SQLite3($database_file);
|
||||
if(is_callable(array($this->connection,'busyTimeout'))) {//busy timout is only available in php>=5.3
|
||||
if(is_callable(array($this->connection, 'busyTimeout'))) {//busy timout is only available in php>=5.3
|
||||
$this->connection->busyTimeout(100);
|
||||
}
|
||||
$this->_lasterror = $this->connection->lastErrorMsg();
|
||||
|
@ -397,8 +397,7 @@ class MDB2_Driver_sqlite3 extends MDB2_Driver_Common
|
|||
}
|
||||
|
||||
if ($this->fix_assoc_fields_names ||
|
||||
$this->options['portability'] & MDB2_PORTABILITY_FIX_ASSOC_FIELD_NAMES)
|
||||
{
|
||||
$this->options['portability'] & MDB2_PORTABILITY_FIX_ASSOC_FIELD_NAMES) {
|
||||
$this->connection->exec("PRAGMA short_column_names = 1");
|
||||
$this->fix_assoc_fields_names = true;
|
||||
}
|
||||
|
|
|
@ -185,7 +185,7 @@ class OC_App{
|
|||
}else{
|
||||
$download=OC_OCSClient::getApplicationDownload($app, 1);
|
||||
if(isset($download['downloadlink']) and $download['downloadlink']!='') {
|
||||
$app=OC_Installer::installApp(array('source'=>'http','href'=>$download['downloadlink']));
|
||||
$app=OC_Installer::installApp(array('source'=>'http', 'href'=>$download['downloadlink']));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ class OC_Archive_TAR extends OC_Archive{
|
|||
private $path;
|
||||
|
||||
function __construct($source) {
|
||||
$types=array(null,'gz','bz');
|
||||
$types=array(null, 'gz', 'bz');
|
||||
$this->path=$source;
|
||||
$this->tar=new Archive_Tar($source, $types[self::getTarType($source)]);
|
||||
}
|
||||
|
@ -130,8 +130,7 @@ class OC_Archive_TAR extends OC_Archive{
|
|||
if( $file == $header['filename']
|
||||
or $file.'/' == $header['filename']
|
||||
or '/'.$file.'/' == $header['filename']
|
||||
or '/'.$file == $header['filename'])
|
||||
{
|
||||
or '/'.$file == $header['filename']) {
|
||||
return $header;
|
||||
}
|
||||
}
|
||||
|
@ -309,7 +308,7 @@ class OC_Archive_TAR extends OC_Archive{
|
|||
if($mode=='r' or $mode=='rb') {
|
||||
return fopen($tmpFile, $mode);
|
||||
}else{
|
||||
OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this,'writeBack');
|
||||
OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this, 'writeBack');
|
||||
self::$tempFiles[$tmpFile]=$path;
|
||||
return fopen('close://'.$tmpFile, $mode);
|
||||
}
|
||||
|
@ -334,7 +333,7 @@ class OC_Archive_TAR extends OC_Archive{
|
|||
$this->tar->_close();
|
||||
$this->tar=null;
|
||||
}
|
||||
$types=array(null,'gz','bz');
|
||||
$types=array(null, 'gz', 'bz');
|
||||
$this->tar=new Archive_Tar($this->path, $types[self::getTarType($this->path)]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -171,7 +171,7 @@ class OC_Archive_ZIP extends OC_Archive{
|
|||
$ext='';
|
||||
}
|
||||
$tmpFile=OCP\Files::tmpFile($ext);
|
||||
OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this,'writeBack');
|
||||
OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this, 'writeBack');
|
||||
if($this->fileExists($path)) {
|
||||
$this->extractFile($path, $tmpFile);
|
||||
}
|
||||
|
|
|
@ -40,11 +40,11 @@ class OC_BackgroundJob{
|
|||
* @param $type execution type
|
||||
* @return boolean
|
||||
*
|
||||
* This method sets the execution type of the background jobs. Possible types
|
||||
* This method sets the execution type of the background jobs. Possible types
|
||||
* are "none", "ajax", "webcron", "cron"
|
||||
*/
|
||||
public static function setExecutionType( $type ) {
|
||||
if( !in_array( $type, array('none', 'ajax', 'webcron', 'cron'))){
|
||||
if( !in_array( $type, array('none', 'ajax', 'webcron', 'cron'))) {
|
||||
return false;
|
||||
}
|
||||
return OC_Appconfig::setValue( 'core', 'backgroundjobs_mode', $type );
|
||||
|
|
20
lib/base.php
20
lib/base.php
|
@ -239,7 +239,7 @@ class OC{
|
|||
}
|
||||
if(file_exists(OC::$SERVERROOT."/config/config.php") and !is_writable(OC::$SERVERROOT."/config/config.php")) {
|
||||
$tmpl = new OC_Template( '', 'error', 'guest' );
|
||||
$tmpl->assign('errors', array(1=>array('error'=>"Can't write into config directory 'config'",'hint'=>"You can usually fix this by giving the webserver user write access to the config directory in owncloud")));
|
||||
$tmpl->assign('errors', array(1=>array('error'=>"Can't write into config directory 'config'", 'hint'=>"You can usually fix this by giving the webserver user write access to the config directory in owncloud")));
|
||||
$tmpl->printPage();
|
||||
exit;
|
||||
}
|
||||
|
@ -264,8 +264,6 @@ class OC{
|
|||
OC_Util::addScript( "jquery-tipsy" );
|
||||
OC_Util::addScript( "oc-dialogs" );
|
||||
OC_Util::addScript( "js" );
|
||||
// request protection token MUST be defined after the jquery library but before any $('document').ready()
|
||||
OC_Util::addScript( "requesttoken" );
|
||||
OC_Util::addScript( "eventsource" );
|
||||
OC_Util::addScript( "config" );
|
||||
//OC_Util::addScript( "multiselect" );
|
||||
|
@ -322,7 +320,7 @@ class OC{
|
|||
|
||||
public static function init() {
|
||||
// register autoloader
|
||||
spl_autoload_register(array('OC','autoload'));
|
||||
spl_autoload_register(array('OC', 'autoload'));
|
||||
setlocale(LC_ALL, 'en_US.UTF-8');
|
||||
|
||||
// set some stuff
|
||||
|
@ -440,7 +438,7 @@ class OC{
|
|||
OC_Hook::connect('OC_Filesystem', 'rename', 'OC_Filesystem', 'isBlacklisted');
|
||||
|
||||
//make sure temporary files are cleaned up
|
||||
register_shutdown_function(array('OC_Helper','cleanTmp'));
|
||||
register_shutdown_function(array('OC_Helper', 'cleanTmp'));
|
||||
|
||||
//parse the given parameters
|
||||
self::$REQUESTEDAPP = (isset($_GET['app']) && trim($_GET['app']) != '' && !is_null($_GET['app'])?str_replace(array('\0', '/', '\\', '..'), '', strip_tags($_GET['app'])):OC_Config::getValue('defaultapp', 'files'));
|
||||
|
@ -526,8 +524,7 @@ class OC{
|
|||
}
|
||||
$file_ext = substr($param['file'], -3);
|
||||
if ($file_ext != 'php'
|
||||
|| !self::loadAppScriptFile($param))
|
||||
{
|
||||
|| !self::loadAppScriptFile($param)) {
|
||||
header('HTTP/1.0 404 Not Found');
|
||||
}
|
||||
}
|
||||
|
@ -597,8 +594,7 @@ class OC{
|
|||
if(!isset($_COOKIE["oc_remember_login"])
|
||||
|| !isset($_COOKIE["oc_token"])
|
||||
|| !isset($_COOKIE["oc_username"])
|
||||
|| !$_COOKIE["oc_remember_login"])
|
||||
{
|
||||
|| !$_COOKIE["oc_remember_login"]) {
|
||||
return false;
|
||||
}
|
||||
OC_App::loadApps(array('authentication'));
|
||||
|
@ -623,9 +619,9 @@ class OC{
|
|||
OC_Util::redirectToDefaultPage();
|
||||
// doesn't return
|
||||
}
|
||||
// if you reach this point you have changed your password
|
||||
// if you reach this point you have changed your password
|
||||
// or you are an attacker
|
||||
// we can not delete tokens here because users may reach
|
||||
// we can not delete tokens here because users may reach
|
||||
// this point multiple times after a password change
|
||||
OC_Log::write('core', 'Authentication cookie rejected for user '.$_COOKIE['oc_username'], OC_Log::WARN);
|
||||
}
|
||||
|
@ -669,7 +665,7 @@ class OC{
|
|||
}
|
||||
OC_App::loadApps(array('authentication'));
|
||||
if (OC_User::login($_SERVER["PHP_AUTH_USER"], $_SERVER["PHP_AUTH_PW"])) {
|
||||
//OC_Log::write('core',"Logged in with HTTP Authentication",OC_Log::DEBUG);
|
||||
//OC_Log::write('core',"Logged in with HTTP Authentication", OC_Log::DEBUG);
|
||||
OC_User::unsetMagicInCookie();
|
||||
$_REQUEST['redirect_url'] = (isset($_SERVER['REQUEST_URI'])?$_SERVER['REQUEST_URI']:'');
|
||||
OC_Util::redirectToDefaultPage();
|
||||
|
|
|
@ -57,7 +57,7 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D
|
|||
*/
|
||||
public function get() {
|
||||
|
||||
return OC_Filesystem::fopen($this->path,'rb');
|
||||
return OC_Filesystem::fopen($this->path, 'rb');
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -102,7 +102,7 @@ class OC_Connector_Sabre_Locks extends Sabre_DAV_Locks_Backend_Abstract {
|
|||
* @param Sabre_DAV_Locks_LockInfo $lockInfo
|
||||
* @return bool
|
||||
*/
|
||||
public function lock($uri,Sabre_DAV_Locks_LockInfo $lockInfo) {
|
||||
public function lock($uri, Sabre_DAV_Locks_LockInfo $lockInfo) {
|
||||
|
||||
// We're making the lock timeout 5 minutes
|
||||
$lockInfo->timeout = 300;
|
||||
|
@ -134,7 +134,7 @@ class OC_Connector_Sabre_Locks extends Sabre_DAV_Locks_Backend_Abstract {
|
|||
* @param Sabre_DAV_Locks_LockInfo $lockInfo
|
||||
* @return bool
|
||||
*/
|
||||
public function unlock($uri,Sabre_DAV_Locks_LockInfo $lockInfo) {
|
||||
public function unlock($uri, Sabre_DAV_Locks_LockInfo $lockInfo) {
|
||||
|
||||
$query = OC_DB::prepare( 'DELETE FROM `*PREFIX*locks` WHERE `userid` = ? AND `uri` = ? AND `token` = ?' );
|
||||
$result = $query->execute( array(OC_User::getUser(), $uri, $lockInfo->token));
|
||||
|
|
|
@ -85,7 +85,7 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
|
|||
$this->path = $newPath;
|
||||
|
||||
$query = OC_DB::prepare( 'UPDATE `*PREFIX*properties` SET `propertypath` = ? WHERE `userid` = ? AND `propertypath` = ?' );
|
||||
$query->execute( array( $newPath,OC_User::getUser(), $oldPath ));
|
||||
$query->execute( array( $newPath, OC_User::getUser(), $oldPath ));
|
||||
|
||||
}
|
||||
|
||||
|
@ -159,7 +159,7 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
|
|||
$query->execute( array( OC_User::getUser(), $this->path, $propertyName, $propertyValue ));
|
||||
} else {
|
||||
$query = OC_DB::prepare( 'UPDATE `*PREFIX*properties` SET `propertyvalue` = ? WHERE `userid` = ? AND `propertypath` = ? AND `propertyname` = ?' );
|
||||
$query->execute( array( $propertyValue,OC_User::getUser(), $this->path, $propertyName ));
|
||||
$query->execute( array( $propertyValue, OC_User::getUser(), $this->path, $propertyName ));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
/**
|
||||
* This plugin check user quota and deny creating files when they exceeds the quota.
|
||||
*
|
||||
*
|
||||
* @copyright Copyright (C) 2012 entreCables S.L. All rights reserved.
|
||||
* @author Sergio Cambra
|
||||
* @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
|
||||
|
@ -10,9 +10,9 @@
|
|||
class OC_Connector_Sabre_QuotaPlugin extends Sabre_DAV_ServerPlugin {
|
||||
|
||||
/**
|
||||
* Reference to main server object
|
||||
*
|
||||
* @var Sabre_DAV_Server
|
||||
* Reference to main server object
|
||||
*
|
||||
* @var Sabre_DAV_Server
|
||||
*/
|
||||
private $server;
|
||||
|
||||
|
@ -23,8 +23,8 @@ class OC_Connector_Sabre_QuotaPlugin extends Sabre_DAV_ServerPlugin {
|
|||
* addPlugin is called.
|
||||
*
|
||||
* This method should set up the requires event subscriptions.
|
||||
*
|
||||
* @param Sabre_DAV_Server $server
|
||||
*
|
||||
* @param Sabre_DAV_Server $server
|
||||
* @return void
|
||||
*/
|
||||
public function initialize(Sabre_DAV_Server $server) {
|
||||
|
@ -37,10 +37,10 @@ class OC_Connector_Sabre_QuotaPlugin extends Sabre_DAV_ServerPlugin {
|
|||
|
||||
/**
|
||||
* This method is called before any HTTP method and forces users to be authenticated
|
||||
*
|
||||
*
|
||||
* @param string $method
|
||||
* @throws Sabre_DAV_Exception
|
||||
* @return bool
|
||||
* @return bool
|
||||
*/
|
||||
public function checkQuota($uri, $data = null) {
|
||||
$expected = $this->server->httpRequest->getHeader('X-Expected-Entity-Length');
|
||||
|
|
|
@ -324,7 +324,7 @@ class OC_DB {
|
|||
if( PEAR::isError($result)) {
|
||||
$entry = 'DB Error: "'.$result->getMessage().'"<br />';
|
||||
$entry .= 'Offending command was: '.htmlentities($query).'<br />';
|
||||
OC_Log::write('core', $entry,OC_Log::FATAL);
|
||||
OC_Log::write('core', $entry, OC_Log::FATAL);
|
||||
error_log('DB error: '.$entry);
|
||||
die( $entry );
|
||||
}
|
||||
|
@ -334,7 +334,7 @@ class OC_DB {
|
|||
}catch(PDOException $e) {
|
||||
$entry = 'DB Error: "'.$e->getMessage().'"<br />';
|
||||
$entry .= 'Offending command was: '.htmlentities($query).'<br />';
|
||||
OC_Log::write('core', $entry,OC_Log::FATAL);
|
||||
OC_Log::write('core', $entry, OC_Log::FATAL);
|
||||
error_log('DB error: '.$entry);
|
||||
die( $entry );
|
||||
}
|
||||
|
|
|
@ -61,7 +61,7 @@ class OC_FileCache{
|
|||
*
|
||||
* $data is an assiciative array in the same format as returned by get
|
||||
*/
|
||||
public static function put($path,$data, $root=false) {
|
||||
public static function put($path, $data, $root=false) {
|
||||
if($root===false) {
|
||||
$root=OC_Filesystem::getRoot();
|
||||
}
|
||||
|
@ -120,7 +120,7 @@ class OC_FileCache{
|
|||
private static function update($id, $data) {
|
||||
$arguments=array();
|
||||
$queryParts=array();
|
||||
foreach(array('size','mtime','ctime','mimetype','encrypted','versioned','writable') as $attribute) {
|
||||
foreach(array('size','mtime','ctime','mimetype','encrypted','versioned', 'writable') as $attribute) {
|
||||
if(isset($data[$attribute])) {
|
||||
//Convert to int it args are false
|
||||
if($data[$attribute] === false) {
|
||||
|
@ -227,7 +227,7 @@ class OC_FileCache{
|
|||
$where = '`name` LIKE ? AND `user`=?';
|
||||
}
|
||||
$query=OC_DB::prepare('SELECT '.$select.' FROM `*PREFIX*fscache` WHERE '.$where);
|
||||
$result=$query->execute(array("%$search%",OC_User::getUser()));
|
||||
$result=$query->execute(array("%$search%", OC_User::getUser()));
|
||||
$names=array();
|
||||
while($row=$result->fetchRow()) {
|
||||
if(!$returnData) {
|
||||
|
@ -366,7 +366,7 @@ class OC_FileCache{
|
|||
* @param int count (optional)
|
||||
* @param string root (optional)
|
||||
*/
|
||||
public static function scan($path,$eventSource=false,&$count=0, $root=false) {
|
||||
public static function scan($path, $eventSource=false,&$count=0, $root=false) {
|
||||
if($eventSource) {
|
||||
$eventSource->send('scanning', array('file'=>$path, 'count'=>$count));
|
||||
}
|
||||
|
@ -402,7 +402,7 @@ class OC_FileCache{
|
|||
}
|
||||
|
||||
OC_FileCache_Update::cleanFolder($path, $root);
|
||||
self::increaseSize($path,$totalSize, $root);
|
||||
self::increaseSize($path, $totalSize, $root);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -448,7 +448,7 @@ class OC_FileCache{
|
|||
* @return array of file paths
|
||||
*
|
||||
* $part1 and $part2 together form the complete mimetype.
|
||||
* e.g. searchByMime('text','plain')
|
||||
* e.g. searchByMime('text', 'plain')
|
||||
*
|
||||
* seccond mimetype part can be ommited
|
||||
* e.g. searchByMime('audio')
|
||||
|
@ -500,7 +500,7 @@ class OC_FileCache{
|
|||
* trigger an update for the cache by setting the mtimes to 0
|
||||
* @param string $user (optional)
|
||||
*/
|
||||
public static function triggerUpdate($user=''){
|
||||
public static function triggerUpdate($user='') {
|
||||
if($user) {
|
||||
$query=OC_DB::prepare('UPDATE `*PREFIX*fscache` SET `mtime`=0 WHERE `user`=? AND `mimetype`="httpd/unix-directory"');
|
||||
$query->execute(array($user));
|
||||
|
|
|
@ -85,7 +85,7 @@ class OC_FileCache_Update{
|
|||
$file=$path.'/'.$filename;
|
||||
$isDir=$view->is_dir($file);
|
||||
if(self::hasUpdated($file, $root, $isDir)) {
|
||||
if($isDir){
|
||||
if($isDir) {
|
||||
self::updateFolder($file, $root);
|
||||
}elseif($root===false) {//filesystem hooks are only valid for the default root
|
||||
OC_Hook::emit('OC_Filesystem', 'post_write', array('path'=>$file));
|
||||
|
@ -165,7 +165,7 @@ class OC_FileCache_Update{
|
|||
$mtime=$view->filemtime($path.'/');
|
||||
$ctime=$view->filectime($path.'/');
|
||||
$writable=$view->is_writable($path.'/');
|
||||
OC_FileCache::put($path, array('size'=>$size,'mtime'=>$mtime,'ctime'=>$ctime,'mimetype'=>$mimetype,'writable'=>$writable));
|
||||
OC_FileCache::put($path, array('size'=>$size,'mtime'=>$mtime,'ctime'=>$ctime,'mimetype'=>$mimetype, 'writable'=>$writable));
|
||||
}else{
|
||||
$count=0;
|
||||
OC_FileCache::scan($path, null, $count, $root);
|
||||
|
@ -174,7 +174,7 @@ class OC_FileCache_Update{
|
|||
}else{
|
||||
$size=OC_FileCache::scanFile($path, $root);
|
||||
}
|
||||
if($path !== '' and $path !== '/'){
|
||||
if($path !== '' and $path !== '/') {
|
||||
OC_FileCache::increaseSize(dirname($path), $size-$cachedSize, $root);
|
||||
}
|
||||
}
|
||||
|
@ -200,7 +200,7 @@ class OC_FileCache_Update{
|
|||
* @param string newPath
|
||||
* @param string root (optional)
|
||||
*/
|
||||
public static function rename($oldPath,$newPath, $root=false) {
|
||||
public static function rename($oldPath, $newPath, $root=false) {
|
||||
if(!OC_FileCache::inCache($oldPath, $root)) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -97,7 +97,7 @@ class OC_FileProxy{
|
|||
return true;
|
||||
}
|
||||
|
||||
public static function runPostProxies($operation,$path, $result) {
|
||||
public static function runPostProxies($operation, $path, $result) {
|
||||
if(!self::$enabled) {
|
||||
return $result;
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ class OC_FileProxy_FileOperations extends OC_FileProxy{
|
|||
static $rootView;
|
||||
|
||||
public function premkdir($path) {
|
||||
if(!self::$rootView){
|
||||
if(!self::$rootView) {
|
||||
self::$rootView = new OC_FilesystemView('');
|
||||
}
|
||||
return !self::$rootView->file_exists($path);
|
||||
|
|
|
@ -38,9 +38,9 @@ class OC_FileProxy_Quota extends OC_FileProxy{
|
|||
if(in_array($user, $this->userQuota)) {
|
||||
return $this->userQuota[$user];
|
||||
}
|
||||
$userQuota=OC_Preferences::getValue($user,'files','quota','default');
|
||||
$userQuota=OC_Preferences::getValue($user, 'files', 'quota', 'default');
|
||||
if($userQuota=='default') {
|
||||
$userQuota=OC_AppConfig::getValue('files','default_quota','none');
|
||||
$userQuota=OC_AppConfig::getValue('files', 'default_quota', 'none');
|
||||
}
|
||||
if($userQuota=='none') {
|
||||
$this->userQuota[$user]=0;
|
||||
|
@ -93,7 +93,7 @@ class OC_FileProxy_Quota extends OC_FileProxy{
|
|||
}
|
||||
|
||||
public function preCopy($path1, $path2) {
|
||||
if(!self::$rootView){
|
||||
if(!self::$rootView) {
|
||||
self::$rootView = new OC_FilesystemView('');
|
||||
}
|
||||
return (self::$rootView->filesize($path1)<$this->getFreeSpace($path2) or $this->getFreeSpace($path2)==0);
|
||||
|
|
|
@ -391,7 +391,7 @@ class OC_Files {
|
|||
*/
|
||||
static function pull($source, $token, $dir, $file) {
|
||||
$tmpfile=tempnam(get_temp_dir(), 'remoteCloudFile');
|
||||
$fp=fopen($tmpfile,'w+');
|
||||
$fp=fopen($tmpfile, 'w+');
|
||||
$url=$source.="/files/pull.php?token=$token";
|
||||
$ch=curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL, $url);
|
||||
|
|
|
@ -48,7 +48,7 @@ abstract class OC_Filestorage{
|
|||
abstract public function copy($path1, $path2);
|
||||
abstract public function fopen($path, $mode);
|
||||
abstract public function getMimeType($path);
|
||||
abstract public function hash($type,$path, $raw = false);
|
||||
abstract public function hash($type, $path, $raw = false);
|
||||
abstract public function free_space($path);
|
||||
abstract public function search($query);
|
||||
abstract public function touch($path, $mtime=null);
|
||||
|
|
|
@ -204,7 +204,7 @@ abstract class OC_Filestorage_Common extends OC_Filestorage {
|
|||
unlink($tmpFile);
|
||||
return $mime;
|
||||
}
|
||||
public function hash($type,$path, $raw = false) {
|
||||
public function hash($type, $path, $raw = false) {
|
||||
$tmpFile=$this->getLocalFile();
|
||||
$hash=hash($type, $tmpFile, $raw);
|
||||
unlink($tmpFile);
|
||||
|
@ -264,7 +264,7 @@ abstract class OC_Filestorage_Common extends OC_Filestorage {
|
|||
$files[]=$dir.'/'.$item;
|
||||
}
|
||||
if($this->is_dir($dir.'/'.$item)) {
|
||||
$files=array_merge($files,$this->searchInDir($query, $dir.'/'.$item));
|
||||
$files=array_merge($files, $this->searchInDir($query, $dir.'/'.$item));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ class OC_Filestorage_Local extends OC_Filestorage_Common{
|
|||
protected $datadir;
|
||||
public function __construct($arguments) {
|
||||
$this->datadir=$arguments['datadir'];
|
||||
if(substr($this->datadir,-1)!=='/') {
|
||||
if(substr($this->datadir, -1)!=='/') {
|
||||
$this->datadir.='/';
|
||||
}
|
||||
}
|
||||
|
@ -20,7 +20,7 @@ class OC_Filestorage_Local extends OC_Filestorage_Common{
|
|||
return opendir($this->datadir.$path);
|
||||
}
|
||||
public function is_dir($path) {
|
||||
if(substr($path,-1)=='/') {
|
||||
if(substr($path, -1)=='/') {
|
||||
$path=substr($path, 0, -1);
|
||||
}
|
||||
return is_dir($this->datadir.$path);
|
||||
|
@ -86,11 +86,11 @@ class OC_Filestorage_Local extends OC_Filestorage_Common{
|
|||
}
|
||||
public function rename($path1, $path2) {
|
||||
if (!$this->isUpdatable($path1)) {
|
||||
OC_Log::write('core','unable to rename, file is not writable : '.$path1,OC_Log::ERROR);
|
||||
OC_Log::write('core', 'unable to rename, file is not writable : '.$path1, OC_Log::ERROR);
|
||||
return false;
|
||||
}
|
||||
if(! $this->file_exists($path1)) {
|
||||
OC_Log::write('core','unable to rename, file does not exists : '.$path1,OC_Log::ERROR);
|
||||
OC_Log::write('core', 'unable to rename, file does not exists : '.$path1, OC_Log::ERROR);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -103,7 +103,7 @@ class OC_Filestorage_Local extends OC_Filestorage_Common{
|
|||
if(!$this->file_exists($path2)) {
|
||||
$this->mkdir($path2);
|
||||
}
|
||||
$source=substr($path1, strrpos($path1,'/')+1);
|
||||
$source=substr($path1, strrpos($path1, '/')+1);
|
||||
$path2.=$source;
|
||||
}
|
||||
return copy($this->datadir.$path1, $this->datadir.$path2);
|
||||
|
@ -156,8 +156,8 @@ class OC_Filestorage_Local extends OC_Filestorage_Common{
|
|||
return $return;
|
||||
}
|
||||
|
||||
public function hash($path,$type, $raw=false) {
|
||||
return hash_file($type,$this->datadir.$path, $raw);
|
||||
public function hash($path, $type, $raw=false) {
|
||||
return hash_file($type, $this->datadir.$path, $raw);
|
||||
}
|
||||
|
||||
public function free_space($path) {
|
||||
|
@ -182,7 +182,7 @@ class OC_Filestorage_Local extends OC_Filestorage_Common{
|
|||
$files[]=$dir.'/'.$item;
|
||||
}
|
||||
if(is_dir($this->datadir.$dir.'/'.$item)) {
|
||||
$files=array_merge($files,$this->searchInDir($query, $dir.'/'.$item));
|
||||
$files=array_merge($files, $this->searchInDir($query, $dir.'/'.$item));
|
||||
}
|
||||
}
|
||||
return $files;
|
||||
|
|
|
@ -35,10 +35,10 @@
|
|||
* post_create(path)
|
||||
* delete(path, &run)
|
||||
* post_delete(path)
|
||||
* rename(oldpath,newpath, &run)
|
||||
* post_rename(oldpath,newpath)
|
||||
* copy(oldpath,newpath, &run) (if the newpath doesn't exists yes, copy, create and write will be emited in that order)
|
||||
* post_rename(oldpath,newpath)
|
||||
* rename(oldpath, newpath, &run)
|
||||
* post_rename(oldpath, newpath)
|
||||
* copy(oldpath, newpath, &run) (if the newpath doesn't exists yes, copy, create and write will be emited in that order)
|
||||
* post_rename(oldpath, newpath)
|
||||
*
|
||||
* the &run parameter can be set to false to prevent the operation from occuring
|
||||
*/
|
||||
|
@ -209,48 +209,48 @@ class OC_Filesystem{
|
|||
}
|
||||
|
||||
static private function loadSystemMountPoints($user) {
|
||||
if(is_file(OC::$SERVERROOT.'/config/mount.php')) {
|
||||
$mountConfig=include OC::$SERVERROOT.'/config/mount.php';
|
||||
if(isset($mountConfig['global'])) {
|
||||
foreach($mountConfig['global'] as $mountPoint=>$options) {
|
||||
self::mount($options['class'], $options['options'], $mountPoint);
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($mountConfig['group'])) {
|
||||
foreach($mountConfig['group'] as $group=>$mounts) {
|
||||
if(OC_Group::inGroup($user, $group)) {
|
||||
foreach($mounts as $mountPoint=>$options) {
|
||||
$mountPoint=self::setUserVars($mountPoint, $user);
|
||||
foreach($options as &$option) {
|
||||
$option=self::setUserVars($option, $user);
|
||||
}
|
||||
self::mount($options['class'], $options['options'], $mountPoint);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($mountConfig['user'])) {
|
||||
foreach($mountConfig['user'] as $user=>$mounts) {
|
||||
if($user==='all' or strtolower($user)===strtolower($user)) {
|
||||
foreach($mounts as $mountPoint=>$options) {
|
||||
$mountPoint=self::setUserVars($mountPoint, $user);
|
||||
foreach($options as &$option) {
|
||||
$option=self::setUserVars($option, $user);
|
||||
}
|
||||
self::mount($options['class'], $options['options'], $mountPoint);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$mtime=filemtime(OC::$SERVERROOT.'/config/mount.php');
|
||||
$previousMTime=OC_Appconfig::getValue('files','mountconfigmtime',0);
|
||||
if($mtime>$previousMTime) {//mount config has changed, filecache needs to be updated
|
||||
OC_FileCache::triggerUpdate();
|
||||
OC_Appconfig::setValue('files', 'mountconfigmtime', $mtime);
|
||||
}
|
||||
if(is_file(OC::$SERVERROOT.'/config/mount.php')) {
|
||||
$mountConfig=include OC::$SERVERROOT.'/config/mount.php';
|
||||
if(isset($mountConfig['global'])) {
|
||||
foreach($mountConfig['global'] as $mountPoint=>$options) {
|
||||
self::mount($options['class'], $options['options'], $mountPoint);
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($mountConfig['group'])) {
|
||||
foreach($mountConfig['group'] as $group=>$mounts) {
|
||||
if(OC_Group::inGroup($user, $group)) {
|
||||
foreach($mounts as $mountPoint=>$options) {
|
||||
$mountPoint=self::setUserVars($mountPoint, $user);
|
||||
foreach($options as &$option) {
|
||||
$option=self::setUserVars($option, $user);
|
||||
}
|
||||
self::mount($options['class'], $options['options'], $mountPoint);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($mountConfig['user'])) {
|
||||
foreach($mountConfig['user'] as $user=>$mounts) {
|
||||
if($user==='all' or strtolower($user)===strtolower($user)) {
|
||||
foreach($mounts as $mountPoint=>$options) {
|
||||
$mountPoint=self::setUserVars($mountPoint, $user);
|
||||
foreach($options as &$option) {
|
||||
$option=self::setUserVars($option, $user);
|
||||
}
|
||||
self::mount($options['class'], $options['options'], $mountPoint);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$mtime=filemtime(OC::$SERVERROOT.'/config/mount.php');
|
||||
$previousMTime=OC_Appconfig::getValue('files', 'mountconfigmtime', 0);
|
||||
if($mtime>$previousMTime) {//mount config has changed, filecache needs to be updated
|
||||
OC_FileCache::triggerUpdate();
|
||||
OC_Appconfig::setValue('files', 'mountconfigmtime', $mtime);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -312,7 +312,7 @@ class OC_Filesystem{
|
|||
return false;
|
||||
}
|
||||
}else{
|
||||
OC_Log::write('core','storage backend '.$class.' not found',OC_Log::ERROR);
|
||||
OC_Log::write('core', 'storage backend '.$class.' not found', OC_Log::ERROR);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -356,7 +356,7 @@ class OC_Filesystem{
|
|||
if(substr($mountpoint, -1)!=='/') {
|
||||
$mountpoint=$mountpoint.'/';
|
||||
}
|
||||
self::$mounts[$mountpoint]=array('class'=>$class,'arguments'=>$arguments);
|
||||
self::$mounts[$mountpoint]=array('class'=>$class, 'arguments'=>$arguments);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -403,7 +403,7 @@ class OC_Filesystem{
|
|||
if(strstr($path, '/../') || strrchr($path, '/') === '/..' ) {
|
||||
return false;
|
||||
}
|
||||
if(self::isFileBlacklisted($path)){
|
||||
if(self::isFileBlacklisted($path)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
@ -425,7 +425,7 @@ class OC_Filesystem{
|
|||
}
|
||||
}
|
||||
|
||||
static public function isFileBlacklisted($path){
|
||||
static public function isFileBlacklisted($path) {
|
||||
$blacklist = array('.htaccess');
|
||||
$filename = strtolower(basename($path));
|
||||
return in_array($filename, $blacklist);
|
||||
|
@ -590,7 +590,7 @@ class OC_Filesystem{
|
|||
$path=substr($path, 0, -1);
|
||||
}
|
||||
//remove duplicate slashes
|
||||
while(strpos($path,'//')!==false) {
|
||||
while(strpos($path, '//')!==false) {
|
||||
$path=str_replace('//', '/', $path);
|
||||
}
|
||||
//normalize unicode if possible
|
||||
|
|
|
@ -251,7 +251,7 @@ class OC_FilesystemView {
|
|||
return $this->basicOperation('filemtime', $path);
|
||||
}
|
||||
public function touch($path, $mtime=null) {
|
||||
if(!is_null($mtime) and !is_numeric($mtime)){
|
||||
if(!is_null($mtime) and !is_numeric($mtime)) {
|
||||
$mtime = strtotime($mtime);
|
||||
}
|
||||
return $this->basicOperation('touch', $path, array('write'), $mtime);
|
||||
|
@ -266,7 +266,7 @@ class OC_FilesystemView {
|
|||
$path = $this->getRelativePath($absolutePath);
|
||||
$exists = $this->file_exists($path);
|
||||
$run = true;
|
||||
if( $this->fakeRoot==OC_Filesystem::getRoot() ){
|
||||
if( $this->fakeRoot==OC_Filesystem::getRoot() ) {
|
||||
if(!$exists) {
|
||||
OC_Hook::emit(
|
||||
OC_Filesystem::CLASSNAME,
|
||||
|
@ -294,7 +294,7 @@ class OC_FilesystemView {
|
|||
$count=OC_Helper::streamCopy($data, $target);
|
||||
fclose($target);
|
||||
fclose($data);
|
||||
if( $this->fakeRoot==OC_Filesystem::getRoot() ){
|
||||
if( $this->fakeRoot==OC_Filesystem::getRoot() ) {
|
||||
if(!$exists) {
|
||||
OC_Hook::emit(
|
||||
OC_Filesystem::CLASSNAME,
|
||||
|
@ -337,7 +337,7 @@ class OC_FilesystemView {
|
|||
return false;
|
||||
}
|
||||
$run=true;
|
||||
if( $this->fakeRoot==OC_Filesystem::getRoot() ){
|
||||
if( $this->fakeRoot==OC_Filesystem::getRoot() ) {
|
||||
OC_Hook::emit(
|
||||
OC_Filesystem::CLASSNAME, OC_Filesystem::signal_rename,
|
||||
array(
|
||||
|
@ -362,7 +362,7 @@ class OC_FilesystemView {
|
|||
$storage1->unlink($this->getInternalPath($path1.$postFix1));
|
||||
$result = $count>0;
|
||||
}
|
||||
if( $this->fakeRoot==OC_Filesystem::getRoot() ){
|
||||
if( $this->fakeRoot==OC_Filesystem::getRoot() ) {
|
||||
OC_Hook::emit(
|
||||
OC_Filesystem::CLASSNAME,
|
||||
OC_Filesystem::signal_post_rename,
|
||||
|
@ -389,7 +389,7 @@ class OC_FilesystemView {
|
|||
return false;
|
||||
}
|
||||
$run=true;
|
||||
if( $this->fakeRoot==OC_Filesystem::getRoot() ){
|
||||
if( $this->fakeRoot==OC_Filesystem::getRoot() ) {
|
||||
OC_Hook::emit(
|
||||
OC_Filesystem::CLASSNAME,
|
||||
OC_Filesystem::signal_copy,
|
||||
|
@ -433,7 +433,7 @@ class OC_FilesystemView {
|
|||
$target = $this->fopen($path2.$postFix2, 'w');
|
||||
$result = OC_Helper::streamCopy($source, $target);
|
||||
}
|
||||
if( $this->fakeRoot==OC_Filesystem::getRoot() ){
|
||||
if( $this->fakeRoot==OC_Filesystem::getRoot() ) {
|
||||
OC_Hook::emit(
|
||||
OC_Filesystem::CLASSNAME,
|
||||
OC_Filesystem::signal_post_copy,
|
||||
|
@ -489,7 +489,7 @@ class OC_FilesystemView {
|
|||
$hooks[]='write';
|
||||
break;
|
||||
default:
|
||||
OC_Log::write('core', 'invalid mode ('.$mode.') for '.$path,OC_Log::ERROR);
|
||||
OC_Log::write('core', 'invalid mode ('.$mode.') for '.$path, OC_Log::ERROR);
|
||||
}
|
||||
|
||||
return $this->basicOperation('fopen', $path, $hooks, $mode);
|
||||
|
|
|
@ -475,16 +475,16 @@ class OC_Helper {
|
|||
$dirs = explode(PATH_SEPARATOR, $path);
|
||||
// WARNING : We have to check if open_basedir is enabled :
|
||||
$obd = ini_get('open_basedir');
|
||||
if($obd != "none"){
|
||||
if($obd != "none") {
|
||||
$obd_values = explode(PATH_SEPARATOR, $obd);
|
||||
if(count($obd_values) > 0 and $obd_values[0]){
|
||||
if(count($obd_values) > 0 and $obd_values[0]) {
|
||||
// open_basedir is in effect !
|
||||
// We need to check if the program is in one of these dirs :
|
||||
$dirs = $obd_values;
|
||||
}
|
||||
}
|
||||
foreach($dirs as $dir){
|
||||
foreach($exts as $ext){
|
||||
foreach($dirs as $dir) {
|
||||
foreach($exts as $ext) {
|
||||
if($check_fn("$dir/$name".$ext))
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -271,7 +271,7 @@ class OC_Image {
|
|||
return -1;
|
||||
}
|
||||
if(is_null($this->filepath) || !is_readable($this->filepath)) {
|
||||
OC_Log::write('core','OC_Image->fixOrientation() No readable file path set.', OC_Log::DEBUG);
|
||||
OC_Log::write('core', 'OC_Image->fixOrientation() No readable file path set.', OC_Log::DEBUG);
|
||||
return -1;
|
||||
}
|
||||
$exif = @exif_read_data($this->filepath, 'IFD0');
|
||||
|
|
|
@ -57,7 +57,7 @@ class OC_Installer{
|
|||
*/
|
||||
public static function installApp( $data = array()) {
|
||||
if(!isset($data['source'])) {
|
||||
OC_Log::write('core','No source specified when installing app',OC_Log::ERROR);
|
||||
OC_Log::write('core', 'No source specified when installing app', OC_Log::ERROR);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -65,13 +65,13 @@ class OC_Installer{
|
|||
if($data['source']=='http') {
|
||||
$path=OC_Helper::tmpFile();
|
||||
if(!isset($data['href'])) {
|
||||
OC_Log::write('core','No href specified when installing app from http',OC_Log::ERROR);
|
||||
OC_Log::write('core', 'No href specified when installing app from http', OC_Log::ERROR);
|
||||
return false;
|
||||
}
|
||||
copy($data['href'], $path);
|
||||
}else{
|
||||
if(!isset($data['path'])) {
|
||||
OC_Log::write('core','No path specified when installing app from local file',OC_Log::ERROR);
|
||||
OC_Log::write('core', 'No path specified when installing app from local file', OC_Log::ERROR);
|
||||
return false;
|
||||
}
|
||||
$path=$data['path'];
|
||||
|
@ -86,7 +86,7 @@ class OC_Installer{
|
|||
rename($path, $path.'.tgz');
|
||||
$path.='.tgz';
|
||||
}else{
|
||||
OC_Log::write('core','Archives of type '.$mime.' are not supported',OC_Log::ERROR);
|
||||
OC_Log::write('core', 'Archives of type '.$mime.' are not supported', OC_Log::ERROR);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -248,7 +248,7 @@ class OC_Installer{
|
|||
* -# including appinfo/upgrade.php
|
||||
* -# setting the installed version
|
||||
*
|
||||
* upgrade.php can determine the current installed version of the app using "OC_Appconfig::getValue($appid,'installed_version')"
|
||||
* upgrade.php can determine the current installed version of the app using "OC_Appconfig::getValue($appid, 'installed_version')"
|
||||
*/
|
||||
public static function upgradeApp( $data = array()) {
|
||||
// TODO: write function
|
||||
|
|
|
@ -72,7 +72,7 @@ class OC_JSON{
|
|||
public static function checkSubAdminUser() {
|
||||
self::checkLoggedIn();
|
||||
self::verifyUser();
|
||||
if(!OC_Group::inGroup(OC_User::getUser(),'admin') && !OC_SubAdmin::isSubAdmin(OC_User::getUser())) {
|
||||
if(!OC_Group::inGroup(OC_User::getUser(), 'admin') && !OC_SubAdmin::isSubAdmin(OC_User::getUser())) {
|
||||
$l = OC_L10N::get('lib');
|
||||
self::error(array( 'data' => array( 'message' => $l->t('Authentication error') )));
|
||||
exit();
|
||||
|
|
|
@ -167,7 +167,7 @@ class OC_L10N{
|
|||
*
|
||||
*/
|
||||
public function tA($textArray) {
|
||||
OC_Log::write('core', 'DEPRECATED: the method tA is deprecated and will be removed soon.',OC_Log::WARN);
|
||||
OC_Log::write('core', 'DEPRECATED: the method tA is deprecated and will be removed soon.', OC_Log::WARN);
|
||||
$result = array();
|
||||
foreach($textArray as $key => $text) {
|
||||
$result[$key] = (string)$this->t($text);
|
||||
|
|
|
@ -41,23 +41,23 @@ class OC_Log {
|
|||
}
|
||||
|
||||
//Fatal errors handler
|
||||
public static function onShutdown(){
|
||||
public static function onShutdown() {
|
||||
$error = error_get_last();
|
||||
if($error) {
|
||||
//ob_end_clean();
|
||||
self::write('PHP', $error['message'] . ' at ' . $error['file'] . '#' . $error['line'], self::FATAL);
|
||||
} else {
|
||||
return true;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// Uncaught exception handler
|
||||
public static function onException($exception){
|
||||
public static function onException($exception) {
|
||||
self::write('PHP', $exception->getMessage() . ' at ' . $exception->getFile() . '#' . $exception->getLine(), self::FATAL);
|
||||
}
|
||||
|
||||
//Recoverable errors handler
|
||||
public static function onError($number, $message, $file, $line){
|
||||
public static function onError($number, $message, $file, $line) {
|
||||
if (error_reporting() === 0) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -44,9 +44,9 @@ class OC_Log_Owncloud {
|
|||
* @param int level
|
||||
*/
|
||||
public static function write($app, $message, $level) {
|
||||
$minLevel=min(OC_Config::getValue( "loglevel", OC_Log::WARN ),OC_Log::ERROR);
|
||||
$minLevel=min(OC_Config::getValue( "loglevel", OC_Log::WARN ), OC_Log::ERROR);
|
||||
if($level>=$minLevel) {
|
||||
$entry=array('app'=>$app, 'message'=>$message, 'level'=>$level,'time'=>time());
|
||||
$entry=array('app'=>$app, 'message'=>$message, 'level'=>$level, 'time'=>time());
|
||||
$fh=fopen(self::$logFile, 'a');
|
||||
fwrite($fh, json_encode($entry)."\n");
|
||||
fclose($fh);
|
||||
|
|
|
@ -27,7 +27,7 @@ class OC_Mail {
|
|||
* @param string $fromname
|
||||
* @param bool $html
|
||||
*/
|
||||
public static function send($toaddress,$toname,$subject,$mailtext,$fromaddress,$fromname,$html=0,$altbody='',$ccaddress='',$ccname='',$bcc='') {
|
||||
public static function send($toaddress,$toname,$subject,$mailtext,$fromaddress,$fromname,$html=0,$altbody='',$ccaddress='',$ccname='', $bcc='') {
|
||||
|
||||
$SMTPMODE = OC_Config::getValue( 'mail_smtpmode', 'sendmail' );
|
||||
$SMTPHOST = OC_Config::getValue( 'mail_smtphost', '127.0.0.1' );
|
||||
|
|
|
@ -91,7 +91,7 @@ class OC_Migrate{
|
|||
if( self::$exporttype == 'user' ) {
|
||||
// Check user exists
|
||||
self::$uid = is_null($uid) ? OC_User::getUser() : $uid;
|
||||
if(!OC_User::userExists(self::$uid)){
|
||||
if(!OC_User::userExists(self::$uid)) {
|
||||
return json_encode( array( 'success' => false) );
|
||||
}
|
||||
}
|
||||
|
@ -611,11 +611,11 @@ class OC_Migrate{
|
|||
if( file_exists( $db ) ) {
|
||||
// Connect to the db
|
||||
if(!self::connectDB( $db )) {
|
||||
OC_Log::write('migration','Failed to connect to migration.db',OC_Log::ERROR);
|
||||
OC_Log::write('migration', 'Failed to connect to migration.db', OC_Log::ERROR);
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
OC_Log::write('migration','Migration.db not found at: '.$db, OC_Log::FATAL );
|
||||
OC_Log::write('migration', 'Migration.db not found at: '.$db, OC_Log::FATAL );
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@ class OC_Migration_Content{
|
|||
if( !is_null( $this->db ) ) {
|
||||
// Get db path
|
||||
$db = $this->db->getDatabase();
|
||||
if(!in_array($db, $this->tmpfiles)){
|
||||
if(!in_array($db, $this->tmpfiles)) {
|
||||
$this->tmpfiles[] = $db;
|
||||
}
|
||||
}
|
||||
|
@ -205,7 +205,7 @@ class OC_Migration_Content{
|
|||
}
|
||||
closedir($dirhandle);
|
||||
} else {
|
||||
OC_Log::write('admin_export',"Was not able to open directory: " . $dir,OC_Log::ERROR);
|
||||
OC_Log::write('admin_export', "Was not able to open directory: " . $dir, OC_Log::ERROR);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
|
|
@ -162,7 +162,7 @@ class OC_OCSClient{
|
|||
$xml=OC_OCSClient::getOCSresponse($url);
|
||||
|
||||
if($xml==false) {
|
||||
OC_Log::write('core','Unable to parse OCS content',OC_Log::FATAL);
|
||||
OC_Log::write('core', 'Unable to parse OCS content', OC_Log::FATAL);
|
||||
return null;
|
||||
}
|
||||
$data=simplexml_load_string($xml);
|
||||
|
@ -200,7 +200,7 @@ class OC_OCSClient{
|
|||
$xml=OC_OCSClient::getOCSresponse($url);
|
||||
|
||||
if($xml==false) {
|
||||
OC_Log::write('core','Unable to parse OCS content',OC_Log::FATAL);
|
||||
OC_Log::write('core', 'Unable to parse OCS content', OC_Log::FATAL);
|
||||
return null;
|
||||
}
|
||||
$data=simplexml_load_string($xml);
|
||||
|
@ -238,7 +238,7 @@ class OC_OCSClient{
|
|||
$xml=OC_OCSClient::getOCSresponse($url);
|
||||
|
||||
if($xml==false) {
|
||||
OC_Log::write('core','Unable to parse knowledgebase content',OC_Log::FATAL);
|
||||
OC_Log::write('core', 'Unable to parse knowledgebase content', OC_Log::FATAL);
|
||||
return null;
|
||||
}
|
||||
$data=simplexml_load_string($xml);
|
||||
|
|
|
@ -62,7 +62,7 @@ class BackgroundJob {
|
|||
* @param $type execution type
|
||||
* @return boolean
|
||||
*
|
||||
* This method sets the execution type of the background jobs. Possible types
|
||||
* This method sets the execution type of the background jobs. Possible types
|
||||
* are "none", "ajax", "webcron", "cron"
|
||||
*/
|
||||
public static function setExecutionType( $type ) {
|
||||
|
|
|
@ -28,7 +28,7 @@ namespace OCP;
|
|||
/**
|
||||
* This class provides the ability for apps to share their content between users.
|
||||
* Apps must create a backend class that implements OCP\Share_Backend and register it with this class.
|
||||
*
|
||||
*
|
||||
* It provides the following hooks:
|
||||
* - post_shared
|
||||
*/
|
||||
|
|
|
@ -61,7 +61,7 @@ class Util {
|
|||
*/
|
||||
public static function sendMail( $toaddress, $toname, $subject, $mailtext, $fromaddress, $fromname, $html=0, $altbody='', $ccaddress='', $ccname='', $bcc='') {
|
||||
// call the internal mail class
|
||||
\OC_MAIL::send( $toaddress, $toname, $subject, $mailtext, $fromaddress, $fromname, $html=0, $altbody='', $ccaddress='', $ccname='', $bcc='');
|
||||
\OC_MAIL::send($toaddress, $toname, $subject, $mailtext, $fromaddress, $fromname, $html = 0, $altbody = '', $ccaddress = '', $ccname = '', $bcc = '');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -63,7 +63,7 @@ class OC_Request {
|
|||
$path_info = substr($_SERVER['REQUEST_URI'], strlen($_SERVER['SCRIPT_NAME']));
|
||||
// following is taken from Sabre_DAV_URLUtil::decodePathSegment
|
||||
$path_info = rawurldecode($path_info);
|
||||
$encoding = mb_detect_encoding($path_info, array('UTF-8','ISO-8859-1'));
|
||||
$encoding = mb_detect_encoding($path_info, array('UTF-8', 'ISO-8859-1'));
|
||||
|
||||
switch($encoding) {
|
||||
|
||||
|
@ -98,7 +98,7 @@ class OC_Request {
|
|||
$HTTP_ACCEPT_ENCODING = $_SERVER["HTTP_ACCEPT_ENCODING"];
|
||||
if( strpos($HTTP_ACCEPT_ENCODING, 'x-gzip') !== false )
|
||||
return 'x-gzip';
|
||||
else if( strpos($HTTP_ACCEPT_ENCODING,'gzip') !== false )
|
||||
else if( strpos($HTTP_ACCEPT_ENCODING, 'gzip') !== false )
|
||||
return 'gzip';
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -108,7 +108,7 @@ class OC_Route extends Route {
|
|||
public function actionInclude($file) {
|
||||
$function = create_function('$param',
|
||||
'unset($param["_route"]);'
|
||||
.'$_GET=array_merge($_GET,$param);'
|
||||
.'$_GET=array_merge($_GET, $param);'
|
||||
.'unset($param);'
|
||||
.'require_once "'.$file.'";');
|
||||
$this->action($function);
|
||||
|
|
|
@ -34,7 +34,7 @@ class OC_Router {
|
|||
public function getRoutingFiles() {
|
||||
if (!isset($this->routing_files)) {
|
||||
$this->routing_files = array();
|
||||
foreach(OC_APP::getEnabledApps() as $app){
|
||||
foreach(OC_APP::getEnabledApps() as $app) {
|
||||
$file = OC_App::getAppPath($app).'/appinfo/routes.php';
|
||||
if(file_exists($file)) {
|
||||
$this->routing_files[$app] = $file;
|
||||
|
|
|
@ -41,7 +41,7 @@ class OC_Search{
|
|||
* @param string $provider class name of a OC_Search_Provider
|
||||
*/
|
||||
public static function registerProvider($class, $options=array()) {
|
||||
self::$registeredProviders[]=array('class'=>$class,'options'=>$options);
|
||||
self::$registeredProviders[]=array('class'=>$class, 'options'=>$options);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -70,7 +70,7 @@ class OC_Setup {
|
|||
if(empty($options['dbname'])) {
|
||||
$error[] = "$dbprettyname enter the database name.";
|
||||
}
|
||||
if(substr_count($options['dbname'], '.') >= 1){
|
||||
if(substr_count($options['dbname'], '.') >= 1) {
|
||||
$error[] = "$dbprettyname you may not use dots in the database name";
|
||||
}
|
||||
if($dbtype != 'oci' && empty($options['dbhost'])) {
|
||||
|
@ -95,7 +95,7 @@ class OC_Setup {
|
|||
//write the config file
|
||||
OC_Config::setValue('datadirectory', $datadir);
|
||||
OC_Config::setValue('dbtype', $dbtype);
|
||||
OC_Config::setValue('version', implode('.',OC_Util::getVersion()));
|
||||
OC_Config::setValue('version', implode('.', OC_Util::getVersion()));
|
||||
if($dbtype == 'mysql') {
|
||||
$dbuser = $options['dbuser'];
|
||||
$dbpass = $options['dbpass'];
|
||||
|
|
|
@ -234,7 +234,7 @@ class OC_CloseStreamWrapper{
|
|||
}
|
||||
|
||||
public function stream_seek($offset, $whence=SEEK_SET) {
|
||||
fseek($this->source,$offset, $whence);
|
||||
fseek($this->source, $offset, $whence);
|
||||
}
|
||||
|
||||
public function stream_tell() {
|
||||
|
@ -249,16 +249,16 @@ class OC_CloseStreamWrapper{
|
|||
return fwrite($this->source, $data);
|
||||
}
|
||||
|
||||
public function stream_set_option($option,$arg1, $arg2) {
|
||||
public function stream_set_option($option, $arg1, $arg2) {
|
||||
switch($option) {
|
||||
case STREAM_OPTION_BLOCKING:
|
||||
stream_set_blocking($this->source, $arg1);
|
||||
break;
|
||||
case STREAM_OPTION_READ_TIMEOUT:
|
||||
stream_set_timeout($this->source,$arg1, $arg2);
|
||||
stream_set_timeout($this->source, $arg1, $arg2);
|
||||
break;
|
||||
case STREAM_OPTION_WRITE_BUFFER:
|
||||
stream_set_write_buffer($this->source,$arg1, $arg2);
|
||||
stream_set_write_buffer($this->source, $arg1, $arg2);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
* Prints an XSS escaped string
|
||||
* @param string $string the string which will be escaped and printed
|
||||
*/
|
||||
function p($string){
|
||||
function p($string) {
|
||||
print(OC_Util::sanitizeHTML($string));
|
||||
}
|
||||
|
||||
|
@ -33,7 +33,7 @@ function p($string){
|
|||
* Prints an unescaped string
|
||||
* @param string $string the string which will be printed as it is
|
||||
*/
|
||||
function print_unescaped($string){
|
||||
function print_unescaped($string) {
|
||||
print($string);
|
||||
}
|
||||
|
||||
|
@ -172,7 +172,6 @@ class OC_Template{
|
|||
$this->application = $app;
|
||||
$this->vars = array();
|
||||
$this->vars['requesttoken'] = OC_Util::callRegister();
|
||||
$this->vars['requestlifespan'] = OC_Util::$callLifespan;
|
||||
$parts = explode('/', $app); // fix translation when app is something like core/lostpassword
|
||||
$this->l10n = OC_L10N::get($parts[0]);
|
||||
|
||||
|
@ -196,11 +195,11 @@ class OC_Template{
|
|||
public static function detectFormfactor() {
|
||||
// please add more useragent strings for other devices
|
||||
if(isset($_SERVER['HTTP_USER_AGENT'])) {
|
||||
if(stripos($_SERVER['HTTP_USER_AGENT'],'ipad')>0) {
|
||||
if(stripos($_SERVER['HTTP_USER_AGENT'], 'ipad')>0) {
|
||||
$mode='tablet';
|
||||
}elseif(stripos($_SERVER['HTTP_USER_AGENT'],'iphone')>0) {
|
||||
}elseif(stripos($_SERVER['HTTP_USER_AGENT'], 'iphone')>0) {
|
||||
$mode='mobile';
|
||||
}elseif((stripos($_SERVER['HTTP_USER_AGENT'],'N9')>0) and (stripos($_SERVER['HTTP_USER_AGENT'],'nokia')>0)) {
|
||||
}elseif((stripos($_SERVER['HTTP_USER_AGENT'], 'N9')>0) and (stripos($_SERVER['HTTP_USER_AGENT'], 'nokia')>0)) {
|
||||
$mode='mobile';
|
||||
}else{
|
||||
$mode='default';
|
||||
|
@ -357,7 +356,7 @@ class OC_Template{
|
|||
* @param string $text the text content for the element
|
||||
*/
|
||||
public function addHeader( $tag, $attributes, $text='') {
|
||||
$this->headers[]=array('tag'=>$tag,'attributes'=>$attributes,'text'=>$text);
|
||||
$this->headers[]=array('tag'=>$tag,'attributes'=>$attributes, 'text'=>$text);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -391,7 +390,6 @@ class OC_Template{
|
|||
$page = new OC_TemplateLayout($this->renderas);
|
||||
if($this->renderas == 'user') {
|
||||
$page->assign('requesttoken', $this->vars['requesttoken']);
|
||||
$page->assign('requestlifespan', $this->vars['requestlifespan']);
|
||||
}
|
||||
|
||||
// Add custom headers
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue