Merge branch 'master' of github.com:owncloud/core into vcategories_db

Conflicts:
	lib/vcategories.php
This commit is contained in:
Thomas Tanghus 2012-11-05 12:06:59 +01:00
commit 1147dc9774
135 changed files with 950 additions and 1069 deletions

3
README
View File

@ -4,6 +4,7 @@ A personal cloud which runs on your own server.
http://ownCloud.org http://ownCloud.org
Installation instructions: http://owncloud.org/support Installation instructions: http://owncloud.org/support
Contribution Guidelines: http://owncloud.org/dev/contribute/
Source code: https://github.com/owncloud Source code: https://github.com/owncloud
Mailing list: https://mail.kde.org/mailman/listinfo/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/ https://www.transifex.com/projects/p/owncloud/
For more detailed information about translations: For more detailed information about translations:
http://owncloud.org/dev/translation/ http://owncloud.org/dev/translation/

View File

@ -44,7 +44,7 @@ if(OC_Filesystem::file_exists($base) and OC_Filesystem::is_dir($base)) {
if(substr(strtolower($file), 0, $queryLen)==$query) { if(substr(strtolower($file), 0, $queryLen)==$query) {
$item=$base.$file; $item=$base.$file;
if((!$dirOnly or OC_Filesystem::is_dir($item))) { 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);
} }
} }
} }

View File

@ -12,7 +12,7 @@ $file = stripslashes($_GET["file"]);
$target = stripslashes(rawurldecode($_GET["target"])); $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" ))); OCP\JSON::error(array("data" => array( "message" => "Could not move $file - File with this name already exists" )));
exit; exit;
} }

View File

