]> source.dussan.org Git - nextcloud-server.git/commitdiff
Merge branch 'unstable'
authorBart Visscher <bartv@thisnet.nl>
Mon, 4 Jun 2012 21:02:05 +0000 (23:02 +0200)
committerBart Visscher <bartv@thisnet.nl>
Mon, 4 Jun 2012 21:02:05 +0000 (23:02 +0200)
Conflicts:
apps/files_external/tests/config.php
apps/files_versions/ajax/getVersions.php
apps/files_versions/appinfo/app.php
apps/files_versions/history.php
apps/files_versions/js/versions.js
apps/files_versions/templates/history.php
apps/files_versions/versions.php
lib/base.php

29 files changed:
1  2 
apps/files/templates/index.php
apps/files_versions/ajax/getVersions.php
apps/files_versions/history.php
apps/files_versions/js/versions.js
apps/files_versions/templates/history.php
apps/files_versions/versions.php
apps/gallery/ajax/galleryOp.php
apps/gallery/ajax/sharing.php
apps/gallery/index.php
apps/gallery/lib/album.php
apps/gallery/lib/photo.php
apps/gallery/lib/scanner.php
apps/user_openid/user_openid.php
core/templates/layout.guest.php
core/templates/layout.user.php
lib/app.php
lib/base.php
lib/filesystem.php
lib/group.php
lib/group/backend.php
lib/group/example.php
lib/helper.php
lib/minimizer.php
lib/template.php
lib/user.php
lib/user/backend.php
lib/user/example.php
lib/util.php
remote.php

index c0a40081fe3ed562d28c4769497c587b92c89251,1308645746eb049ecd921659e28d478139c3a2f6..3bd5a1ceef4e3bce730ec0bf67c36b4c40822ca1
mode 100644,100755..100644
index 1d107c1bda0ad391a7d2253028c93817f16df47d,5debb68589164a70bda05809e81fc2e9c7464ae4..bee6054333977f0a0858b8602f071d60e4a3fc96
mode 100644,100755..100644
@@@ -10,9 -13,16 +10,16 @@@ $source = strip_tags( $source )
  if( OCA_Versions\Storage::isversioned( $source ) ) {
  
        $count=5; //show the newest revisions
-       $versions = OCA_Versions\Storage::getversions( $source, $count);
+       $versions = OCA_Versions\Storage::getVersions( $source, $count);
+       $versionsFormatted = array();
+       
+       foreach ( $versions AS $version ) {
+       
+               $versionsFormatted[] = OCP\Util::formatDate( $version );
+               
+       }
  
 -      $versionsSorted = array_reverse( $versionsFormatted );
 +      $versionsSorted = array_reverse( $versions );
        
        if ( !empty( $versionsSorted ) ) {
                OCP\JSON::encodedPrint($versionsSorted);
index 11c07ef86ce6772b02c1b8fb385a58260958f4da,ea272e3735b4f9e6d11b0f3b5f213acbe18e7712..cb4726e8d0e735a4e3fc177d489a5e9abb11ffde
mode 100644,100755..100644
index 5e46b2a0eed224f661e71bb634f23be6b5d2c4c7,eadf7a510399f00cc15f34386f201813021ca98f..82d569fa0f6fe7500355d207483a56759455e969
@@@ -33,8 -24,8 +33,8 @@@ $(document).ready(function()
  });
  
  function createVersionsDropdown(filename, files) {
--      
 -      var historyUrl = OC.linkTo('files_versions', 'history.php?path='+encodeURIComponent( $( '#dir' ).val() ).replace( /%2F/g, '/' )+'/'+encodeURIComponent( filename ) )
++
 +      var historyUrl = OC.linkTo('files_versions', 'history.php') + '?path='+encodeURIComponent( $( '#dir' ).val() ).replace( /%2F/g, '/' )+'/'+encodeURIComponent( filename );
        
        var html = '<div id="dropdown" class="drop" data-file="'+files+'">';
        html += '<div id="private">';
index 58fea75a0d07958f59d7145f46c360a1cc10bc63,891a3720e41381745144b63f3ff28d47b265b992..13e104152b7cffcf0aa1e66446e229ab1a70d150
mode 100644,100755..100644
@@@ -22,8 -22,10 +22,10 @@@ if( isset( $_['message'] ) ) 
        foreach ( $_['versions'] as $v ) {
        
                echo ' ';
-               echo OCP\Util::formatDate( $v );
-               echo ' <a href="'.OCP\Util::linkTo('files_versions', 'history.php').'?path='.urlencode( $_['path'] ).'&revert='. $v .'" class="button">Revert</a><br /><br />';
+               echo OCP\Util::formatDate( $v['version'] );
 -              echo ' <a href="history.php?path='.urlencode( $_['path'] ).'&revert='. $v['version'] .'" class="button">Revert</a>';
++              echo ' <a href="'.OCP\Util::linkTo('files_versions', 'history.php').'?path='.urlencode( $_['path'] ).'&revert='. $v['version'] .'" class="button">Revert</a><br /><br />';
+               if ( $v['cur'] ) { echo '  (<b>Current</b>)'; }
+               echo '<br /><br />';
                
        }
  
index f39b5a7f4ebec96d042b83decbe33110624f4775,b9010182c09272fb031b7d03d8653dabd200044b..bc5790146591bd5121096a10ca0a3da6d87a0cee
mode 100644,100755..100644
@@@ -33,9 -32,9 +32,9 @@@ class Storage 
  
        const DEFAULTENABLED=true; 
        const DEFAULTFOLDER='versions'; 
 -      const DEFAULTBLACKLIST='avi mp3 mpg mp4'; 
 +      const DEFAULTBLACKLIST='avi mp3 mpg mp4 ctmp'; 
        const DEFAULTMAXFILESIZE=1048576; // 10MB 
-       const DEFAULTMININTERVAL=120; // 2 min
+       const DEFAULTMININTERVAL=1; // 2 min
        const DEFAULTMAXVERSIONS=50; 
  
        /**
         */
        public static function store($filename) {
                if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
 -                      $versionsFolderName=\OCP\Config::getSystemValue('datadirectory').'/'. \OCP\USER::getUser() .'/'.\OCP\Config::getSystemValue('files_versionsfolder', Storage::DEFAULTFOLDER);
 -                      $filesfoldername=\OCP\Config::getSystemValue('datadirectory').'/'. \OCP\USER::getUser() .'/files';
 +                      if (\OCP\App::isEnabled('files_sharing') && $source = \OC_Share::getSource('/'.\OCP\User::getUser().'/files'.$filename)) {
 +                              $pos = strpos($source, '/files', 1);
 +                              $uid = substr($source, 1, $pos - 1);
 +                              $filename = substr($source, $pos + 6);
 +                      } else {
 +                              $uid = \OCP\User::getUser();
 +                      }
-                       $versionsfoldername=\OCP\Config::getSystemValue('datadirectory').'/'. $uid .'/'.\OCP\Config::getSystemValue('files_versionsfolder', Storage::DEFAULTFOLDER);
++                      $versionsFolderName=\OCP\Config::getSystemValue('datadirectory').'/'. $uid .'/'.\OCP\Config::getSystemValue('files_versionsfolder', Storage::DEFAULTFOLDER);
 +                      $filesfoldername=\OCP\Config::getSystemValue('datadirectory').'/'. $uid .'/files';
                        Storage::init();
  
                        // check if filename is a directory
                        }
  
  
 -                      // check mininterval
 -                      $matches=glob($versionsFolderName.$filename.'.v*');
 -                      sort($matches);
 -                      $parts=explode('.v',end($matches));
 -                      if((end($parts)+Storage::DEFAULTMININTERVAL)>time()){
 -                              return false;
 +                      // check mininterval if the file is being modified by the owner (all shared files should be versioned despite mininterval)
 +                      if ($uid == \OCP\User::getUser()) {
-                               $matches=glob($versionsfoldername.'/'.$filename.'.v*');
++                              $matches=glob($versionsFolderName.'/'.$filename.'.v*');
 +                              sort($matches);
 +                              $parts=explode('.v',end($matches));
 +                              if((end($parts)+Storage::DEFAULTMININTERVAL)>time()){
 +                                      return false;
 +                              }
                        }
 -                      
 +
  
                        // create all parent folders
                        $info=pathinfo($filename);      
-                       if(!file_exists($versionsfoldername.'/'.$info['dirname'])) mkdir($versionsfoldername.'/'.$info['dirname'],0700,true);   
 -                      @mkdir($versionsFolderName.$info['dirname'], 0700, true);       
 -
++                      if(!file_exists($versionsFolderName.'/'.$info['dirname'])) mkdir($versionsFolderName.'/'.$info['dirname'],0700,true);   
  
                        // store a new version of a file
-                       copy($filesfoldername.'/'.$filename,$versionsfoldername.'/'.$filename.'.v'.time());
 -                      copy($filesfoldername.$filename,$versionsFolderName.$filename.'.v'.time());
++                      copy($filesfoldername.'/'.$filename,$versionsFolderName.'/'.$filename.'.v'.time());
          
-                       // expire old revisions
+                       // expire old revisions if necessary
                        Storage::expire($filename);
                }
        }
        public static function rollback($filename,$revision) {
        
                if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
 -              
 -                      $versionsFolderName=\OCP\Config::getSystemValue('datadirectory').'/'. \OCP\USER::getUser() .'/'.\OCP\Config::getSystemValue('files_versionsfolder', Storage::DEFAULTFOLDER);
 +                      if (\OCP\App::isEnabled('files_sharing') && $source = \OC_Share::getSource('/'.\OCP\User::getUser().'/files'.$filename)) {
 +                              $pos = strpos($source, '/files', 1);
 +                              $uid = substr($source, 1, $pos - 1);
 +                              $filename = substr($source, $pos + 6);
 +                      } else {
 +                              $uid = \OCP\User::getUser();
 +                      }
-                       $versionsfoldername=\OCP\Config::getSystemValue('datadirectory').'/'.$uid .'/'.\OCP\Config::getSystemValue('files_versionsfolder', Storage::DEFAULTFOLDER);
++                      $versionsFolderName=\OCP\Config::getSystemValue('datadirectory').'/'.$uid .'/'.\OCP\Config::getSystemValue('files_versionsfolder', Storage::DEFAULTFOLDER);
                        
 -                      $filesfoldername=\OCP\Config::getSystemValue('datadirectory').'/'. \OCP\USER::getUser() .'/files';
 +                      $filesfoldername=\OCP\Config::getSystemValue('datadirectory').'/'. $uid .'/files';
                        
                        // rollback
-                       if ( @copy($versionsfoldername.'/'.$filename.'.v'.$revision,$filesfoldername.'/'.$filename) ) {
 -                      if ( @copy($versionsFolderName.$filename.'.v'.$revision,$filesfoldername.$filename) ) {
++                      if ( @copy($versionsFolderName.'/'.$filename.'.v'.$revision,$filesfoldername.'/'.$filename) ) {
                        
                                return true;
                                
         */
        public static function isversioned($filename) {
                if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
 -                      $versionsFolderName=\OCP\Config::getSystemValue('datadirectory').'/'. \OCP\USER::getUser() .'/'.\OCP\Config::getSystemValue('files_versionsfolder', Storage::DEFAULTFOLDER);
 +                      if (\OCP\App::isEnabled('files_sharing') && $source = \OC_Share::getSource('/'.\OCP\User::getUser().'/files'.$filename)) {
 +                              $pos = strpos($source, '/files', 1);
 +                              $uid = substr($source, 1, $pos - 1);
 +                              $filename = substr($source, $pos + 6);
 +                      } else {
 +                              $uid = \OCP\User::getUser();
 +                      }
-                       $versionsfoldername=\OCP\Config::getSystemValue('datadirectory').'/'. $uid .'/'.\OCP\Config::getSystemValue('files_versionsfolder', Storage::DEFAULTFOLDER);
++                      $versionsFolderName=\OCP\Config::getSystemValue('datadirectory').'/'. $uid .'/'.\OCP\Config::getSystemValue('files_versionsfolder', Storage::DEFAULTFOLDER);
  
                        // check for old versions
-                       $matches=glob($versionsfoldername.'/'.$filename.'.v*');
 -                      $matches=glob($versionsFolderName.$filename.'.v*');
++                      $matches=glob($versionsFolderName.'/'.$filename.'.v*');
                        if(count($matches)>1){
                                return true;
                        }else{
  
          
          /**
-          * get a list of old versions of a file.
+          * @brief get a list of all available versions of a file in descending chronological order
+          * @param $filename file to find versions of, relative to the user files dir
+          * @param $count number of versions to return
+          * @returns array
           */
-         public static function getversions($filename,$count=0) {
-                 if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
+         public static function getVersions( $filename, $count = 0 ) {
+         
+                 if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) {
+                 
 -                      $versionsFolderName = \OCP\Config::getSystemValue('datadirectory').'/'. \OCP\USER::getUser() .'/'.\OCP\Config::getSystemValue('files_versionsfolder', Storage::DEFAULTFOLDER);
 +                      if (\OCP\App::isEnabled('files_sharing') && $source = \OC_Share::getSource('/'.\OCP\User::getUser().'/files'.$filename)) {
 +                              $pos = strpos($source, '/files', 1);
 +                              $uid = substr($source, 1, $pos - 1);
 +                              $filename = substr($source, $pos + 6);
 +                      } else {
 +                              $uid = \OCP\User::getUser();
 +                      }
-                       $versionsfoldername=\OCP\Config::getSystemValue('datadirectory').'/'. $uid .'/'.\OCP\Config::getSystemValue('files_versionsfolder', Storage::DEFAULTFOLDER);
-                       $versions=array();         
-  
-                     // fetch for old versions
-                       $matches=glob($versionsfoldername.'/'.$filename.'.v*');
-                       sort($matches);
-                       foreach($matches as $ma) {
-                               $parts=explode('.v',$ma);
-                               $versions[]=(end($parts));
++                      $versionsFolderName = \OCP\Config::getSystemValue('datadirectory').'/'. $uid .'/'.\OCP\Config::getSystemValue('files_versionsfolder', Storage::DEFAULTFOLDER);
+                       $versions = array();         
+                       
+                       // fetch for old versions
 -                      $matches = glob( $versionsFolderName.$filename.'.v*' );
++                      $matches = glob( $versionsFolderName.'/'.$filename.'.v*' );
+                       
+                       sort( $matches );
+                       
+                       $i = 0;
+                       
+                       foreach( $matches as $ma ) {
+                               
+                               $i++;
+                               $versions[$i]['cur'] = 0;
+                               $parts = explode( '.v', $ma );
+                               $versions[$i]['version'] = ( end( $parts ) );
+                               
+                               // if file with modified date exists, flag it in array as currently enabled version
+                               $curFile['fileName'] = basename( $parts[0] );
+                               $curFile['filePath'] = \OCP\Config::getSystemValue('datadirectory').\OC_Filesystem::getRoot().'/'.$curFile['fileName'];
+                               
+                               ( \md5_file( $ma ) == \md5_file( $curFile['filePath'] ) ? $versions[$i]['fileMatch'] = 1 : $versions[$i]['fileMatch'] = 0 );
+                               
                        }
                        
+                       $versions = array_reverse( $versions );
+                       
+                       foreach( $versions as $key => $value ) {
+                               
+                               // flag the first matched file in array (which will have latest modification date) as current version
+                               if ( $versions[$key]['fileMatch'] ) {
+                               
+                                       $versions[$key]['cur'] = 1;
+                                       break;
+                                       
+                               }
+                       
+                       }
+                       
+                       $versions = array_reverse( $versions );
+                       
                        // only show the newest commits
-                       if($count<>0 and (count($versions)>$count)) {
-                               $versions=array_slice($versions,count($versions)-$count);
+                       if( $count != 0 and ( count( $versions )>$count ) ) {
+                       
+                               $versions = array_slice( $versions, count( $versions ) - $count );
+                               
                        }
        
-                       return($versions);
+                       return( $versions );
  
  
-                 }else{
-                         return(array());
+                 } else {
+                 
+                       // if versioning isn't enabled then return an empty array
+                         return( array() );
+                         
                  }
-         }     
+                 
+         }
  
  
          
           */
          public static function expire($filename) {
                  if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
 -                      $versionsFolderName=\OCP\Config::getSystemValue('datadirectory').'/'. \OCP\USER::getUser() .'/'.\OCP\Config::getSystemValue('files_versionsfolder', Storage::DEFAULTFOLDER);
-                       $versionsfoldername=\OCP\Config::getSystemValue('datadirectory').'/'. $uid .'/'.\OCP\Config::getSystemValue('files_versionsfolder', Storage::DEFAULTFOLDER);
 +                      if (\OCP\App::isEnabled('files_sharing') && $source = \OC_Share::getSource('/'.\OCP\User::getUser().'/files'.$filename)) {
 +                              $pos = strpos($source, '/files', 1);
 +                              $uid = substr($source, 1, $pos - 1);
 +                              $filename = substr($source, $pos + 6);
 +                      } else {
 +                              $uid = \OCP\User::getUser();
 +                      }
++                      $versionsFolderName=\OCP\Config::getSystemValue('datadirectory').'/'. $uid .'/'.\OCP\Config::getSystemValue('files_versionsfolder', Storage::DEFAULTFOLDER);
  
                        // check for old versions
-                       $matches=glob($versionsfoldername.'/'.$filename.'.v*');
-                       if(count($matches)>\OCP\Config::getSystemValue('files_versionmaxversions', Storage::DEFAULTMAXVERSIONS)){
-                               $numbertodelete=count($matches-\OCP\Config::getSystemValue('files_versionmaxversions', Storage::DEFAULTMAXVERSIONS));
 -                      $matches = glob( $versionsFolderName.$filename.'.v*' );
++                      $matches = glob( $versionsFolderName.'/'.$filename.'.v*' );
+                       
+                       if( count( $matches ) > \OCP\Config::getSystemValue( 'files_versionmaxversions', Storage::DEFAULTMAXVERSIONS ) ) {
+                       
+                               $numberToDelete = count( $matches-\OCP\Config::getSystemValue( 'files_versionmaxversions', Storage::DEFAULTMAXVERSIONS ) );
  
                                // delete old versions of a file
-                               $deleteitems=array_slice($matches,0,$numbertodelete);
-                               foreach($deleteitems as $de){
-                                       unlink($versionsfoldername.'/'.$filename.'.v'.$de);
+                               $deleteItems = array_slice( $matches, 0, $numberToDelete );
+                               
+                               foreach( $deleteItems as $de ) {
+                               
 -                                      unlink( $versionsFolderName.$filename.'.v'.$de );
++                                      unlink( $versionsFolderName.'/'.$filename.'.v'.$de );
+                                       
                                }
                        }
                  }
index 0cd825f3e50d938cc0b11a2cbe78ba4aafa33231,b49e52f0bd2d49c560874e87b37492eab558aea2..b49e52f0bd2d49c560874e87b37492eab558aea2
mode 100644,100755..100644
index 1223320120b4aa7a41150542a9afea658974ba16,304757b9e9141712eaf8b87b365d174629665fea..304757b9e9141712eaf8b87b365d174629665fea
mode 100644,100755..100644
index e47fb3db5d6726275074d1b9e6dffb2057ea3fd6,a9fe200c4e4ba44e2e683c9bb0a0f53b39e347f1..a9fe200c4e4ba44e2e683c9bb0a0f53b39e347f1
mode 100644,100755..100644
index 5f962f12f128beefc643b4b57f72e3a831e5f2ed,7b9036742a64a1d7b40f44d8a820e5d4bacb6f53..8ac27b1a70dca912560e16d0b5486a4470ab3348
mode 100644,100755..100644
index 99384af621ac513ed384a42cb4cd5e3b545aeada,b4b37236b0e71fcec00dcbfeaa71617edf90f47c..b4b37236b0e71fcec00dcbfeaa71617edf90f47c
mode 100644,100755..100644
index 7a137cb3f508eeffdb2856e81d1df1635d43e041,e11ba1da454dc49ccefac1166e49a765c60c5c79..e11ba1da454dc49ccefac1166e49a765c60c5c79
mode 100644,100755..100644
index 3267db3fa0f407f8832dd843afc76ac40f1e3eb0,710d400aa57c4642c89336f215605da1a402954c..e228de95e9e570e14a919083f3e4189ceb573b18
mode 100644,100755..100644
index 7ba7abdbf12238bc404a375eeb2ee8996a974fc2,84422a10b1828a88dda87680a1b943a8d0d4387a..7f5a4d50fc6b827d9f84019f32c7f03e545c0f71
                <script type="text/javascript">
                        var oc_webroot = '<?php echo OC::$WEBROOT; ?>';
                        var oc_appswebroot = '<?php echo OC::$APPSWEBROOT; ?>';
 -                      var oc_appswebroot = '<?php echo OC::$APPSWEBROOT; ?>';
                </script>
+               <?php if (!defined('DEBUG') || !DEBUG): ?>
+               <script type="text/javascript" src="<?php echo OC_Helper::linkToRemote('core.js', false) ?>"></script>
+               <?php endif ?>
                <?php foreach($_['jsfiles'] as $jsfile): ?>
                        <script type="text/javascript" src="<?php echo $jsfile; ?>"></script>
                <?php endforeach; ?>
Simple merge
diff --cc lib/app.php
index 17e0e479031f3b20c132bc368dfdf713d4471e37,8bd095d8c6c3210078f71d81b5ef508afc3bb493..667633e2647f5e72ae07dbd1da8d4f31431e66f0
mode 100755,100644..100755
@@@ -49,18 -49,38 +49,26 @@@ class OC_App
         * if $types is set, only apps of those types will be loaded
         */
        public static function loadApps($types=null){
 -              // Did we already load everything?
 -              if( self::$init ){
 -                      return true;
 -              }
 -
 -              // Our very own core apps are hardcoded
 -              foreach( array( 'settings') as $app ){
 -                      if(is_null($types)){
 -                              require( $app.'/appinfo/app.php' );
 -                      }
 -              }
 -
 -              // The rest comes here
 +              // Load the enabled apps here
                $apps = self::getEnabledApps();
 +              // prevent app.php from printing output
 +              ob_start();
                foreach( $apps as $app ){
 -                      if((is_null($types) or self::isType($app,$types))){
 -                              if(is_file(OC::$APPSROOT.'/apps/'.$app.'/appinfo/app.php')){
 -                                      require( $app.'/appinfo/app.php' );
 -                              }
 +                      if((is_null($types) or self::isType($app,$types)) && !in_array($app, self::$loadedApps)){
 +                              self::loadApp($app);
 +                              self::$loadedApps[] = $app;
                        }
                }
 -
 -              self::$init = true;
 +              ob_end_clean();
  
+               if (!defined('DEBUG') || !DEBUG){
+                       if (is_null($types)) {
+                               OC_Util::$core_scripts = OC_Util::$scripts;
+                               OC_Util::$scripts = array();
+                               OC_Util::$core_styles = OC_Util::$styles;
+                               OC_Util::$styles = array();
+                       }
+               }
                // return
                return true;
        }
diff --cc lib/base.php
Simple merge
Simple merge
diff --cc lib/group.php
index 7967e1a581b8a9e9c38d8e03fe7b6048fa67fa32,bc98e877ade28a90fc96e074ffe4ccf29f342329..ceee5fa4edb787f0a0217ca8e69591b5078265b6
@@@ -228,12 -221,8 +225,9 @@@ class OC_Group 
        public static function getUserGroups( $uid ){
                $groups=array();
                foreach(self::$_usedBackends as $backend){
-                       if(!$backend->implementsActions(OC_GROUP_BACKEND_GET_USER_GROUPS))
-                               continue;
                        $groups=array_merge($backend->getUserGroups($uid),$groups);
                }
 +              asort($groups);
                return $groups;
        }
  
        public static function getGroups(){
                $groups=array();
                foreach(self::$_usedBackends as $backend){
-                       if(!$backend->implementsActions(OC_GROUP_BACKEND_GET_GROUPS))
-                               continue;
                        $groups=array_merge($backend->getGroups(),$groups);
                }
 +              asort($groups);
                return $groups;
        }
        
Simple merge
Simple merge
diff --cc lib/helper.php
Simple merge
index 0000000000000000000000000000000000000000,2d2708c59e93073f50c85f832501517feb52f090..9f9ef086c4a60bf18aa8d93674fa49127ac96d83
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,39 +1,40 @@@
+ <?php
+ abstract class OC_Minimizer
+ {
+       protected $files = array();
+       protected function appendIfExist($root, $webroot, $file) {
+                 if (is_file($root.'/'.$file)) {
+                       $this->files[] = array($root, $webroot, $file);
+                         return true;
+                 }
+                 return false;
+       }
+       public function getLastModified($files) {
+               $last_modified = 0;
+               foreach($files as $file_info) {
+                       $file = $file_info[0] . '/' . $file_info[2];
+                       $filemtime = filemtime($file);
+                       if ($filemtime > $last_modified) {
+                               $last_modified = $filemtime;
+                       }
+               }
+               return $last_modified;
+       }
+       abstract public function minimizeFiles($files);
+       public function output($files) {
+               header('Content-Type: '.$this->contentType);
+               OC_Response::enableCaching();
+               $last_modified = $this->getLastModified($files);
+               OC_Response::setLastModifiedHeader($last_modified);
+               $out = $this->minimizeFiles($files);
++              OC_Response::setETagHeader(md5($out));
+               header('Content-Length: '.strlen($out));
+               echo $out;
+       }
+ }
Simple merge
diff --cc lib/user.php
index 9bfbfd8ee7038ce35fcf525eebabd287f4207e05,ad5198d03741162872548b982f4dd368ef673af1..f1903093d6d914887c9b4db3f796ffdf6f05c4f4
@@@ -332,14 -321,11 +330,12 @@@ class OC_User 
        public static function getUsers(){
                $users=array();
                foreach(self::$_usedBackends as $backend){
-                       if($backend->implementsActions(OC_USER_BACKEND_GET_USERS)){
-                               $backendUsers=$backend->getUsers();
-                               if(is_array($backendUsers)){
-                                       $users=array_merge($users,$backendUsers);
-                               }
+                       $backendUsers=$backend->getUsers();
+                       if(is_array($backendUsers)){
+                               $users=array_merge($users,$backendUsers);
                        }
                }
 +              asort($users);
                return $users;
        }
  
Simple merge
Simple merge
diff --cc lib/util.php
Simple merge
diff --cc remote.php
Simple merge