@ -38,7 +38,7 @@ $totalSize=0;
foreach($files['size'] as $size) { foreach($files['size'] as $size) {
$totalSize+=$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" ))); OCP\JSON::error(array("data" => array( "message" => "Not enough space available" )));
exit(); 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)) { if(is_uploaded_file($files['tmp_name'][$i]) and OC_Filesystem::fromTmpFile($files['tmp_name'][$i], $target)) {
$meta = OC_FileCache::get($target); $meta = OC_FileCache::get($target);
$id = OC_FileCache::getId($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); OCP\JSON::encodedPrint($result);

View File

@ -21,7 +21,7 @@
*/ */
// load needed apps // load needed apps
$RUNTIME_APPTYPES=array('filesystem','authentication','logging'); $RUNTIME_APPTYPES=array('filesystem', 'authentication', 'logging');
OC_App::loadApps($RUNTIME_APPTYPES); OC_App::loadApps($RUNTIME_APPTYPES);
if(!OC_User::isLoggedIn()) { if(!OC_User::isLoggedIn()) {
if(!isset($_SERVER['PHP_AUTH_USER'])) { 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') { if ($type != 'oc_chunked') {
OC_Response::setStatus(OC_Response::STATUS_NOT_FOUND); OC_Response::setStatus(OC_Response::STATUS_NOT_FOUND);

View File

@ -23,7 +23,7 @@
* *
*/ */
// load needed apps // load needed apps
$RUNTIME_APPTYPES=array('filesystem','authentication','logging'); $RUNTIME_APPTYPES=array('filesystem', 'authentication', 'logging');
OC_App::loadApps($RUNTIME_APPTYPES); OC_App::loadApps($RUNTIME_APPTYPES);

View File

@ -5,7 +5,7 @@ $installedVersion=OCP\Config::getAppValue('files', 'installed_version');
if (version_compare($installedVersion, '1.1.6', '<')) { if (version_compare($installedVersion, '1.1.6', '<')) {
$query = OC_DB::prepare( "SELECT `propertyname`, `propertypath`, `userid` FROM `*PREFIX*properties`" ); $query = OC_DB::prepare( "SELECT `propertyname`, `propertypath`, `userid` FROM `*PREFIX*properties`" );
$result = $query->execute(); $result = $query->execute();
while( $row = $result->fetchRow()){ while( $row = $result->fetchRow()) {
if ( $row["propertyname"][0] != '{' ) { if ( $row["propertyname"][0] != '{' ) {
$query = OC_DB::prepare( 'UPDATE `*PREFIX*properties` SET `propertyname` = ? WHERE `userid` = ? AND `propertypath` = ?' ); $query = OC_DB::prepare( 'UPDATE `*PREFIX*properties` SET `propertyname` = ? WHERE `userid` = ? AND `propertypath` = ?' );
$query->execute( array( '{DAV:}' + $row["propertyname"], $row["userid"], $row["propertypath"] )); $query->execute( array( '{DAV:}' + $row["propertyname"], $row["userid"], $row["propertypath"] ));
@ -39,7 +39,7 @@ foreach($filesToRemove as $file) {
$success = OCP\Files::rmdirr($filepath); $success = OCP\Files::rmdirr($filepath);
if($success === false) { if($success === false) {
//probably not sufficient privileges, give up and give a message. //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; break;
} }
} }

View File

@ -67,7 +67,7 @@ $breadcrumb = array();
$pathtohere = ''; $pathtohere = '';
foreach( explode( '/', $dir ) as $i ) { foreach( explode( '/', $dir ) as $i ) {
if( $i != '' ) { if( $i != '' ) {
$pathtohere .= '/'.str_replace('+','%20', urlencode($i)); $pathtohere .= '/'.str_replace('+', '%20', urlencode($i));
$breadcrumb[] = array( 'dir' => $pathtohere, 'name' => $i ); $breadcrumb[] = array( 'dir' => $pathtohere, 'name' => $i );
} }
} }

View File

@ -1,4 +1,4 @@
<?php OCP\Util::addscript('files','admin'); ?> <?php OCP\Util::addscript('files', 'admin'); ?>
<form name="filesForm" action='#' method='post'> <form name="filesForm" action='#' method='post'>
<fieldset class="personalblock"> <fieldset class="personalblock">

View File

@ -8,7 +8,7 @@
<ul class="popup popupTop"> <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('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\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> </ul>
</div> </div>
<div class="file_upload_wrapper svg"> <div class="file_upload_wrapper svg">

View File

@ -1,6 +1,6 @@
<?php for($i=0; $i<count($_["breadcrumb"]); $i++): <?php for($i=0; $i<count($_["breadcrumb"]); $i++):
$crumb = $_["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> <a href="<?php echo $_['baseURL'].urlencode($crumb["dir"]); ?>"><?php echo OCP\Util::sanitizeHTML($crumb["name"]); ?></a>
</div> </div>
<?php endfor;?> <?php endfor;?>

View File

@ -14,10 +14,10 @@
$relative_modified_date = OCP\relative_modified_date($file['mtime']); $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 $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; if($relative_date_color>200) $relative_date_color = 200;
$name = str_replace('+','%20', urlencode($file['name'])); $name = str_replace('+', '%20', urlencode($file['name']));
$name = str_replace('%2F','/', $name); $name = str_replace('%2F', '/', $name);
$directory = str_replace('+','%20', urlencode($file['directory'])); $directory = str_replace('+', '%20', urlencode($file['directory']));
$directory = str_replace('%2F','/', $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']; ?>'> <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']); ?>)"> <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 } ?> <?php if(!isset($_['readonly']) || !$_['readonly']) { ?><input type="checkbox" /><?php } ?>

View File

@ -6,9 +6,9 @@ OC::$CLASSPATH['OC_FileProxy_Encryption'] = 'apps/files_encryption/lib/proxy.php
OC_FileProxy::register(new OC_FileProxy_Encryption()); 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) 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(); OCP\User::logout();

View File

@ -80,7 +80,7 @@ class OC_Crypt {
} }
} }
public static function createkey($username,$passcode) { public static function createkey($username, $passcode) {
// generate a random key // generate a random key
$key=mt_rand(10000, 99999).mt_rand(10000, 99999).mt_rand(10000, 99999).mt_rand(10000, 99999); $key=mt_rand(10000, 99999).mt_rand(10000, 99999).mt_rand(10000, 99999).mt_rand(10000, 99999);

View File

@ -23,7 +23,7 @@
/** /**
* transparently encrypted filestream * 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'); * and then fopen('crypt://streams/foo');
*/ */
@ -123,11 +123,11 @@ class OC_CryptStream{
$data=substr($data, 8192); $data=substr($data, 8192);
} }
} }
$this->size=max($this->size,$currentPos+$length); $this->size=max($this->size, $currentPos+$length);
return $length; return $length;
} }
public function stream_set_option($option,$arg1,$arg2) { public function stream_set_option($option, $arg1, $arg2) {
switch($option) { switch($option) {
case STREAM_OPTION_BLOCKING: case STREAM_OPTION_BLOCKING:
stream_set_blocking($this->source, $arg1); stream_set_blocking($this->source, $arg1);

View File

@ -36,7 +36,7 @@ class OC_FileProxy_Encryption extends OC_FileProxy{
*/ */
private static function shouldEncrypt($path) { private static function shouldEncrypt($path) {
if(is_null(self::$enableEncryption)) { 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) { if(!self::$enableEncryption) {
return false; return false;
@ -59,7 +59,7 @@ class OC_FileProxy_Encryption extends OC_FileProxy{
* @return bool * @return bool
*/ */
private static function isEncrypted($path) { 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']; 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 if (!is_resource($data)) {//stream put contents should have been converter to fopen
$size=strlen($data); $size=strlen($data);
$data=OC_Crypt::blockEncrypt($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)) { if(self::isEncrypted($path)) {
$cached=OC_FileCache_Cached::get($path,''); $cached=OC_FileCache_Cached::get($path, '');
$data=OC_Crypt::blockDecrypt($data, '', $cached['size']); $data=OC_Crypt::blockDecrypt($data, '', $cached['size']);
} }
return $data; 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') { }elseif(self::shouldEncrypt($path) and $meta['mode']!='r' and $meta['mode']!='rb') {
if(OC_Filesystem::file_exists($path) and OC_Filesystem::filesize($path)>0) { 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 //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'); $tmp=fopen('php://temp');
OCP\Files::streamCopy($result, $tmp); OCP\Files::streamCopy($result, $tmp);
fclose($result); fclose($result);
@ -106,14 +106,14 @@ class OC_FileProxy_Encryption extends OC_FileProxy{
public function postGetMimeType($path, $mime) { public function postGetMimeType($path, $mime) {
if(self::isEncrypted($path)) { if(self::isEncrypted($path)) {
$mime=OCP\Files::getMimeType('crypt://'.$path,'w'); $mime=OCP\Files::getMimeType('crypt://'.$path, 'w');
} }
return $mime; return $mime;
} }
public function postStat($path, $data) { public function postStat($path, $data) {
if(self::isEncrypted($path)) { if(self::isEncrypted($path)) {
$cached=OC_FileCache_Cached::get($path,''); $cached=OC_FileCache_Cached::get($path, '');
$data['size']=$cached['size']; $data['size']=$cached['size'];
} }
return $data; return $data;
@ -121,7 +121,7 @@ class OC_FileProxy_Encryption extends OC_FileProxy{
public function postFileSize($path, $size) { public function postFileSize($path, $size) {
if(self::isEncrypted($path)) { if(self::isEncrypted($path)) {
$cached=OC_FileCache_Cached::get($path,''); $cached=OC_FileCache_Cached::get($path, '');
return $cached['size']; return $cached['size'];
}else{ }else{
return $size; return $size;

View File

@ -8,11 +8,11 @@
$tmpl = new OCP\Template( 'files_encryption', 'settings'); $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')); $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('blacklist', $blackList);
$tmpl->assign('encryption_enabled', $enabled); $tmpl->assign('encryption_enabled', $enabled);
OCP\Util::addscript('files_encryption','settings'); OCP\Util::addscript('files_encryption', 'settings');
OCP\Util::addscript('core','multiselect'); OCP\Util::addscript('core', 'multiselect');
return $tmpl->fetchPage(); return $tmpl->fetchPage();

View File

@ -17,7 +17,7 @@ class Test_Encryption extends UnitTestCase {
$this->assertNotEqual($encrypted, $source); $this->assertNotEqual($encrypted, $source);
$this->assertEqual($decrypted, $source); $this->assertEqual($decrypted, $source);
$chunk=substr($source,0, 8192); $chunk=substr($source, 0, 8192);
$encrypted=OC_Crypt::encrypt($chunk, $key); $encrypted=OC_Crypt::encrypt($chunk, $key);
$this->assertEqual(strlen($chunk), strlen($encrypted)); $this->assertEqual(strlen($chunk), strlen($encrypted));
$decrypted=OC_Crypt::decrypt($encrypted, $key); $decrypted=OC_Crypt::decrypt($encrypted, $key);
@ -30,14 +30,14 @@ class Test_Encryption extends UnitTestCase {
$this->assertEqual($decrypted, $source); $this->assertEqual($decrypted, $source);
$tmpFileEncrypted=OCP\Files::tmpFile(); $tmpFileEncrypted=OCP\Files::tmpFile();
OC_Crypt::encryptfile($file,$tmpFileEncrypted, $key); OC_Crypt::encryptfile($file, $tmpFileEncrypted, $key);
$encrypted=file_get_contents($tmpFileEncrypted); $encrypted=file_get_contents($tmpFileEncrypted);
$decrypted=OC_Crypt::blockDecrypt($encrypted, $key); $decrypted=OC_Crypt::blockDecrypt($encrypted, $key);
$this->assertNotEqual($encrypted, $source); $this->assertNotEqual($encrypted, $source);
$this->assertEqual($decrypted, $source); $this->assertEqual($decrypted, $source);
$tmpFileDecrypted=OCP\Files::tmpFile(); $tmpFileDecrypted=OCP\Files::tmpFile();
OC_Crypt::decryptfile($tmpFileEncrypted,$tmpFileDecrypted, $key); OC_Crypt::decryptfile($tmpFileEncrypted, $tmpFileDecrypted, $key);
$decrypted=file_get_contents($tmpFileDecrypted); $decrypted=file_get_contents($tmpFileDecrypted);
$this->assertEqual($decrypted, $source); $this->assertEqual($decrypted, $source);

View File

@ -13,8 +13,8 @@ class Test_CryptProxy extends UnitTestCase {
public function setUp() { public function setUp() {
$user=OC_User::getUser(); $user=OC_User::getUser();
$this->oldConfig=OCP\Config::getAppValue('files_encryption','enable_encryption','true'); $this->oldConfig=OCP\Config::getAppValue('files_encryption','enable_encryption', 'true');
OCP\Config::setAppValue('files_encryption','enable_encryption','true'); OCP\Config::setAppValue('files_encryption', 'enable_encryption', 'true');
$this->oldKey=isset($_SESSION['enckey'])?$_SESSION['enckey']:null; $this->oldKey=isset($_SESSION['enckey'])?$_SESSION['enckey']:null;
@ -30,7 +30,7 @@ class Test_CryptProxy extends UnitTestCase {
//set up temporary storage //set up temporary storage
OC_Filesystem::clearMounts(); OC_Filesystem::clearMounts();
OC_Filesystem::mount('OC_Filestorage_Temporary', array(),'/'); OC_Filesystem::mount('OC_Filestorage_Temporary', array(), '/');
OC_Filesystem::init('/'.$user.'/files'); OC_Filesystem::init('/'.$user.'/files');

View File

@ -10,23 +10,23 @@ class Test_CryptStream extends UnitTestCase {
private $tmpFiles=array(); private $tmpFiles=array();
function testStream() { function testStream() {
$stream=$this->getStream('test1','w', strlen('foobar')); $stream=$this->getStream('test1', 'w', strlen('foobar'));
fwrite($stream,'foobar'); fwrite($stream, 'foobar');
fclose($stream); fclose($stream);
$stream=$this->getStream('test1','r', strlen('foobar')); $stream=$this->getStream('test1', 'r', strlen('foobar'));
$data=fread($stream, 6); $data=fread($stream, 6);
fclose($stream); fclose($stream);
$this->assertEqual('foobar', $data); $this->assertEqual('foobar', $data);
$file=OC::$SERVERROOT.'/3rdparty/MDB2.php'; $file=OC::$SERVERROOT.'/3rdparty/MDB2.php';
$source=fopen($file,'r'); $source=fopen($file, 'r');
$target=$this->getStream('test2', 'w', 0); $target=$this->getStream('test2', 'w', 0);
OCP\Files::streamCopy($source, $target); OCP\Files::streamCopy($source, $target);
fclose($target); fclose($target);
fclose($source); fclose($source);
$stream=$this->getStream('test2','r', filesize($file)); $stream=$this->getStream('test2', 'r', filesize($file));
$data=stream_get_contents($stream); $data=stream_get_contents($stream);
$original=file_get_contents($file); $original=file_get_contents($file);
$this->assertEqual(strlen($original), strlen($data)); $this->assertEqual(strlen($original), strlen($data));
@ -51,7 +51,7 @@ class Test_CryptStream extends UnitTestCase {
$file=$this->tmpFiles[$id]; $file=$this->tmpFiles[$id];
} }
$stream=fopen($file, $mode); $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); return fopen('crypt://streams/'.$id, $mode);
} }
@ -59,11 +59,11 @@ class Test_CryptStream extends UnitTestCase {
$file=__DIR__.'/binary'; $file=__DIR__.'/binary';
$source=file_get_contents($file); $source=file_get_contents($file);
$stream=$this->getStream('test','w', strlen($source)); $stream=$this->getStream('test', 'w', strlen($source));
fwrite($stream, $source); fwrite($stream, $source);
fclose($stream); fclose($stream);
$stream=$this->getStream('test','r', strlen($source)); $stream=$this->getStream('test', 'r', strlen($source));
$data=stream_get_contents($stream); $data=stream_get_contents($stream);
fclose($stream); fclose($stream);
$this->assertEqual(strlen($data), strlen($source)); $this->assertEqual(strlen($data), strlen($source));
@ -72,11 +72,11 @@ class Test_CryptStream extends UnitTestCase {
$file=__DIR__.'/zeros'; $file=__DIR__.'/zeros';
$source=file_get_contents($file); $source=file_get_contents($file);
$stream=$this->getStream('test2','w', strlen($source)); $stream=$this->getStream('test2', 'w', strlen($source));
fwrite($stream, $source); fwrite($stream, $source);
fclose($stream); fclose($stream);
$stream=$this->getStream('test2','r', strlen($source)); $stream=$this->getStream('test2', 'r', strlen($source));
$data=stream_get_contents($stream); $data=stream_get_contents($stream);
fclose($stream); fclose($stream);
$this->assertEqual(strlen($data), strlen($source)); $this->assertEqual(strlen($data), strlen($source));

View File

@ -53,7 +53,7 @@ class OC_FileStorage_FTP extends OC_FileStorage_StreamWrapper{
case 'ab': case 'ab':
//these are supported by the wrapper //these are supported by the wrapper
$context = stream_context_create(array('ftp' => array('overwrite' => true))); $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 'r+':
case 'w+': case 'w+':
case 'wb+': case 'wb+':
@ -63,13 +63,13 @@ class OC_FileStorage_FTP extends OC_FileStorage_StreamWrapper{
case 'c': case 'c':
case 'c+': case 'c+':
//emulate these //emulate these
if(strrpos($path,'.')!==false) { if(strrpos($path, '.')!==false) {
$ext=substr($path, strrpos($path,'.')); $ext=substr($path, strrpos($path, '.'));
}else{ }else{
$ext=''; $ext='';
} }
$tmpFile=OCP\Files::tmpFile($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)) { if($this->file_exists($path)) {
$this->getFile($path, $tmpFile); $this->getFile($path, $tmpFile);
} }

View File

@ -394,8 +394,8 @@ class OC_Filestorage_Google extends OC_Filestorage_Common {
case 'x+': case 'x+':
case 'c': case 'c':
case 'c+': case 'c+':
if (strrpos($path,'.') !== false) { if (strrpos($path, '.') !== false) {
$ext = substr($path, strrpos($path,'.')); $ext = substr($path, strrpos($path, '.'));
} else { } else {
$ext = ''; $ext = '';
} }

View File

@ -24,7 +24,7 @@ class OC_FileStorage_SMB extends OC_FileStorage_StreamWrapper{
if(!$this->root || $this->root[0]!='/') { if(!$this->root || $this->root[0]!='/') {
$this->root='/'.$this->root; $this->root='/'.$this->root;
} }
if(substr($this->root,-1, 1)!='/') { if(substr($this->root, -1, 1)!='/') {
$this->root.='/'; $this->root.='/';
} }
if(!$this->share || $this->share[0]!='/') { if(!$this->share || $this->share[0]!='/') {
@ -41,7 +41,7 @@ class OC_FileStorage_SMB extends OC_FileStorage_StreamWrapper{
} }
public function constructUrl($path) { public function constructUrl($path) {
if(substr($path,-1)=='/') { if(substr($path, -1)=='/') {
$path=substr($path, 0, -1); $path=substr($path, 0, -1);
} }
return 'smb://'.$this->user.':'.$this->password.'@'.$this->host.$this->share.$this->root.$path; return 'smb://'.$this->user.':'.$this->password.'@'.$this->host.$this->share.$this->root.$path;

View File

@ -60,8 +60,8 @@ abstract class OC_FileStorage_StreamWrapper extends OC_Filestorage_Common{
public function touch($path, $mtime=null) { public function touch($path, $mtime=null) {
if(is_null($mtime)) { if(is_null($mtime)) {
$fh=$this->fopen($path,'a'); $fh=$this->fopen($path, 'a');
fwrite($fh,''); fwrite($fh, '');
fclose($fh); fclose($fh);
}else{ }else{
return false;//not supported return false;//not supported

View File

@ -39,7 +39,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
* @return string * @return string
*/ */
private function getContainerName($path) { private function getContainerName($path) {
$path=trim(trim($this->root,'/')."/".$path,'/.'); $path=trim(trim($this->root, '/')."/".$path, '/.');
return str_replace('/', '\\', $path); return str_replace('/', '\\', $path);
} }
@ -205,7 +205,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
unlink($tmpFile); unlink($tmpFile);
return false; return false;
}else{ }else{
$fh=fopen($tmpFile,'a'); $fh=fopen($tmpFile, 'a');
fwrite($fh, $name."\n"); fwrite($fh, $name."\n");
} }
}catch(Exception $e) { }catch(Exception $e) {
@ -432,7 +432,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
case 'c': case 'c':
case 'c+': case 'c+':
$tmpFile=$this->getTmpFile($path); $tmpFile=$this->getTmpFile($path);
OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this,'writeBack'); OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this, 'writeBack');
self::$tempFiles[$tmpFile]=$path; self::$tempFiles[$tmpFile]=$path;
return fopen('close://'.$tmpFile, $mode); return fopen('close://'.$tmpFile, $mode);
} }

View File

@ -46,7 +46,7 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
if($caview = \OCP\Files::getStorage('files_external')) { if($caview = \OCP\Files::getStorage('files_external')) {
$certPath=\OCP\Config::getSystemValue('datadirectory').$caview->getAbsolutePath("").'rootcerts.crt'; $certPath=\OCP\Config::getSystemValue('datadirectory').$caview->getAbsolutePath("").'rootcerts.crt';
if (file_exists($certPath)) { if (file_exists($certPath)) {
$this->client->addTrustedCertificates($certPath); $this->client->addTrustedCertificates($certPath);
} }
} }
@ -252,7 +252,7 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
public function stat($path) { public function stat($path) {
$path=$this->cleanPath($path); $path=$this->cleanPath($path);
try{ try{
$response=$this->client->propfind($path, array('{DAV:}getlastmodified','{DAV:}getcontentlength')); $response=$this->client->propfind($path, array('{DAV:}getlastmodified', '{DAV:}getcontentlength'));
return array( return array(
'mtime'=>strtotime($response['{DAV:}getlastmodified']), 'mtime'=>strtotime($response['{DAV:}getlastmodified']),
'size'=>(int)isset($response['{DAV:}getcontentlength']) ? $response['{DAV:}getcontentlength'] : 0, '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) { public function getMimeType($path) {
$path=$this->cleanPath($path); $path=$this->cleanPath($path);
try{ 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; $responseType=$response["{DAV:}resourcetype"]->resourceType;
$type=(count($responseType)>0 and $responseType[0]=="{DAV:}collection")?'dir':'file'; $type=(count($responseType)>0 and $responseType[0]=="{DAV:}collection")?'dir':'file';
if($type=='dir') { if($type=='dir') {

View File

@ -1,223 +1,223 @@
<?php <?php
// Load other apps for file previews // Load other apps for file previews
OC_App::loadApps(); OC_App::loadApps();
// Compatibility with shared-by-link items from ownCloud 4.0 // Compatibility with shared-by-link items from ownCloud 4.0
// requires old Sharing table ! // requires old Sharing table !
// support will be removed in OC 5.0,a // support will be removed in OC 5.0,a
if (isset($_GET['token'])) { if (isset($_GET['token'])) {
unset($_GET['file']); unset($_GET['file']);
$qry = \OC_DB::prepare('SELECT `source` FROM `*PREFIX*sharing` WHERE `target` = ? LIMIT 1'); $qry = \OC_DB::prepare('SELECT `source` FROM `*PREFIX*sharing` WHERE `target` = ? LIMIT 1');
$filepath = $qry->execute(array($_GET['token']))->fetchOne(); $filepath = $qry->execute(array($_GET['token']))->fetchOne();
if(isset($filepath)) { if(isset($filepath)) {
$info = OC_FileCache_Cached::get($filepath, ''); $info = OC_FileCache_Cached::get($filepath, '');
if(strtolower($info['mimetype']) == 'httpd/unix-directory') { if(strtolower($info['mimetype']) == 'httpd/unix-directory') {
$_GET['dir'] = $filepath; $_GET['dir'] = $filepath;
} else { } else {
$_GET['file'] = $filepath; $_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); \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 // Enf of backward compatibility
function getID($path) { function getID($path) {
// use the share table from the db to find the item source if the file was reshared because shared files // 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. //are not stored in the file cache.
if (substr(OC_Filesystem::getMountPoint($path), -7, 6) == "Shared") { if (substr(OC_Filesystem::getMountPoint($path), -7, 6) == "Shared") {
$path_parts = explode('/', $path, 5); $path_parts = explode('/', $path, 5);
$user = $path_parts[1]; $user = $path_parts[1];
$intPath = '/'.$path_parts[4]; $intPath = '/'.$path_parts[4];
$query = \OC_DB::prepare('SELECT item_source FROM *PREFIX*share WHERE uid_owner = ? AND file_target = ? '); $query = \OC_DB::prepare('SELECT item_source FROM *PREFIX*share WHERE uid_owner = ? AND file_target = ? ');
$result = $query->execute(array($user, $intPath)); $result = $query->execute(array($user, $intPath));
$row = $result->fetchRow(); $row = $result->fetchRow();
$fileSource = $row['item_source']; $fileSource = $row['item_source'];
} else { } else {
$fileSource = OC_Filecache::getId($path, ''); $fileSource = OC_Filecache::getId($path, '');
} }
return $fileSource; return $fileSource;
} }
if (isset($_GET['file']) || isset($_GET['dir'])) { if (isset($_GET['file']) || isset($_GET['dir'])) {
if (isset($_GET['dir'])) { if (isset($_GET['dir'])) {
$type = 'folder'; $type = 'folder';
$path = $_GET['dir']; $path = $_GET['dir'];
if(strlen($path)>1 and substr($path, -1, 1)==='/') { if(strlen($path)>1 and substr($path, -1, 1)==='/') {
$path=substr($path, 0, -1); $path=substr($path, 0, -1);
} }
$baseDir = $path; $baseDir = $path;
$dir = $baseDir; $dir = $baseDir;
} else { } else {
$type = 'file'; $type = 'file';
$path = $_GET['file']; $path = $_GET['file'];
if(strlen($path)>1 and substr($path, -1, 1)==='/') { if(strlen($path)>1 and substr($path, -1, 1)==='/') {
$path=substr($path, 0, -1); $path=substr($path, 0, -1);
} }
} }
$uidOwner = substr($path, 1, strpos($path, '/', 1) - 1); $uidOwner = substr($path, 1, strpos($path, '/', 1) - 1);
if (OCP\User::userExists($uidOwner)) { if (OCP\User::userExists($uidOwner)) {
OC_Util::setupFS($uidOwner); OC_Util::setupFS($uidOwner);
$fileSource = getId($path); $fileSource = getId($path);
if ($fileSource != -1 && ($linkItem = OCP\Share::getItemSharedWithByLink($type, $fileSource, $uidOwner))) { if ($fileSource != -1 && ($linkItem = OCP\Share::getItemSharedWithByLink($type, $fileSource, $uidOwner))) {
// TODO Fix in the getItems // TODO Fix in the getItems
if (!isset($linkItem['item_type']) || $linkItem['item_type'] != $type) { if (!isset($linkItem['item_type']) || $linkItem['item_type'] != $type) {
header('HTTP/1.0 404 Not Found'); header('HTTP/1.0 404 Not Found');
$tmpl = new OCP\Template('', '404', 'guest'); $tmpl = new OCP\Template('', '404', 'guest');
$tmpl->printPage(); $tmpl->printPage();
exit(); exit();
} }
if (isset($linkItem['share_with'])) { if (isset($linkItem['share_with'])) {
// Check password // Check password
if (isset($_GET['file'])) { if (isset($_GET['file'])) {
$url = OCP\Util::linkToPublic('files').'&file='.$_GET['file']; $url = OCP\Util::linkToPublic('files').'&file='.$_GET['file'];
} else { } else {
$url = OCP\Util::linkToPublic('files').'&dir='.$_GET['dir']; $url = OCP\Util::linkToPublic('files').'&dir='.$_GET['dir'];
} }
if (isset($_POST['password'])) { if (isset($_POST['password'])) {
$password = $_POST['password']; $password = $_POST['password'];
$storedHash = $linkItem['share_with']; $storedHash = $linkItem['share_with'];
$forcePortable = (CRYPT_BLOWFISH != 1); $forcePortable = (CRYPT_BLOWFISH != 1);
$hasher = new PasswordHash(8, $forcePortable); $hasher = new PasswordHash(8, $forcePortable);
if (!($hasher->CheckPassword($password.OC_Config::getValue('passwordsalt', ''), $storedHash))) { if (!($hasher->CheckPassword($password.OC_Config::getValue('passwordsalt', ''), $storedHash))) {
$tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest'); $tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest');
$tmpl->assign('URL', $url); $tmpl->assign('URL', $url);
$tmpl->assign('error', true); $tmpl->assign('error', true);
$tmpl->printPage(); $tmpl->printPage();
exit(); exit();
} else { } else {
// Save item id in session for future requests // Save item id in session for future requests
$_SESSION['public_link_authenticated'] = $linkItem['id']; $_SESSION['public_link_authenticated'] = $linkItem['id'];
} }
// Check if item id is set in session // Check if item id is set in session
} else if (!isset($_SESSION['public_link_authenticated']) || $_SESSION['public_link_authenticated'] !== $linkItem['id']) { } else if (!isset($_SESSION['public_link_authenticated']) || $_SESSION['public_link_authenticated'] !== $linkItem['id']) {
// Prompt for password // Prompt for password
$tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest'); $tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest');
$tmpl->assign('URL', $url); $tmpl->assign('URL', $url);
$tmpl->printPage(); $tmpl->printPage();
exit(); exit();
} }
} }
$path = $linkItem['path']; $path = $linkItem['path'];
if (isset($_GET['path'])) { if (isset($_GET['path'])) {
$path .= $_GET['path']; $path .= $_GET['path'];
$dir .= $_GET['path']; $dir .= $_GET['path'];
if (!OC_Filesystem::file_exists($path)) { if (!OC_Filesystem::file_exists($path)) {
header('HTTP/1.0 404 Not Found'); header('HTTP/1.0 404 Not Found');
$tmpl = new OCP\Template('', '404', 'guest'); $tmpl = new OCP\Template('', '404', 'guest');
$tmpl->printPage(); $tmpl->printPage();
exit(); exit();
} }
} }
// Download the file // Download the file
if (isset($_GET['download'])) { if (isset($_GET['download'])) {
if (isset($_GET['dir'])) { if (isset($_GET['dir'])) {
if ( isset($_GET['files']) ) { // download selected files if ( isset($_GET['files']) ) { // download selected files
OC_Files::get($path, $_GET['files'], $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false); 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 } else if (isset($_GET['path']) && $_GET['path'] != '' ) { // download a file from a shared directory
OC_Files::get('', $path, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false); OC_Files::get('', $path, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
} else { // download the whole shared directory } else { // download the whole shared directory
OC_Files::get($path, '', $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false); OC_Files::get($path, '', $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
} }
} else { // download a single shared file } else { // download a single shared file
OC_Files::get("", $path, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false); OC_Files::get("", $path, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
} }
} else { } else {
OCP\Util::addStyle('files_sharing', 'public'); OCP\Util::addStyle('files_sharing', 'public');
OCP\Util::addScript('files_sharing', 'public'); OCP\Util::addScript('files_sharing', 'public');
OCP\Util::addScript('files', 'fileactions'); OCP\Util::addScript('files', 'fileactions');
$tmpl = new OCP\Template('files_sharing', 'public', 'base'); $tmpl = new OCP\Template('files_sharing', 'public', 'base');
$tmpl->assign('owner', $uidOwner); $tmpl->assign('owner', $uidOwner);
// Show file list // Show file list
if (OC_Filesystem::is_dir($path)) { if (OC_Filesystem::is_dir($path)) {
OCP\Util::addStyle('files', 'files'); OCP\Util::addStyle('files', 'files');
OCP\Util::addScript('files', 'files'); OCP\Util::addScript('files', 'files');
OCP\Util::addScript('files', 'filelist'); OCP\Util::addScript('files', 'filelist');
$files = array(); $files = array();
$rootLength = strlen($baseDir) + 1; $rootLength = strlen($baseDir) + 1;
foreach (OC_Files::getDirectoryContent($path) as $i) { foreach (OC_Files::getDirectoryContent($path) as $i) {
$i['date'] = OCP\Util::formatDate($i['mtime']); $i['date'] = OCP\Util::formatDate($i['mtime']);
if ($i['type'] == 'file') { if ($i['type'] == 'file') {
$fileinfo = pathinfo($i['name']); $fileinfo = pathinfo($i['name']);
$i['basename'] = $fileinfo['filename']; $i['basename'] = $fileinfo['filename'];
$i['extension'] = isset($fileinfo['extension']) ? ('.'.$fileinfo['extension']) : ''; $i['extension'] = isset($fileinfo['extension']) ? ('.'.$fileinfo['extension']) : '';
} }
$i['directory'] = '/'.substr('/'.$uidOwner.'/files'.$i['directory'], $rootLength); $i['directory'] = '/'.substr('/'.$uidOwner.'/files'.$i['directory'], $rootLength);
if ($i['directory'] == '/') { if ($i['directory'] == '/') {
$i['directory'] = ''; $i['directory'] = '';
} }
$i['permissions'] = OCP\Share::PERMISSION_READ; $i['permissions'] = OCP\Share::PERMISSION_READ;
$files[] = $i; $files[] = $i;
} }
// Make breadcrumb // Make breadcrumb
$breadcrumb = array(); $breadcrumb = array();
$pathtohere = ''; $pathtohere = '';
$count = 1; $count = 1;
foreach (explode('/', $dir) as $i) { foreach (explode('/', $dir) as $i) {
if ($i != '') { if ($i != '') {
if ($i != $baseDir) { if ($i != $baseDir) {
$pathtohere .= '/'.$i; $pathtohere .= '/'.$i;
} }
if ( strlen($pathtohere) < strlen($_GET['dir'])) { if ( strlen($pathtohere) < strlen($_GET['dir'])) {
continue; continue;
} }
$breadcrumb[] = array('dir' => str_replace($_GET['dir'], "", $pathtohere, $count), 'name' => $i); $breadcrumb[] = array('dir' => str_replace($_GET['dir'], "", $pathtohere, $count), 'name' => $i);
} }
} }
$list = new OCP\Template('files', 'part.list', ''); $list = new OCP\Template('files', 'part.list', '');
$list->assign('files', $files, false); $list->assign('files', $files, false);
$list->assign('publicListView', true); $list->assign('publicListView', true);
$list->assign('baseURL', OCP\Util::linkToPublic('files').'&dir='.urlencode($_GET['dir']).'&path=', false); $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); $list->assign('downloadURL', OCP\Util::linkToPublic('files').'&download&dir='.urlencode($_GET['dir']).'&path=', false);
$breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', '' ); $breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', '' );
$breadcrumbNav->assign('breadcrumb', $breadcrumb, false); $breadcrumbNav->assign('breadcrumb', $breadcrumb, false);
$breadcrumbNav->assign('baseURL', OCP\Util::linkToPublic('files').'&dir='.urlencode($_GET['dir']).'&path=', false); $breadcrumbNav->assign('baseURL', OCP\Util::linkToPublic('files').'&dir='.urlencode($_GET['dir']).'&path=', false);
$folder = new OCP\Template('files', 'index', ''); $folder = new OCP\Template('files', 'index', '');
$folder->assign('fileList', $list->fetchPage(), false); $folder->assign('fileList', $list->fetchPage(), false);
$folder->assign('breadcrumb', $breadcrumbNav->fetchPage(), false); $folder->assign('breadcrumb', $breadcrumbNav->fetchPage(), false);
$folder->assign('dir', basename($dir)); $folder->assign('dir', basename($dir));
$folder->assign('isCreatable', false); $folder->assign('isCreatable', false);
$folder->assign('permissions', 0); $folder->assign('permissions', 0);
$folder->assign('files', $files); $folder->assign('files', $files);
$folder->assign('uploadMaxFilesize', 0); $folder->assign('uploadMaxFilesize', 0);
$folder->assign('uploadMaxHumanFilesize', 0); $folder->assign('uploadMaxHumanFilesize', 0);
$folder->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true))); $folder->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true)));
$tmpl->assign('folder', $folder->fetchPage(), false); $tmpl->assign('folder', $folder->fetchPage(), false);
$tmpl->assign('uidOwner', $uidOwner); $tmpl->assign('uidOwner', $uidOwner);
$tmpl->assign('dir', basename($dir)); $tmpl->assign('dir', basename($dir));
$tmpl->assign('filename', basename($path)); $tmpl->assign('filename', basename($path));
$tmpl->assign('mimetype', OC_Filesystem::getMimeType($path)); $tmpl->assign('mimetype', OC_Filesystem::getMimeType($path));
$tmpl->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true))); $tmpl->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true)));
if (isset($_GET['path'])) { if (isset($_GET['path'])) {
$getPath = $_GET['path']; $getPath = $_GET['path'];
} else { } else {
$getPath = ''; $getPath = '';
} }
$tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').'&download&dir='.urlencode($_GET['dir']).'&path='.urlencode($getPath), false); $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').'&download&dir='.urlencode($_GET['dir']).'&path='.urlencode($getPath), false);
} else { } else {
// Show file preview if viewer is available // Show file preview if viewer is available
$tmpl->assign('uidOwner', $uidOwner); $tmpl->assign('uidOwner', $uidOwner);
$tmpl->assign('dir', dirname($path)); $tmpl->assign('dir', dirname($path));
$tmpl->assign('filename', basename($path)); $tmpl->assign('filename', basename($path));
$tmpl->assign('mimetype', OC_Filesystem::getMimeType($path)); $tmpl->assign('mimetype', OC_Filesystem::getMimeType($path));
if ($type == 'file') { if ($type == 'file') {
$tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').'&file='.urlencode($_GET['file']).'&download', false); $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').'&file='.urlencode($_GET['file']).'&download', false);
} else { } else {
if (isset($_GET['path'])) { if (isset($_GET['path'])) {
$getPath = $_GET['path']; $getPath = $_GET['path'];
} else { } else {
$getPath = ''; $getPath = '';
} }
$tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').'&download&dir='.urlencode($_GET['dir']).'&path='.urlencode($getPath), false); $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').'&download&dir='.urlencode($_GET['dir']).'&path='.urlencode($getPath), false);
} }
} }
$tmpl->printPage(); $tmpl->printPage();
} }
exit(); exit();
} }
} }
} }
header('HTTP/1.0 404 Not Found'); header('HTTP/1.0 404 Not Found');
$tmpl = new OCP\Template('', '404', 'guest'); $tmpl = new OCP\Template('', '404', 'guest');
$tmpl->printPage(); $tmpl->printPage();

View File

@ -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'; OC::$CLASSPATH['OCA_Versions\Hooks'] = 'apps/files_versions/lib/hooks.php';
OCP\App::registerAdmin('files_versions', 'settings'); 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'); OCP\Util::addscript('files_versions', 'versions');

View File

@ -22,7 +22,7 @@
*/ */
OCP\User::checkLoggedIn( ); OCP\User::checkLoggedIn( );
OCP\Util::addStyle('files_versions','versions'); OCP\Util::addStyle('files_versions', 'versions');
$tmpl = new OCP\Template( 'files_versions', 'history', 'user' ); $tmpl = new OCP\Template( 'files_versions', 'history', 'user' );
if ( isset( $_GET['path'] ) ) { if ( isset( $_GET['path'] ) ) {

View File

@ -1,278 +1,278 @@
<?php <?php
/** /**
* Copyright (c) 2012 Frank Karlitschek <frank@owncloud.org> * Copyright (c) 2012 Frank Karlitschek <frank@owncloud.org>
* This file is licensed under the Affero General Public License version 3 or * This file is licensed under the Affero General Public License version 3 or
* later. * later.
* See the COPYING-README file. * See the COPYING-README file.
*/ */
/** /**
* Versions * Versions
* *
* A class to handle the versioning of files. * A class to handle the versioning of files.
*/ */
namespace OCA_Versions; namespace OCA_Versions;
class Storage { class Storage {
// config.php configuration: // config.php configuration:
// - files_versions // - files_versions
// - files_versionsfolder // - files_versionsfolder
// - files_versionsblacklist // - files_versionsblacklist
// - files_versionsmaxfilesize // - files_versionsmaxfilesize
// - files_versionsinterval // - files_versionsinterval
// - files_versionmaxversions // - files_versionmaxversions
// //
// todo: // todo:
// - finish porting to OC_FilesystemView to enable network transparency // - finish porting to OC_FilesystemView to enable network transparency
// - add transparent compression. first test if it´s worth it. // - add transparent compression. first test if it´s worth it.
const DEFAULTENABLED=true; const DEFAULTENABLED=true;
const DEFAULTBLACKLIST='avi mp3 mpg mp4 ctmp'; const DEFAULTBLACKLIST='avi mp3 mpg mp4 ctmp';
const DEFAULTMAXFILESIZE=1048576; // 10MB const DEFAULTMAXFILESIZE=1048576; // 10MB
const DEFAULTMININTERVAL=60; // 1 min const DEFAULTMININTERVAL=60; // 1 min
const DEFAULTMAXVERSIONS=50; const DEFAULTMAXVERSIONS=50;
private static function getUidAndFilename($filename) private static function getUidAndFilename($filename)
{ {
if (\OCP\App::isEnabled('files_sharing') if (\OCP\App::isEnabled('files_sharing')
&& substr($filename, 0, 7) == '/Shared' && substr($filename, 0, 7) == '/Shared'
&& $source = \OCP\Share::getItemSharedWith('file', && $source = \OCP\Share::getItemSharedWith('file',
substr($filename, 7), substr($filename, 7),
\OC_Share_Backend_File::FORMAT_SHARED_STORAGE)) { \OC_Share_Backend_File::FORMAT_SHARED_STORAGE)) {
$filename = $source['path']; $filename = $source['path'];
$pos = strpos($filename, '/files', 1); $pos = strpos($filename, '/files', 1);
$uid = substr($filename, 1, $pos - 1); $uid = substr($filename, 1, $pos - 1);
$filename = substr($filename, $pos + 6); $filename = substr($filename, $pos + 6);
} else { } else {
$uid = \OCP\User::getUser(); $uid = \OCP\User::getUser();
} }
return array($uid, $filename); return array($uid, $filename);
} }
/** /**
* store a new version of a file. * store a new version of a file.
*/ */
public function store($filename) { public function store($filename) {
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
list($uid, $filename) = self::getUidAndFilename($filename); list($uid, $filename) = self::getUidAndFilename($filename);
$files_view = new \OC_FilesystemView('/'.\OCP\User::getUser() .'/files'); $files_view = new \OC_FilesystemView('/'.\OCP\User::getUser() .'/files');
$users_view = new \OC_FilesystemView('/'.\OCP\User::getUser()); $users_view = new \OC_FilesystemView('/'.\OCP\User::getUser());
//check if source file already exist as version to avoid recursions. //check if source file already exist as version to avoid recursions.
// todo does this check work? // todo does this check work?
if ($users_view->file_exists($filename)) { if ($users_view->file_exists($filename)) {
return false; return false;
} }
// check if filename is a directory // check if filename is a directory
if($files_view->is_dir($filename)) { if($files_view->is_dir($filename)) {
return false; return false;
} }
// check filetype blacklist // check filetype blacklist
$blacklist=explode(' ', \OCP\Config::getSystemValue('files_versionsblacklist', Storage::DEFAULTBLACKLIST)); $blacklist=explode(' ', \OCP\Config::getSystemValue('files_versionsblacklist', Storage::DEFAULTBLACKLIST));
foreach($blacklist as $bl) { foreach($blacklist as $bl) {
$parts=explode('.', $filename); $parts=explode('.', $filename);
$ext=end($parts); $ext=end($parts);
if(strtolower($ext)==$bl) { if(strtolower($ext)==$bl) {
return false; return false;
} }
} }
// we should have a source file to work with // we should have a source file to work with
if (!$files_view->file_exists($filename)) { if (!$files_view->file_exists($filename)) {
return false; return false;
} }
// check filesize // check filesize
if($files_view->filesize($filename)>\OCP\Config::getSystemValue('files_versionsmaxfilesize', Storage::DEFAULTMAXFILESIZE)) { if($files_view->filesize($filename)>\OCP\Config::getSystemValue('files_versionsmaxfilesize', Storage::DEFAULTMAXFILESIZE)) {
return false; return false;
} }
// check mininterval if the file is being modified by the owner (all shared files should be versioned despite mininterval) // check mininterval if the file is being modified by the owner (all shared files should be versioned despite mininterval)
if ($uid == \OCP\User::getUser()) { if ($uid == \OCP\User::getUser()) {
$versions_fileview = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_versions'); $versions_fileview = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_versions');
$versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename); $versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
$versionsFolderName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath(''); $versionsFolderName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('');
$matches=glob($versionsName.'.v*'); $matches=glob($versionsName.'.v*');
sort($matches); sort($matches);
$parts=explode('.v', end($matches)); $parts=explode('.v', end($matches));
if((end($parts)+Storage::DEFAULTMININTERVAL)>time()) { if((end($parts)+Storage::DEFAULTMININTERVAL)>time()) {
return false; return false;
} }
} }
// create all parent folders // create all parent folders
$info=pathinfo($filename); $info=pathinfo($filename);
if(!file_exists($versionsFolderName.'/'.$info['dirname'])) { if(!file_exists($versionsFolderName.'/'.$info['dirname'])) {
mkdir($versionsFolderName.'/'.$info['dirname'],0750, true); mkdir($versionsFolderName.'/'.$info['dirname'], 0750, true);
} }
// store a new version of a file // store a new version of a file
$users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.time()); $users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.time());
// expire old revisions if necessary // expire old revisions if necessary
Storage::expire($filename); Storage::expire($filename);
} }
} }
/** /**
* rollback to an old version of a file. * rollback to an old version of a file.
*/ */
public static function rollback($filename, $revision) { public static function rollback($filename, $revision) {
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
list($uid, $filename) = self::getUidAndFilename($filename); list($uid, $filename) = self::getUidAndFilename($filename);
$users_view = new \OC_FilesystemView('/'.\OCP\User::getUser()); $users_view = new \OC_FilesystemView('/'.\OCP\User::getUser());
// rollback // rollback
if( @$users_view->copy('files_versions'.$filename.'.v'.$revision, 'files'.$filename) ) { if( @$users_view->copy('files_versions'.$filename.'.v'.$revision, 'files'.$filename) ) {
return true; return true;
}else{ }else{
return false; return false;
} }
} }
} }
/** /**
* check if old versions of a file exist. * check if old versions of a file exist.
*/ */
public static function isversioned($filename) { public static function isversioned($filename) {
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
list($uid, $filename) = self::getUidAndFilename($filename); list($uid, $filename) = self::getUidAndFilename($filename);
$versions_fileview = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_versions'); $versions_fileview = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_versions');
$versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename); $versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
// check for old versions // check for old versions
$matches=glob($versionsName.'.v*'); $matches=glob($versionsName.'.v*');
if(count($matches)>0) { if(count($matches)>0) {
return true; return true;
}else{ }else{
return false; return false;
} }
}else{ }else{
return(false); return(false);
} }
} }
/** /**
* @brief get a list of all available versions of a file in descending chronological order * @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 $filename file to find versions of, relative to the user files dir
* @param $count number of versions to return * @param $count number of versions to return
* @returns array * @returns array
*/ */
public static function getVersions( $filename, $count = 0 ) { public static function getVersions( $filename, $count = 0 ) {
if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) { if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) {
list($uid, $filename) = self::getUidAndFilename($filename); list($uid, $filename) = self::getUidAndFilename($filename);
$versions_fileview = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_versions'); $versions_fileview = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_versions');
$versionsName = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename); $versionsName = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
$versions = array(); $versions = array();
// fetch for old versions // fetch for old versions
$matches = glob( $versionsName.'.v*' ); $matches = glob( $versionsName.'.v*' );
sort( $matches ); sort( $matches );
$i = 0; $i = 0;
$files_view = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files'); $files_view = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files');
$local_file = $files_view->getLocalFile($filename); $local_file = $files_view->getLocalFile($filename);
foreach( $matches as $ma ) { foreach( $matches as $ma ) {
$i++; $i++;
$versions[$i]['cur'] = 0; $versions[$i]['cur'] = 0;
$parts = explode( '.v', $ma ); $parts = explode( '.v', $ma );
$versions[$i]['version'] = ( end( $parts ) ); $versions[$i]['version'] = ( end( $parts ) );
// if file with modified date exists, flag it in array as currently enabled version // 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 ); ( \md5_file( $ma ) == \md5_file( $local_file ) ? $versions[$i]['fileMatch'] = 1 : $versions[$i]['fileMatch'] = 0 );
} }
$versions = array_reverse( $versions ); $versions = array_reverse( $versions );
foreach( $versions as $key => $value ) { foreach( $versions as $key => $value ) {
// flag the first matched file in array (which will have latest modification date) as current version // flag the first matched file in array (which will have latest modification date) as current version
if ( $value['fileMatch'] ) { if ( $value['fileMatch'] ) {
$value['cur'] = 1; $value['cur'] = 1;
break; break;
} }
} }
$versions = array_reverse( $versions ); $versions = array_reverse( $versions );
// only show the newest commits // only show the newest commits
if( $count != 0 and ( count( $versions )>$count ) ) { if( $count != 0 and ( count( $versions )>$count ) ) {
$versions = array_slice( $versions, count( $versions ) - $count ); $versions = array_slice( $versions, count( $versions ) - $count );
} }
return( $versions ); return( $versions );
} else { } else {
// if versioning isn't enabled then return an empty array // if versioning isn't enabled then return an empty array
return( array() ); return( array() );
} }
} }
/** /**
* @brief Erase a file's versions which exceed the set quota * @brief Erase a file's versions which exceed the set quota
*/ */
public static function expire($filename) { public static function expire($filename) {
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
list($uid, $filename) = self::getUidAndFilename($filename); list($uid, $filename) = self::getUidAndFilename($filename);
$versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions'); $versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
$versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename); $versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
// check for old versions // check for old versions
$matches = glob( $versionsName.'.v*' ); $matches = glob( $versionsName.'.v*' );
if( count( $matches ) > \OCP\Config::getSystemValue( 'files_versionmaxversions', Storage::DEFAULTMAXVERSIONS ) ) { if( count( $matches ) > \OCP\Config::getSystemValue( 'files_versionmaxversions', Storage::DEFAULTMAXVERSIONS ) ) {
$numberToDelete = 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 // delete old versions of a file
$deleteItems = array_slice( $matches, 0, $numberToDelete ); $deleteItems = array_slice( $matches, 0, $numberToDelete );
foreach( $deleteItems as $de ) { foreach( $deleteItems as $de ) {
unlink( $versionsName.'.v'.$de ); unlink( $versionsName.'.v'.$de );
} }
} }
} }
} }
/** /**
* @brief Erase all old versions of all user files * @brief Erase all old versions of all user files
* @return true/false * @return true/false
*/ */
public function expireAll() { public function expireAll() {
$view = \OCP\Files::getStorage('files_versions'); $view = \OCP\Files::getStorage('files_versions');
return $view->deleteAll('', true); return $view->deleteAll('', true);
} }
} }

View File

@ -2,6 +2,6 @@
$tmpl = new OCP\Template( 'files_versions', 'settings-personal'); $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(); return $tmpl->fetchPage();

View File

@ -124,7 +124,7 @@ class GROUP_LDAP extends lib\Access implements \OCP\GroupInterface {
$this->connection->ldapGroupFilter, $this->connection->ldapGroupFilter,
$this->connection->ldapGroupMemberAssocAttr.'='.$uid $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); $groups = array_unique($this->ownCloudGroupNames($groups), SORT_LOCALE_STRING);
$this->connection->writeToCache($cacheKey, $groups); $this->connection->writeToCache($cacheKey, $groups);

View File

@ -180,13 +180,13 @@ class Connection {
* Caches the general LDAP configuration. * Caches the general LDAP configuration.
*/ */
private function readConfiguration($force = false) { 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)) { 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['ldapHost'] = \OCP\Config::getAppValue($this->configID, 'ldap_host', '');
$this->config['ldapPort'] = \OCP\Config::getAppValue($this->configID, 'ldap_port', 389); $this->config['ldapPort'] = \OCP\Config::getAppValue($this->configID, 'ldap_port', 389);
$this->config['ldapAgentName'] = \OCP\Config::getAppValue($this->configID, 'ldap_dn',''); $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['ldapAgentPassword'] = base64_decode(\OCP\Config::getAppValue($this->configID, 'ldap_agent_password', ''));
$this->config['ldapBase'] = \OCP\Config::getAppValue($this->configID, 'ldap_base', ''); $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['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']); $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['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['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['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['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['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['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['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', ''); $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'])) { 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); \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\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); \OCP\Util::writeLog('user_ldap', 'Illegal value for the UUID Attribute, reset to autodetect.', \OCP\Util::INFO);
} }

View File

@ -26,16 +26,12 @@ OCP\Util::addscript('user_ldap', 'settings');
OCP\Util::addstyle('user_ldap', 'settings'); OCP\Util::addstyle('user_ldap', 'settings');
if ($_POST) { if ($_POST) {
$clearCache = false;
foreach($params as $param) { foreach($params as $param) {
if(isset($_POST[$param])) { if(isset($_POST[$param])) {
$clearCache = true;
if('ldap_agent_password' == $param) { if('ldap_agent_password' == $param) {
OCP\Config::setAppValue('user_ldap', $param, base64_encode($_POST[$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) { } elseif('home_folder_naming_rule' == $param) {
$value = empty($_POST[$param]) ? 'opt:username' : 'attr:'.$_POST[$param]; $value = empty($_POST[$param]) ? 'opt:username' : 'attr:'.$_POST[$param];
OCP\Config::setAppValue('user_ldap', $param, $value); OCP\Config::setAppValue('user_ldap', $param, $value);
@ -54,12 +50,16 @@ if ($_POST) {
OCP\Config::setAppValue('user_ldap', $param, 0); OCP\Config::setAppValue('user_ldap', $param, 0);
} }
} }
if($clearCache) {
$ldap = new \OCA\user_ldap\lib\Connection('user_ldap');
$ldap->clearCache();
}
} }
// fill template // fill template
$tmpl = new OCP\Template( 'user_ldap', 'settings'); $tmpl = new OCP\Template( 'user_ldap', 'settings');
foreach($params as $param) { foreach($params as $param) {
$value = OCP\Config::getAppValue('user_ldap', $param,''); $value = OCP\Config::getAppValue('user_ldap', $param, '');
$tmpl->assign($param, $value); $tmpl->assign($param, $value);
} }

View File

@ -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="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> <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> </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> </div>
</form> </form>

View File

@ -32,8 +32,8 @@ class Test_Group_Ldap extends UnitTestCase {
$this->assertIsA(OC_Group::getGroups(), gettype(array())); $this->assertIsA(OC_Group::getGroups(), gettype(array()));
$this->assertIsA($group_ldap->getGroups(), gettype(array())); $this->assertIsA($group_ldap->getGroups(), gettype(array()));
$this->assertFalse(OC_Group::inGroup('john','dosers'), gettype(false)); $this->assertFalse(OC_Group::inGroup('john', 'dosers'), gettype(false));
$this->assertFalse($group_ldap->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. //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())); $this->assertIsA(OC_Group::getUserGroups('john doe'), gettype(array()));

View File

@ -23,7 +23,7 @@
require_once 'apps/user_webdavauth/user_webdavauth.php'; 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::registerBackend("WEBDAVAUTH");
OC_User::useBackend( "WEBDAVAUTH" ); OC_User::useBackend( "WEBDAVAUTH" );

View File

@ -21,7 +21,6 @@
* *
*/ */
print_r($_POST);
if($_POST) { if($_POST) {
if(isset($_POST['webdav_url'])) { if(isset($_POST['webdav_url'])) {

View File

@ -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() ) );
?>

View File

@ -40,7 +40,7 @@ OC.EventSource=function(src,data){
dataStr+=name+'='+encodeURIComponent(data[name])+'&'; dataStr+=name+'='+encodeURIComponent(data[name])+'&';
} }
} }
dataStr+='requesttoken='+OC.Request.Token; dataStr+='requesttoken='+OC.EventSource.requesttoken;
if(!this.useFallBack && typeof EventSource !='undefined'){ if(!this.useFallBack && typeof EventSource !='undefined'){
this.source=new EventSource(src+'?'+dataStr); this.source=new EventSource(src+'?'+dataStr);
this.source.onmessage=function(e){ this.source.onmessage=function(e){

View File

@ -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);});

View File

@ -13,9 +13,6 @@ $this->create('search_ajax_search', '/search/ajax/search.php')
// AppConfig // AppConfig
$this->create('core_ajax_appconfig', '/core/ajax/appconfig.php') $this->create('core_ajax_appconfig', '/core/ajax/appconfig.php')
->actionInclude('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 // Share
$this->create('core_ajax_share', '/core/ajax/share.php') $this->create('core_ajax_share', '/core/ajax/share.php')
->actionInclude('core/ajax/share.php'); ->actionInclude('core/ajax/share.php');

View File

@ -73,7 +73,7 @@
<p>MySQL <?php echo $l->t( 'will be used' ); ?>.</p> <p>MySQL <?php echo $l->t( 'will be used' ); ?>.</p>
<input type="hidden" id="dbtype" name="dbtype" value="mysql" /> <input type="hidden" id="dbtype" name="dbtype" value="mysql" />
<?php else: ?> <?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> <label class="mysql" for="mysql">MySQL</label>
<?php endif; ?> <?php endif; ?>
<?php endif; ?> <?php endif; ?>
@ -84,7 +84,7 @@
<input type="hidden" id="dbtype" name="dbtype" value="pgsql" /> <input type="hidden" id="dbtype" name="dbtype" value="pgsql" />
<?php else: ?> <?php else: ?>
<label class="pgsql" for="pgsql">PostgreSQL</label> <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; ?>
<?php endif; ?> <?php endif; ?>
@ -94,7 +94,7 @@
<input type="hidden" id="dbtype" name="dbtype" value="oci" /> <input type="hidden" id="dbtype" name="dbtype" value="oci" />
<?php else: ?> <?php else: ?>
<label class="oci" for="oci">Oracle</label> <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; ?>
<?php endif; ?> <?php endif; ?>
</div> </div>

View File

@ -11,7 +11,6 @@
var oc_webroot = '<?php echo OC::$WEBROOT; ?>'; var oc_webroot = '<?php echo OC::$WEBROOT; ?>';
var oc_appswebroots = <?php echo $_['apps_paths'] ?>; var oc_appswebroots = <?php echo $_['apps_paths'] ?>;
var oc_requesttoken = '<?php echo $_['requesttoken']; ?>'; var oc_requesttoken = '<?php echo $_['requesttoken']; ?>';
var oc_requestlifespan = '<?php echo $_['requestlifespan']; ?>';
</script> </script>
<?php foreach ($_['jsfiles'] as $jsfile): ?> <?php foreach ($_['jsfiles'] as $jsfile): ?>
<script type="text/javascript" src="<?php echo $jsfile; ?>"></script> <script type="text/javascript" src="<?php echo $jsfile; ?>"></script>

View File

@ -11,7 +11,6 @@
var oc_webroot = '<?php echo OC::$WEBROOT; ?>'; var oc_webroot = '<?php echo OC::$WEBROOT; ?>';
var oc_appswebroots = <?php echo $_['apps_paths'] ?>; var oc_appswebroots = <?php echo $_['apps_paths'] ?>;
var oc_requesttoken = '<?php echo $_['requesttoken']; ?>'; var oc_requesttoken = '<?php echo $_['requesttoken']; ?>';
var oc_requestlifespan = '<?php echo $_['requestlifespan']; ?>';
var datepickerFormatDate = <?php echo json_encode($l->l('jsdate', 'jsdate')) ?>; 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 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'))) ?>; 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'))) ?>;

View File

@ -12,7 +12,6 @@
var oc_appswebroots = <?php echo $_['apps_paths'] ?>; var oc_appswebroots = <?php echo $_['apps_paths'] ?>;
var oc_current_user = '<?php echo OC_User::getUser() ?>'; var oc_current_user = '<?php echo OC_User::getUser() ?>';
var oc_requesttoken = '<?php echo $_['requesttoken']; ?>'; var oc_requesttoken = '<?php echo $_['requesttoken']; ?>';
var oc_requestlifespan = '<?php echo $_['requestlifespan']; ?>';
var datepickerFormatDate = <?php echo json_encode($l->l('jsdate', 'jsdate')) ?>; 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 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'))) ?>; 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): ?> <?php foreach($_['jsfiles'] as $jsfile): ?>
<script type="text/javascript" src="<?php echo $jsfile; ?>"></script> <script type="text/javascript" src="<?php echo $jsfile; ?>"></script>
<?php endforeach; ?> <?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 foreach($_['headers'] as $header): ?>
<?php <?php
echo '<'.$header['tag'].' '; echo '<'.$header['tag'].' ';

View File

@ -30,7 +30,7 @@ class my_temporary_cron_class {
// We use this function to handle (unexpected) shutdowns // We use this function to handle (unexpected) shutdowns
function handleUnexpectedShutdown() { function handleUnexpectedShutdown() {
// Delete lockfile // 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 ); unlink( my_temporary_cron_class::$lockfile );
} }
@ -80,7 +80,7 @@ if( OC::$CLI ) {
} }
// check if backgroundjobs is still running // 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::$keeplock = true;
my_temporary_cron_class::$sent = true; my_temporary_cron_class::$sent = true;
echo "Another instance of cron.php is still running!"; echo "Another instance of cron.php is still running!";

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -29,7 +29,7 @@ msgstr ""
msgid "This category already exists: " msgid "This category already exists: "
msgstr "" 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" msgid "Settings"
msgstr "" msgstr ""
@ -314,87 +314,87 @@ msgstr ""
msgid "Finish setup" msgid "Finish setup"
msgstr "" msgstr ""
#: templates/layout.guest.php:16 templates/layout.user.php:17 #: templates/layout.guest.php:15 templates/layout.user.php:16
msgid "Sunday" msgid "Sunday"
msgstr "" msgstr ""
#: templates/layout.guest.php:16 templates/layout.user.php:17 #: templates/layout.guest.php:15 templates/layout.user.php:16
msgid "Monday" msgid "Monday"
msgstr "" msgstr ""
#: templates/layout.guest.php:16 templates/layout.user.php:17 #: templates/layout.guest.php:15 templates/layout.user.php:16
msgid "Tuesday" msgid "Tuesday"
msgstr "" msgstr ""
#: templates/layout.guest.php:16 templates/layout.user.php:17 #: templates/layout.guest.php:15 templates/layout.user.php:16
msgid "Wednesday" msgid "Wednesday"
msgstr "" msgstr ""
#: templates/layout.guest.php:16 templates/layout.user.php:17 #: templates/layout.guest.php:15 templates/layout.user.php:16
msgid "Thursday" msgid "Thursday"
msgstr "" msgstr ""
#: templates/layout.guest.php:16 templates/layout.user.php:17 #: templates/layout.guest.php:15 templates/layout.user.php:16
msgid "Friday" msgid "Friday"
msgstr "" msgstr ""
#: templates/layout.guest.php:16 templates/layout.user.php:17 #: templates/layout.guest.php:15 templates/layout.user.php:16
msgid "Saturday" msgid "Saturday"
msgstr "" msgstr ""
#: templates/layout.guest.php:17 templates/layout.user.php:18 #: templates/layout.guest.php:16 templates/layout.user.php:17
msgid "January" msgid "January"
msgstr "" msgstr ""
#: templates/layout.guest.php:17 templates/layout.user.php:18 #: templates/layout.guest.php:16 templates/layout.user.php:17
msgid "February" msgid "February"
msgstr "" msgstr ""
#: templates/layout.guest.php:17 templates/layout.user.php:18 #: templates/layout.guest.php:16 templates/layout.user.php:17
msgid "March" msgid "March"
msgstr "" msgstr ""
#: templates/layout.guest.php:17 templates/layout.user.php:18 #: templates/layout.guest.php:16 templates/layout.user.php:17
msgid "April" msgid "April"
msgstr "" msgstr ""
#: templates/layout.guest.php:17 templates/layout.user.php:18 #: templates/layout.guest.php:16 templates/layout.user.php:17
msgid "May" msgid "May"
msgstr "" msgstr ""
#: templates/layout.guest.php:17 templates/layout.user.php:18 #: templates/layout.guest.php:16 templates/layout.user.php:17
msgid "June" msgid "June"
msgstr "" msgstr ""
#: templates/layout.guest.php:17 templates/layout.user.php:18 #: templates/layout.guest.php:16 templates/layout.user.php:17
msgid "July" msgid "July"
msgstr "" msgstr ""
#: templates/layout.guest.php:17 templates/layout.user.php:18 #: templates/layout.guest.php:16 templates/layout.user.php:17
msgid "August" msgid "August"
msgstr "" msgstr ""
#: templates/layout.guest.php:17 templates/layout.user.php:18 #: templates/layout.guest.php:16 templates/layout.user.php:17
msgid "September" msgid "September"
msgstr "" msgstr ""
#: templates/layout.guest.php:17 templates/layout.user.php:18 #: templates/layout.guest.php:16 templates/layout.user.php:17
msgid "October" msgid "October"
msgstr "" msgstr ""
#: templates/layout.guest.php:17 templates/layout.user.php:18 #: templates/layout.guest.php:16 templates/layout.user.php:17
msgid "November" msgid "November"
msgstr "" msgstr ""
#: templates/layout.guest.php:17 templates/layout.user.php:18 #: templates/layout.guest.php:16 templates/layout.user.php:17
msgid "December" msgid "December"
msgstr "" msgstr ""
#: templates/layout.guest.php:42 #: templates/layout.guest.php:41
msgid "web services under your control" msgid "web services under your control"
msgstr "" msgstr ""
#: templates/layout.user.php:38 #: templates/layout.user.php:44
msgid "Log out" msgid "Log out"
msgstr "" msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -476,7 +476,7 @@ class MDB2_Driver_Reverse_sqlite3 extends MDB2_Driver_Reverse_Common
$definition['unique'] = true; $definition['unique'] = true;
$count = count($column_names); $count = count($column_names);
for ($i=0; $i<$count; ++$i) { for ($i=0; $i<$count; ++$i) {
$column_name = strtok($column_names[$i]," "); $column_name = strtok($column_names[$i], " ");
$collation = strtok(" "); $collation = strtok(" ");
$definition['fields'][$column_name] = array( $definition['fields'][$column_name] = array(
'position' => $i+1 'position' => $i+1

View File

@ -351,7 +351,7 @@ class MDB2_Driver_sqlite3 extends MDB2_Driver_Common
} }
if ($database_file !== ':memory:') { if ($database_file !== ':memory:') {
if(!strpos($database_file,'.db')) { if(!strpos($database_file, '.db')) {
$database_file="$datadir/$database_file.db"; $database_file="$datadir/$database_file.db";
} }
if (!file_exists($database_file)) { if (!file_exists($database_file)) {
@ -387,7 +387,7 @@ class MDB2_Driver_sqlite3 extends MDB2_Driver_Common
$php_errormsg = ''; $php_errormsg = '';
$this->connection = new SQLite3($database_file); $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->connection->busyTimeout(100);
} }
$this->_lasterror = $this->connection->lastErrorMsg(); $this->_lasterror = $this->connection->lastErrorMsg();
@ -397,8 +397,7 @@ class MDB2_Driver_sqlite3 extends MDB2_Driver_Common
} }
if ($this->fix_assoc_fields_names || 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->connection->exec("PRAGMA short_column_names = 1");
$this->fix_assoc_fields_names = true; $this->fix_assoc_fields_names = true;
} }

View File

@ -185,7 +185,7 @@ class OC_App{
}else{ }else{
$download=OC_OCSClient::getApplicationDownload($app, 1); $download=OC_OCSClient::getApplicationDownload($app, 1);
if(isset($download['downloadlink']) and $download['downloadlink']!='') { 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']));
} }
} }
} }

View File

@ -23,7 +23,7 @@ class OC_Archive_TAR extends OC_Archive{
private $path; private $path;
function __construct($source) { function __construct($source) {
$types=array(null,'gz','bz'); $types=array(null, 'gz', 'bz');
$this->path=$source; $this->path=$source;
$this->tar=new Archive_Tar($source, $types[self::getTarType($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'] if( $file == $header['filename']
or $file.'/' == $header['filename'] or $file.'/' == $header['filename']
or '/'.$file.'/' == $header['filename'] or '/'.$file.'/' == $header['filename']
or '/'.$file == $header['filename']) or '/'.$file == $header['filename']) {
{
return $header; return $header;
} }
} }
@ -309,7 +308,7 @@ class OC_Archive_TAR extends OC_Archive{
if($mode=='r' or $mode=='rb') { if($mode=='r' or $mode=='rb') {
return fopen($tmpFile, $mode); return fopen($tmpFile, $mode);
}else{ }else{
OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this,'writeBack'); OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this, 'writeBack');
self::$tempFiles[$tmpFile]=$path; self::$tempFiles[$tmpFile]=$path;
return fopen('close://'.$tmpFile, $mode); return fopen('close://'.$tmpFile, $mode);
} }
@ -334,7 +333,7 @@ class OC_Archive_TAR extends OC_Archive{
$this->tar->_close(); $this->tar->_close();
$this->tar=null; $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)]); $this->tar=new Archive_Tar($this->path, $types[self::getTarType($this->path)]);
} }
} }

View File

@ -171,7 +171,7 @@ class OC_Archive_ZIP extends OC_Archive{
$ext=''; $ext='';
} }
$tmpFile=OCP\Files::tmpFile($ext); $tmpFile=OCP\Files::tmpFile($ext);
OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this,'writeBack'); OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this, 'writeBack');
if($this->fileExists($path)) { if($this->fileExists($path)) {
$this->extractFile($path, $tmpFile); $this->extractFile($path, $tmpFile);
} }

View File

@ -40,11 +40,11 @@ class OC_BackgroundJob{
* @param $type execution type * @param $type execution type
* @return boolean * @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" * are "none", "ajax", "webcron", "cron"
*/ */
public static function setExecutionType( $type ) { 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 false;
} }
return OC_Appconfig::setValue( 'core', 'backgroundjobs_mode', $type ); return OC_Appconfig::setValue( 'core', 'backgroundjobs_mode', $type );

View File

@ -239,7 +239,7 @@ class OC{
} }
if(file_exists(OC::$SERVERROOT."/config/config.php") and !is_writable(OC::$SERVERROOT."/config/config.php")) { if(file_exists(OC::$SERVERROOT."/config/config.php") and !is_writable(OC::$SERVERROOT."/config/config.php")) {
$tmpl = new OC_Template( '', 'error', 'guest' ); $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(); $tmpl->printPage();
exit; exit;
} }
@ -264,8 +264,6 @@ class OC{
OC_Util::addScript( "jquery-tipsy" ); OC_Util::addScript( "jquery-tipsy" );
OC_Util::addScript( "oc-dialogs" ); OC_Util::addScript( "oc-dialogs" );
OC_Util::addScript( "js" ); 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( "eventsource" );
OC_Util::addScript( "config" ); OC_Util::addScript( "config" );
//OC_Util::addScript( "multiselect" ); //OC_Util::addScript( "multiselect" );
@ -322,7 +320,7 @@ class OC{
public static function init() { public static function init() {
// register autoloader // register autoloader
spl_autoload_register(array('OC','autoload')); spl_autoload_register(array('OC', 'autoload'));
setlocale(LC_ALL, 'en_US.UTF-8'); setlocale(LC_ALL, 'en_US.UTF-8');
// set some stuff // set some stuff
@ -440,7 +438,7 @@ class OC{
OC_Hook::connect('OC_Filesystem', 'rename', 'OC_Filesystem', 'isBlacklisted'); OC_Hook::connect('OC_Filesystem', 'rename', 'OC_Filesystem', 'isBlacklisted');
//make sure temporary files are cleaned up //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 //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')); 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); $file_ext = substr($param['file'], -3);
if ($file_ext != 'php' if ($file_ext != 'php'
|| !self::loadAppScriptFile($param)) || !self::loadAppScriptFile($param)) {
{
header('HTTP/1.0 404 Not Found'); header('HTTP/1.0 404 Not Found');
} }
} }
@ -597,8 +594,7 @@ class OC{
if(!isset($_COOKIE["oc_remember_login"]) if(!isset($_COOKIE["oc_remember_login"])
|| !isset($_COOKIE["oc_token"]) || !isset($_COOKIE["oc_token"])
|| !isset($_COOKIE["oc_username"]) || !isset($_COOKIE["oc_username"])
|| !$_COOKIE["oc_remember_login"]) || !$_COOKIE["oc_remember_login"]) {
{
return false; return false;
} }
OC_App::loadApps(array('authentication')); OC_App::loadApps(array('authentication'));
@ -623,9 +619,9 @@ class OC{
OC_Util::redirectToDefaultPage(); OC_Util::redirectToDefaultPage();
// doesn't return // 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 // 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 // this point multiple times after a password change
OC_Log::write('core', 'Authentication cookie rejected for user '.$_COOKIE['oc_username'], OC_Log::WARN); 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')); OC_App::loadApps(array('authentication'));
if (OC_User::login($_SERVER["PHP_AUTH_USER"], $_SERVER["PHP_AUTH_PW"])) { 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(); OC_User::unsetMagicInCookie();
$_REQUEST['redirect_url'] = (isset($_SERVER['REQUEST_URI'])?$_SERVER['REQUEST_URI']:''); $_REQUEST['redirect_url'] = (isset($_SERVER['REQUEST_URI'])?$_SERVER['REQUEST_URI']:'');
OC_Util::redirectToDefaultPage(); OC_Util::redirectToDefaultPage();

View File

@ -57,7 +57,7 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D
*/ */
public function get() { public function get() {
return OC_Filesystem::fopen($this->path,'rb'); return OC_Filesystem::fopen($this->path, 'rb');
} }

View File

@ -102,7 +102,7 @@ class OC_Connector_Sabre_Locks extends Sabre_DAV_Locks_Backend_Abstract {
* @param Sabre_DAV_Locks_LockInfo $lockInfo * @param Sabre_DAV_Locks_LockInfo $lockInfo
* @return bool * @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 // We're making the lock timeout 5 minutes
$lockInfo->timeout = 300; $lockInfo->timeout = 300;
@ -134,7 +134,7 @@ class OC_Connector_Sabre_Locks extends Sabre_DAV_Locks_Backend_Abstract {
* @param Sabre_DAV_Locks_LockInfo $lockInfo * @param Sabre_DAV_Locks_LockInfo $lockInfo
* @return bool * @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` = ?' ); $query = OC_DB::prepare( 'DELETE FROM `*PREFIX*locks` WHERE `userid` = ? AND `uri` = ? AND `token` = ?' );
$result = $query->execute( array(OC_User::getUser(), $uri, $lockInfo->token)); $result = $query->execute( array(OC_User::getUser(), $uri, $lockInfo->token));

View File

@ -85,7 +85,7 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
$this->path = $newPath; $this->path = $newPath;
$query = OC_DB::prepare( 'UPDATE `*PREFIX*properties` SET `propertypath` = ? WHERE `userid` = ? AND `propertypath` = ?' ); $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 )); $query->execute( array( OC_User::getUser(), $this->path, $propertyName, $propertyValue ));
} else { } else {
$query = OC_DB::prepare( 'UPDATE `*PREFIX*properties` SET `propertyvalue` = ? WHERE `userid` = ? AND `propertypath` = ? AND `propertyname` = ?' ); $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 ));
} }
} }
} }

View File

@ -2,7 +2,7 @@
/** /**
* This plugin check user quota and deny creating files when they exceeds the quota. * This plugin check user quota and deny creating files when they exceeds the quota.
* *
* @copyright Copyright (C) 2012 entreCables S.L. All rights reserved. * @copyright Copyright (C) 2012 entreCables S.L. All rights reserved.
* @author Sergio Cambra * @author Sergio Cambra
* @license http://code.google.com/p/sabredav/wiki/License Modified BSD License * @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 { class OC_Connector_Sabre_QuotaPlugin extends Sabre_DAV_ServerPlugin {
/** /**
* Reference to main server object * Reference to main server object
* *
* @var Sabre_DAV_Server * @var Sabre_DAV_Server
*/ */
private $server; private $server;
@ -23,8 +23,8 @@ class OC_Connector_Sabre_QuotaPlugin extends Sabre_DAV_ServerPlugin {
* addPlugin is called. * addPlugin is called.
* *
* This method should set up the requires event subscriptions. * This method should set up the requires event subscriptions.
* *
* @param Sabre_DAV_Server $server * @param Sabre_DAV_Server $server
* @return void * @return void
*/ */
public function initialize(Sabre_DAV_Server $server) { 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 * This method is called before any HTTP method and forces users to be authenticated
* *
* @param string $method * @param string $method
* @throws Sabre_DAV_Exception * @throws Sabre_DAV_Exception
* @return bool * @return bool
*/ */
public function checkQuota($uri, $data = null) { public function checkQuota($uri, $data = null) {
$expected = $this->server->httpRequest->getHeader('X-Expected-Entity-Length'); $expected = $this->server->httpRequest->getHeader('X-Expected-Entity-Length');

View File

@ -324,7 +324,7 @@ class OC_DB {
if( PEAR::isError($result)) { if( PEAR::isError($result)) {
$entry = 'DB Error: "'.$result->getMessage().'"<br />'; $entry = 'DB Error: "'.$result->getMessage().'"<br />';
$entry .= 'Offending command was: '.htmlentities($query).'<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); error_log('DB error: '.$entry);
die( $entry ); die( $entry );
} }
@ -334,7 +334,7 @@ class OC_DB {
}catch(PDOException $e) { }catch(PDOException $e) {
$entry = 'DB Error: "'.$e->getMessage().'"<br />'; $entry = 'DB Error: "'.$e->getMessage().'"<br />';
$entry .= 'Offending command was: '.htmlentities($query).'<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); error_log('DB error: '.$entry);
die( $entry ); die( $entry );
} }

View File

@ -61,7 +61,7 @@ class OC_FileCache{
* *
* $data is an assiciative array in the same format as returned by get * $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) { if($root===false) {
$root=OC_Filesystem::getRoot(); $root=OC_Filesystem::getRoot();
} }
@ -120,7 +120,7 @@ class OC_FileCache{
private static function update($id, $data) { private static function update($id, $data) {
$arguments=array(); $arguments=array();
$queryParts=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])) { if(isset($data[$attribute])) {
//Convert to int it args are false //Convert to int it args are false
if($data[$attribute] === false) { if($data[$attribute] === false) {
@ -227,7 +227,7 @@ class OC_FileCache{
$where = '`name` LIKE ? AND `user`=?'; $where = '`name` LIKE ? AND `user`=?';
} }
$query=OC_DB::prepare('SELECT '.$select.' FROM `*PREFIX*fscache` WHERE '.$where); $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(); $names=array();
while($row=$result->fetchRow()) { while($row=$result->fetchRow()) {
if(!$returnData) { if(!$returnData) {
@ -366,7 +366,7 @@ class OC_FileCache{
* @param int count (optional) * @param int count (optional)
* @param string root (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) { if($eventSource) {
$eventSource->send('scanning', array('file'=>$path, 'count'=>$count)); $eventSource->send('scanning', array('file'=>$path, 'count'=>$count));
} }
@ -402,7 +402,7 @@ class OC_FileCache{
} }
OC_FileCache_Update::cleanFolder($path, $root); 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 * @return array of file paths
* *
* $part1 and $part2 together form the complete mimetype. * $part1 and $part2 together form the complete mimetype.
* e.g. searchByMime('text','plain') * e.g. searchByMime('text', 'plain')
* *
* seccond mimetype part can be ommited * seccond mimetype part can be ommited
* e.g. searchByMime('audio') * e.g. searchByMime('audio')
@ -500,7 +500,7 @@ class OC_FileCache{
* trigger an update for the cache by setting the mtimes to 0 * trigger an update for the cache by setting the mtimes to 0
* @param string $user (optional) * @param string $user (optional)
*/ */
public static function triggerUpdate($user=''){ public static function triggerUpdate($user='') {
if($user) { if($user) {
$query=OC_DB::prepare('UPDATE `*PREFIX*fscache` SET `mtime`=0 WHERE `user`=? AND `mimetype`="httpd/unix-directory"'); $query=OC_DB::prepare('UPDATE `*PREFIX*fscache` SET `mtime`=0 WHERE `user`=? AND `mimetype`="httpd/unix-directory"');
$query->execute(array($user)); $query->execute(array($user));

View File

@ -85,7 +85,7 @@ class OC_FileCache_Update{
$file=$path.'/'.$filename; $file=$path.'/'.$filename;
$isDir=$view->is_dir($file); $isDir=$view->is_dir($file);
if(self::hasUpdated($file, $root, $isDir)) { if(self::hasUpdated($file, $root, $isDir)) {
if($isDir){ if($isDir) {
self::updateFolder($file, $root); self::updateFolder($file, $root);
}elseif($root===false) {//filesystem hooks are only valid for the default root }elseif($root===false) {//filesystem hooks are only valid for the default root
OC_Hook::emit('OC_Filesystem', 'post_write', array('path'=>$file)); OC_Hook::emit('OC_Filesystem', 'post_write', array('path'=>$file));
@ -165,7 +165,7 @@ class OC_FileCache_Update{
$mtime=$view->filemtime($path.'/'); $mtime=$view->filemtime($path.'/');
$ctime=$view->filectime($path.'/'); $ctime=$view->filectime($path.'/');
$writable=$view->is_writable($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{ }else{
$count=0; $count=0;
OC_FileCache::scan($path, null, $count, $root); OC_FileCache::scan($path, null, $count, $root);
@ -174,7 +174,7 @@ class OC_FileCache_Update{
}else{ }else{
$size=OC_FileCache::scanFile($path, $root); $size=OC_FileCache::scanFile($path, $root);
} }
if($path !== '' and $path !== '/'){ if($path !== '' and $path !== '/') {
OC_FileCache::increaseSize(dirname($path), $size-$cachedSize, $root); OC_FileCache::increaseSize(dirname($path), $size-$cachedSize, $root);
} }
} }
@ -200,7 +200,7 @@ class OC_FileCache_Update{
* @param string newPath * @param string newPath
* @param string root (optional) * @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)) { if(!OC_FileCache::inCache($oldPath, $root)) {
return; return;
} }

View File

@ -97,7 +97,7 @@ class OC_FileProxy{
return true; return true;
} }
public static function runPostProxies($operation,$path, $result) { public static function runPostProxies($operation, $path, $result) {
if(!self::$enabled) { if(!self::$enabled) {
return $result; return $result;
} }

View File

@ -28,7 +28,7 @@ class OC_FileProxy_FileOperations extends OC_FileProxy{
static $rootView; static $rootView;
public function premkdir($path) { public function premkdir($path) {
if(!self::$rootView){ if(!self::$rootView) {
self::$rootView = new OC_FilesystemView(''); self::$rootView = new OC_FilesystemView('');
} }
return !self::$rootView->file_exists($path); return !self::$rootView->file_exists($path);

View File

@ -38,9 +38,9 @@ class OC_FileProxy_Quota extends OC_FileProxy{
if(in_array($user, $this->userQuota)) { if(in_array($user, $this->userQuota)) {
return $this->userQuota[$user]; return $this->userQuota[$user];
} }
$userQuota=OC_Preferences::getValue($user,'files','quota','default'); $userQuota=OC_Preferences::getValue($user, 'files', 'quota', 'default');
if($userQuota=='default') { if($userQuota=='default') {
$userQuota=OC_AppConfig::getValue('files','default_quota','none'); $userQuota=OC_AppConfig::getValue('files', 'default_quota', 'none');
} }
if($userQuota=='none') { if($userQuota=='none') {
$this->userQuota[$user]=0; $this->userQuota[$user]=0;
@ -93,7 +93,7 @@ class OC_FileProxy_Quota extends OC_FileProxy{
} }
public function preCopy($path1, $path2) { public function preCopy($path1, $path2) {
if(!self::$rootView){ if(!self::$rootView) {
self::$rootView = new OC_FilesystemView(''); self::$rootView = new OC_FilesystemView('');
} }
return (self::$rootView->filesize($path1)<$this->getFreeSpace($path2) or $this->getFreeSpace($path2)==0); return (self::$rootView->filesize($path1)<$this->getFreeSpace($path2) or $this->getFreeSpace($path2)==0);

View File

@ -391,7 +391,7 @@ class OC_Files {
*/ */
static function pull($source, $token, $dir, $file) { static function pull($source, $token, $dir, $file) {
$tmpfile=tempnam(get_temp_dir(), 'remoteCloudFile'); $tmpfile=tempnam(get_temp_dir(), 'remoteCloudFile');
$fp=fopen($tmpfile,'w+'); $fp=fopen($tmpfile, 'w+');
$url=$source.="/files/pull.php?token=$token"; $url=$source.="/files/pull.php?token=$token";
$ch=curl_init(); $ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_URL, $url);

View File

@ -48,7 +48,7 @@ abstract class OC_Filestorage{
abstract public function copy($path1, $path2); abstract public function copy($path1, $path2);
abstract public function fopen($path, $mode); abstract public function fopen($path, $mode);
abstract public function getMimeType($path); 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 free_space($path);
abstract public function search($query); abstract public function search($query);
abstract public function touch($path, $mtime=null); abstract public function touch($path, $mtime=null);

View File

@ -204,7 +204,7 @@ abstract class OC_Filestorage_Common extends OC_Filestorage {
unlink($tmpFile); unlink($tmpFile);
return $mime; return $mime;
} }
public function hash($type,$path, $raw = false) { public function hash($type, $path, $raw = false) {
$tmpFile=$this->getLocalFile(); $tmpFile=$this->getLocalFile();
$hash=hash($type, $tmpFile, $raw); $hash=hash($type, $tmpFile, $raw);
unlink($tmpFile); unlink($tmpFile);
@ -264,7 +264,7 @@ abstract class OC_Filestorage_Common extends OC_Filestorage {
$files[]=$dir.'/'.$item; $files[]=$dir.'/'.$item;
} }
if($this->is_dir($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));
} }
} }
} }

View File

@ -6,7 +6,7 @@ class OC_Filestorage_Local extends OC_Filestorage_Common{
protected $datadir; protected $datadir;
public function __construct($arguments) { public function __construct($arguments) {
$this->datadir=$arguments['datadir']; $this->datadir=$arguments['datadir'];
if(substr($this->datadir,-1)!=='/') { if(substr($this->datadir, -1)!=='/') {
$this->datadir.='/'; $this->datadir.='/';
} }
} }
@ -20,7 +20,7 @@ class OC_Filestorage_Local extends OC_Filestorage_Common{
return opendir($this->datadir.$path); return opendir($this->datadir.$path);
} }
public function is_dir($path) { public function is_dir($path) {
if(substr($path,-1)=='/') { if(substr($path, -1)=='/') {
$path=substr($path, 0, -1); $path=substr($path, 0, -1);
} }
return is_dir($this->datadir.$path); return is_dir($this->datadir.$path);
@ -86,11 +86,11 @@ class OC_Filestorage_Local extends OC_Filestorage_Common{
} }
public function rename($path1, $path2) { public function rename($path1, $path2) {
if (!$this->isUpdatable($path1)) { 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; return false;
} }
if(! $this->file_exists($path1)) { 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; return false;
} }
@ -103,7 +103,7 @@ class OC_Filestorage_Local extends OC_Filestorage_Common{
if(!$this->file_exists($path2)) { if(!$this->file_exists($path2)) {
$this->mkdir($path2); $this->mkdir($path2);
} }
$source=substr($path1, strrpos($path1,'/')+1); $source=substr($path1, strrpos($path1, '/')+1);
$path2.=$source; $path2.=$source;
} }
return copy($this->datadir.$path1, $this->datadir.$path2); return copy($this->datadir.$path1, $this->datadir.$path2);
@ -156,8 +156,8 @@ class OC_Filestorage_Local extends OC_Filestorage_Common{
return $return; return $return;
} }
public function hash($path,$type, $raw=false) { public function hash($path, $type, $raw=false) {
return hash_file($type,$this->datadir.$path, $raw); return hash_file($type, $this->datadir.$path, $raw);
} }
public function free_space($path) { public function free_space($path) {
@ -182,7 +182,7 @@ class OC_Filestorage_Local extends OC_Filestorage_Common{
$files[]=$dir.'/'.$item; $files[]=$dir.'/'.$item;
} }
if(is_dir($this->datadir.$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; return $files;

View File

@ -35,10 +35,10 @@
* post_create(path) * post_create(path)
* delete(path, &run) * delete(path, &run)
* post_delete(path) * post_delete(path)
* rename(oldpath,newpath, &run) * rename(oldpath, newpath, &run)
* post_rename(oldpath,newpath) * 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) * 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) * post_rename(oldpath, newpath)
* *
* the &run parameter can be set to false to prevent the operation from occuring * 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) { static private function loadSystemMountPoints($user) {
if(is_file(OC::$SERVERROOT.'/config/mount.php')) { if(is_file(OC::$SERVERROOT.'/config/mount.php')) {
$mountConfig=include OC::$SERVERROOT.'/config/mount.php'; $mountConfig=include OC::$SERVERROOT.'/config/mount.php';
if(isset($mountConfig['global'])) { if(isset($mountConfig['global'])) {
foreach($mountConfig['global'] as $mountPoint=>$options) { foreach($mountConfig['global'] as $mountPoint=>$options) {
self::mount($options['class'], $options['options'], $mountPoint); self::mount($options['class'], $options['options'], $mountPoint);
} }
} }
if(isset($mountConfig['group'])) { if(isset($mountConfig['group'])) {
foreach($mountConfig['group'] as $group=>$mounts) { foreach($mountConfig['group'] as $group=>$mounts) {
if(OC_Group::inGroup($user, $group)) { if(OC_Group::inGroup($user, $group)) {
foreach($mounts as $mountPoint=>$options) { foreach($mounts as $mountPoint=>$options) {
$mountPoint=self::setUserVars($mountPoint, $user); $mountPoint=self::setUserVars($mountPoint, $user);
foreach($options as &$option) { foreach($options as &$option) {
$option=self::setUserVars($option, $user); $option=self::setUserVars($option, $user);
} }
self::mount($options['class'], $options['options'], $mountPoint); self::mount($options['class'], $options['options'], $mountPoint);
} }
} }
} }
} }
if(isset($mountConfig['user'])) { if(isset($mountConfig['user'])) {
foreach($mountConfig['user'] as $user=>$mounts) { foreach($mountConfig['user'] as $user=>$mounts) {
if($user==='all' or strtolower($user)===strtolower($user)) { if($user==='all' or strtolower($user)===strtolower($user)) {
foreach($mounts as $mountPoint=>$options) { foreach($mounts as $mountPoint=>$options) {
$mountPoint=self::setUserVars($mountPoint, $user); $mountPoint=self::setUserVars($mountPoint, $user);
foreach($options as &$option) { foreach($options as &$option) {
$option=self::setUserVars($option, $user); $option=self::setUserVars($option, $user);
} }
self::mount($options['class'], $options['options'], $mountPoint); self::mount($options['class'], $options['options'], $mountPoint);
} }
} }
} }
} }
$mtime=filemtime(OC::$SERVERROOT.'/config/mount.php'); $mtime=filemtime(OC::$SERVERROOT.'/config/mount.php');
$previousMTime=OC_Appconfig::getValue('files','mountconfigmtime',0); $previousMTime=OC_Appconfig::getValue('files', 'mountconfigmtime', 0);
if($mtime>$previousMTime) {//mount config has changed, filecache needs to be updated if($mtime>$previousMTime) {//mount config has changed, filecache needs to be updated
OC_FileCache::triggerUpdate(); OC_FileCache::triggerUpdate();
OC_Appconfig::setValue('files', 'mountconfigmtime', $mtime); OC_Appconfig::setValue('files', 'mountconfigmtime', $mtime);
} }
} }
} }
@ -312,7 +312,7 @@ class OC_Filesystem{
return false; return false;
} }
}else{ }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; return false;
} }
} }
@ -356,7 +356,7 @@ class OC_Filesystem{
if(substr($mountpoint, -1)!=='/') { if(substr($mountpoint, -1)!=='/') {
$mountpoint=$mountpoint.'/'; $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, '/') === '/..' ) { if(strstr($path, '/../') || strrchr($path, '/') === '/..' ) {
return false; return false;
} }
if(self::isFileBlacklisted($path)){ if(self::isFileBlacklisted($path)) {
return false; return false;
} }
return true; return true;
@ -425,7 +425,7 @@ class OC_Filesystem{
} }
} }
static public function isFileBlacklisted($path){ static public function isFileBlacklisted($path) {
$blacklist = array('.htaccess'); $blacklist = array('.htaccess');
$filename = strtolower(basename($path)); $filename = strtolower(basename($path));
return in_array($filename, $blacklist); return in_array($filename, $blacklist);
@ -590,7 +590,7 @@ class OC_Filesystem{
$path=substr($path, 0, -1); $path=substr($path, 0, -1);
} }
//remove duplicate slashes //remove duplicate slashes
while(strpos($path,'//')!==false) { while(strpos($path, '//')!==false) {
$path=str_replace('//', '/', $path); $path=str_replace('//', '/', $path);
} }
//normalize unicode if possible //normalize unicode if possible

View File

@ -251,7 +251,7 @@ class OC_FilesystemView {
return $this->basicOperation('filemtime', $path); return $this->basicOperation('filemtime', $path);
} }
public function touch($path, $mtime=null) { 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); $mtime = strtotime($mtime);
} }
return $this->basicOperation('touch', $path, array('write'), $mtime); return $this->basicOperation('touch', $path, array('write'), $mtime);
@ -266,7 +266,7 @@ class OC_FilesystemView {
$path = $this->getRelativePath($absolutePath); $path = $this->getRelativePath($absolutePath);
$exists = $this->file_exists($path); $exists = $this->file_exists($path);
$run = true; $run = true;
if( $this->fakeRoot==OC_Filesystem::getRoot() ){ if( $this->fakeRoot==OC_Filesystem::getRoot() ) {
if(!$exists) { if(!$exists) {
OC_Hook::emit( OC_Hook::emit(
OC_Filesystem::CLASSNAME, OC_Filesystem::CLASSNAME,
@ -294,7 +294,7 @@ class OC_FilesystemView {
$count=OC_Helper::streamCopy($data, $target); $count=OC_Helper::streamCopy($data, $target);
fclose($target); fclose($target);
fclose($data); fclose($data);
if( $this->fakeRoot==OC_Filesystem::getRoot() ){ if( $this->fakeRoot==OC_Filesystem::getRoot() ) {
if(!$exists) { if(!$exists) {
OC_Hook::emit( OC_Hook::emit(
OC_Filesystem::CLASSNAME, OC_Filesystem::CLASSNAME,
@ -337,7 +337,7 @@ class OC_FilesystemView {
return false; return false;
} }
$run=true; $run=true;
if( $this->fakeRoot==OC_Filesystem::getRoot() ){ if( $this->fakeRoot==OC_Filesystem::getRoot() ) {
OC_Hook::emit( OC_Hook::emit(
OC_Filesystem::CLASSNAME, OC_Filesystem::signal_rename, OC_Filesystem::CLASSNAME, OC_Filesystem::signal_rename,
array( array(
@ -362,7 +362,7 @@ class OC_FilesystemView {
$storage1->unlink($this->getInternalPath($path1.$postFix1)); $storage1->unlink($this->getInternalPath($path1.$postFix1));
$result = $count>0; $result = $count>0;
} }
if( $this->fakeRoot==OC_Filesystem::getRoot() ){ if( $this->fakeRoot==OC_Filesystem::getRoot() ) {
OC_Hook::emit( OC_Hook::emit(
OC_Filesystem::CLASSNAME, OC_Filesystem::CLASSNAME,
OC_Filesystem::signal_post_rename, OC_Filesystem::signal_post_rename,
@ -389,7 +389,7 @@ class OC_FilesystemView {
return false; return false;
} }
$run=true; $run=true;
if( $this->fakeRoot==OC_Filesystem::getRoot() ){ if( $this->fakeRoot==OC_Filesystem::getRoot() ) {
OC_Hook::emit( OC_Hook::emit(
OC_Filesystem::CLASSNAME, OC_Filesystem::CLASSNAME,
OC_Filesystem::signal_copy, OC_Filesystem::signal_copy,
@ -433,7 +433,7 @@ class OC_FilesystemView {
$target = $this->fopen($path2.$postFix2, 'w'); $target = $this->fopen($path2.$postFix2, 'w');
$result = OC_Helper::streamCopy($source, $target); $result = OC_Helper::streamCopy($source, $target);
} }
if( $this->fakeRoot==OC_Filesystem::getRoot() ){ if( $this->fakeRoot==OC_Filesystem::getRoot() ) {
OC_Hook::emit( OC_Hook::emit(
OC_Filesystem::CLASSNAME, OC_Filesystem::CLASSNAME,
OC_Filesystem::signal_post_copy, OC_Filesystem::signal_post_copy,
@ -489,7 +489,7 @@ class OC_FilesystemView {
$hooks[]='write'; $hooks[]='write';
break; break;
default: 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); return $this->basicOperation('fopen', $path, $hooks, $mode);

View File

@ -475,16 +475,16 @@ class OC_Helper {
$dirs = explode(PATH_SEPARATOR, $path); $dirs = explode(PATH_SEPARATOR, $path);
// WARNING : We have to check if open_basedir is enabled : // WARNING : We have to check if open_basedir is enabled :
$obd = ini_get('open_basedir'); $obd = ini_get('open_basedir');
if($obd != "none"){ if($obd != "none") {
$obd_values = explode(PATH_SEPARATOR, $obd); $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 ! // open_basedir is in effect !
// We need to check if the program is in one of these dirs : // We need to check if the program is in one of these dirs :
$dirs = $obd_values; $dirs = $obd_values;
} }
} }
foreach($dirs as $dir){ foreach($dirs as $dir) {
foreach($exts as $ext){ foreach($exts as $ext) {
if($check_fn("$dir/$name".$ext)) if($check_fn("$dir/$name".$ext))
return true; return true;
} }

View File

@ -271,7 +271,7 @@ class OC_Image {
return -1; return -1;
} }
if(is_null($this->filepath) || !is_readable($this->filepath)) { 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; return -1;
} }
$exif = @exif_read_data($this->filepath, 'IFD0'); $exif = @exif_read_data($this->filepath, 'IFD0');

View File

@ -57,7 +57,7 @@ class OC_Installer{
*/ */
public static function installApp( $data = array()) { public static function installApp( $data = array()) {
if(!isset($data['source'])) { 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; return false;
} }
@ -65,13 +65,13 @@ class OC_Installer{
if($data['source']=='http') { if($data['source']=='http') {
$path=OC_Helper::tmpFile(); $path=OC_Helper::tmpFile();
if(!isset($data['href'])) { 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; return false;
} }
copy($data['href'], $path); copy($data['href'], $path);
}else{ }else{
if(!isset($data['path'])) { 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; return false;
} }
$path=$data['path']; $path=$data['path'];
@ -86,7 +86,7 @@ class OC_Installer{
rename($path, $path.'.tgz'); rename($path, $path.'.tgz');
$path.='.tgz'; $path.='.tgz';
}else{ }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; return false;
} }
@ -248,7 +248,7 @@ class OC_Installer{
* -# including appinfo/upgrade.php * -# including appinfo/upgrade.php
* -# setting the installed version * -# 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()) { public static function upgradeApp( $data = array()) {
// TODO: write function // TODO: write function

View File

@ -72,7 +72,7 @@ class OC_JSON{
public static function checkSubAdminUser() { public static function checkSubAdminUser() {
self::checkLoggedIn(); self::checkLoggedIn();
self::verifyUser(); 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'); $l = OC_L10N::get('lib');
self::error(array( 'data' => array( 'message' => $l->t('Authentication error') ))); self::error(array( 'data' => array( 'message' => $l->t('Authentication error') )));
exit(); exit();

View File

@ -167,7 +167,7 @@ class OC_L10N{
* *
*/ */
public function tA($textArray) { 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(); $result = array();
foreach($textArray as $key => $text) { foreach($textArray as $key => $text) {
$result[$key] = (string)$this->t($text); $result[$key] = (string)$this->t($text);

View File

@ -41,23 +41,23 @@ class OC_Log {
} }
//Fatal errors handler //Fatal errors handler
public static function onShutdown(){ public static function onShutdown() {
$error = error_get_last(); $error = error_get_last();
if($error) { if($error) {
//ob_end_clean(); //ob_end_clean();
self::write('PHP', $error['message'] . ' at ' . $error['file'] . '#' . $error['line'], self::FATAL); self::write('PHP', $error['message'] . ' at ' . $error['file'] . '#' . $error['line'], self::FATAL);
} else { } else {
return true; return true;
} }
} }
// Uncaught exception handler // 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); self::write('PHP', $exception->getMessage() . ' at ' . $exception->getFile() . '#' . $exception->getLine(), self::FATAL);
} }
//Recoverable errors handler //Recoverable errors handler
public static function onError($number, $message, $file, $line){ public static function onError($number, $message, $file, $line) {
if (error_reporting() === 0) { if (error_reporting() === 0) {
return; return;
} }

View File

@ -44,9 +44,9 @@ class OC_Log_Owncloud {
* @param int level * @param int level
*/ */
public static function write($app, $message, $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) { 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'); $fh=fopen(self::$logFile, 'a');
fwrite($fh, json_encode($entry)."\n"); fwrite($fh, json_encode($entry)."\n");
fclose($fh); fclose($fh);

View File

@ -27,7 +27,7 @@ class OC_Mail {
* @param string $fromname * @param string $fromname
* @param bool $html * @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' ); $SMTPMODE = OC_Config::getValue( 'mail_smtpmode', 'sendmail' );
$SMTPHOST = OC_Config::getValue( 'mail_smtphost', '127.0.0.1' ); $SMTPHOST = OC_Config::getValue( 'mail_smtphost', '127.0.0.1' );

View File

@ -91,7 +91,7 @@ class OC_Migrate{
if( self::$exporttype == 'user' ) { if( self::$exporttype == 'user' ) {
// Check user exists // Check user exists
self::$uid = is_null($uid) ? OC_User::getUser() : $uid; 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) ); return json_encode( array( 'success' => false) );
} }
} }
@ -611,11 +611,11 @@ class OC_Migrate{
if( file_exists( $db ) ) { if( file_exists( $db ) ) {
// Connect to the db // Connect to the db
if(!self::connectDB( $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; return false;
} }
} else { } 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; return false;
} }

View File

@ -53,7 +53,7 @@ class OC_Migration_Content{
if( !is_null( $this->db ) ) { if( !is_null( $this->db ) ) {
// Get db path // Get db path
$db = $this->db->getDatabase(); $db = $this->db->getDatabase();
if(!in_array($db, $this->tmpfiles)){ if(!in_array($db, $this->tmpfiles)) {
$this->tmpfiles[] = $db; $this->tmpfiles[] = $db;
} }
} }
@ -205,7 +205,7 @@ class OC_Migration_Content{
} }
closedir($dirhandle); closedir($dirhandle);
} else { } 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 false;
} }
return true; return true;

View File

@ -162,7 +162,7 @@ class OC_OCSClient{
$xml=OC_OCSClient::getOCSresponse($url); $xml=OC_OCSClient::getOCSresponse($url);
if($xml==false) { 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; return null;
} }
$data=simplexml_load_string($xml); $data=simplexml_load_string($xml);
@ -200,7 +200,7 @@ class OC_OCSClient{
$xml=OC_OCSClient::getOCSresponse($url); $xml=OC_OCSClient::getOCSresponse($url);
if($xml==false) { 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; return null;
} }
$data=simplexml_load_string($xml); $data=simplexml_load_string($xml);
@ -238,7 +238,7 @@ class OC_OCSClient{
$xml=OC_OCSClient::getOCSresponse($url); $xml=OC_OCSClient::getOCSresponse($url);
if($xml==false) { 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; return null;
} }
$data=simplexml_load_string($xml); $data=simplexml_load_string($xml);

View File

@ -62,7 +62,7 @@ class BackgroundJob {
* @param $type execution type * @param $type execution type
* @return boolean * @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" * are "none", "ajax", "webcron", "cron"
*/ */
public static function setExecutionType( $type ) { public static function setExecutionType( $type ) {

View File

@ -28,7 +28,7 @@ namespace OCP;
/** /**
* This class provides the ability for apps to share their content between users. * 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. * Apps must create a backend class that implements OCP\Share_Backend and register it with this class.
* *
* It provides the following hooks: * It provides the following hooks:
* - post_shared * - post_shared
*/ */

View File

@ -61,7 +61,7 @@ class Util {
*/ */
public static function sendMail( $toaddress, $toname, $subject, $mailtext, $fromaddress, $fromname, $html=0, $altbody='', $ccaddress='', $ccname='', $bcc='') { public static function sendMail( $toaddress, $toname, $subject, $mailtext, $fromaddress, $fromname, $html=0, $altbody='', $ccaddress='', $ccname='', $bcc='') {
// call the internal mail class // 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 = '');
} }
/** /**

View File

@ -63,7 +63,7 @@ class OC_Request {
$path_info = substr($_SERVER['REQUEST_URI'], strlen($_SERVER['SCRIPT_NAME'])); $path_info = substr($_SERVER['REQUEST_URI'], strlen($_SERVER['SCRIPT_NAME']));
// following is taken from Sabre_DAV_URLUtil::decodePathSegment // following is taken from Sabre_DAV_URLUtil::decodePathSegment
$path_info = rawurldecode($path_info); $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) { switch($encoding) {
@ -98,7 +98,7 @@ class OC_Request {
$HTTP_ACCEPT_ENCODING = $_SERVER["HTTP_ACCEPT_ENCODING"]; $HTTP_ACCEPT_ENCODING = $_SERVER["HTTP_ACCEPT_ENCODING"];
if( strpos($HTTP_ACCEPT_ENCODING, 'x-gzip') !== false ) if( strpos($HTTP_ACCEPT_ENCODING, 'x-gzip') !== false )
return 'x-gzip'; return 'x-gzip';
else if( strpos($HTTP_ACCEPT_ENCODING,'gzip') !== false ) else if( strpos($HTTP_ACCEPT_ENCODING, 'gzip') !== false )
return 'gzip'; return 'gzip';
return false; return false;
} }

View File

@ -108,7 +108,7 @@ class OC_Route extends Route {
public function actionInclude($file) { public function actionInclude($file) {
$function = create_function('$param', $function = create_function('$param',
'unset($param["_route"]);' 'unset($param["_route"]);'
.'$_GET=array_merge($_GET,$param);' .'$_GET=array_merge($_GET, $param);'
.'unset($param);' .'unset($param);'
.'require_once "'.$file.'";'); .'require_once "'.$file.'";');
$this->action($function); $this->action($function);

View File

@ -34,7 +34,7 @@ class OC_Router {
public function getRoutingFiles() { public function getRoutingFiles() {
if (!isset($this->routing_files)) { if (!isset($this->routing_files)) {
$this->routing_files = array(); $this->routing_files = array();
foreach(OC_APP::getEnabledApps() as $app){ foreach(OC_APP::getEnabledApps() as $app) {
$file = OC_App::getAppPath($app).'/appinfo/routes.php'; $file = OC_App::getAppPath($app).'/appinfo/routes.php';
if(file_exists($file)) { if(file_exists($file)) {
$this->routing_files[$app] = $file; $this->routing_files[$app] = $file;

View File

@ -41,7 +41,7 @@ class OC_Search{
* @param string $provider class name of a OC_Search_Provider * @param string $provider class name of a OC_Search_Provider
*/ */
public static function registerProvider($class, $options=array()) { public static function registerProvider($class, $options=array()) {
self::$registeredProviders[]=array('class'=>$class,'options'=>$options); self::$registeredProviders[]=array('class'=>$class, 'options'=>$options);
} }
/** /**

View File

@ -70,7 +70,7 @@ class OC_Setup {
if(empty($options['dbname'])) { if(empty($options['dbname'])) {
$error[] = "$dbprettyname enter the database name."; $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"; $error[] = "$dbprettyname you may not use dots in the database name";
} }
if($dbtype != 'oci' && empty($options['dbhost'])) { if($dbtype != 'oci' && empty($options['dbhost'])) {
@ -95,7 +95,7 @@ class OC_Setup {
//write the config file //write the config file
OC_Config::setValue('datadirectory', $datadir); OC_Config::setValue('datadirectory', $datadir);
OC_Config::setValue('dbtype', $dbtype); OC_Config::setValue('dbtype', $dbtype);
OC_Config::setValue('version', implode('.',OC_Util::getVersion())); OC_Config::setValue('version', implode('.', OC_Util::getVersion()));
if($dbtype == 'mysql') { if($dbtype == 'mysql') {
$dbuser = $options['dbuser']; $dbuser = $options['dbuser'];
$dbpass = $options['dbpass']; $dbpass = $options['dbpass'];

View File

@ -234,7 +234,7 @@ class OC_CloseStreamWrapper{
} }
public function stream_seek($offset, $whence=SEEK_SET) { public function stream_seek($offset, $whence=SEEK_SET) {
fseek($this->source,$offset, $whence); fseek($this->source, $offset, $whence);
} }
public function stream_tell() { public function stream_tell() {
@ -249,16 +249,16 @@ class OC_CloseStreamWrapper{
return fwrite($this->source, $data); return fwrite($this->source, $data);
} }
public function stream_set_option($option,$arg1, $arg2) { public function stream_set_option($option, $arg1, $arg2) {
switch($option) { switch($option) {
case STREAM_OPTION_BLOCKING: case STREAM_OPTION_BLOCKING:
stream_set_blocking($this->source, $arg1); stream_set_blocking($this->source, $arg1);
break; break;
case STREAM_OPTION_READ_TIMEOUT: case STREAM_OPTION_READ_TIMEOUT:
stream_set_timeout($this->source,$arg1, $arg2); stream_set_timeout($this->source, $arg1, $arg2);
break; break;
case STREAM_OPTION_WRITE_BUFFER: case STREAM_OPTION_WRITE_BUFFER:
stream_set_write_buffer($this->source,$arg1, $arg2); stream_set_write_buffer($this->source, $arg1, $arg2);
} }
} }

View File

@ -25,7 +25,7 @@
* Prints an XSS escaped string * Prints an XSS escaped string
* @param string $string the string which will be escaped and printed * @param string $string the string which will be escaped and printed
*/ */
function p($string){ function p($string) {
print(OC_Util::sanitizeHTML($string)); print(OC_Util::sanitizeHTML($string));
} }
@ -33,7 +33,7 @@ function p($string){
* Prints an unescaped string * Prints an unescaped string
* @param string $string the string which will be printed as it is * @param string $string the string which will be printed as it is
*/ */
function print_unescaped($string){ function print_unescaped($string) {
print($string); print($string);
} }
@ -172,7 +172,6 @@ class OC_Template{
$this->application = $app; $this->application = $app;
$this->vars = array(); $this->vars = array();
$this->vars['requesttoken'] = OC_Util::callRegister(); $this->vars['requesttoken'] = OC_Util::callRegister();
$this->vars['requestlifespan'] = OC_Util::$callLifespan;
$parts = explode('/', $app); // fix translation when app is something like core/lostpassword $parts = explode('/', $app); // fix translation when app is something like core/lostpassword
$this->l10n = OC_L10N::get($parts[0]); $this->l10n = OC_L10N::get($parts[0]);
@ -196,11 +195,11 @@ class OC_Template{
public static function detectFormfactor() { public static function detectFormfactor() {
// please add more useragent strings for other devices // please add more useragent strings for other devices
if(isset($_SERVER['HTTP_USER_AGENT'])) { if(isset($_SERVER['HTTP_USER_AGENT'])) {
if(stripos($_SERVER['HTTP_USER_AGENT'],'ipad')>0) { if(stripos($_SERVER['HTTP_USER_AGENT'], 'ipad')>0) {
$mode='tablet'; $mode='tablet';
}elseif(stripos($_SERVER['HTTP_USER_AGENT'],'iphone')>0) { }elseif(stripos($_SERVER['HTTP_USER_AGENT'], 'iphone')>0) {
$mode='mobile'; $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'; $mode='mobile';
}else{ }else{
$mode='default'; $mode='default';
@ -357,7 +356,7 @@ class OC_Template{
* @param string $text the text content for the element * @param string $text the text content for the element
*/ */
public function addHeader( $tag, $attributes, $text='') { 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); $page = new OC_TemplateLayout($this->renderas);
if($this->renderas == 'user') { if($this->renderas == 'user') {
$page->assign('requesttoken', $this->vars['requesttoken']); $page->assign('requesttoken', $this->vars['requesttoken']);
$page->assign('requestlifespan', $this->vars['requestlifespan']);
} }
// Add custom headers // Add custom headers

Some files were not shown because too many files have changed in this diff Show More