summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2015-08-25 14:09:38 +0200
committerVincent Petry <pvince81@owncloud.com>2015-09-23 10:51:37 +0200
commit0bda4d54c5b77b4ea2865fbcc27f8c86d9f20513 (patch)
tree60aa5b31a7fc8127423118b3a6c6ae825606ba50
parent9fbd3fa6c14a59dc829a47cd334b9038777105b4 (diff)
downloadnextcloud-server-0bda4d54c5b77b4ea2865fbcc27f8c86d9f20513.tar.gz
nextcloud-server-0bda4d54c5b77b4ea2865fbcc27f8c86d9f20513.zip
Repair mime types only when upgrading from OC 8.0
-rw-r--r--lib/private/repair.php2
-rw-r--r--lib/repair/repairmimetypes.php66
-rw-r--r--tests/lib/repair/repairmimetypes.php11
3 files changed, 54 insertions, 25 deletions
diff --git a/lib/private/repair.php b/lib/private/repair.php
index 533bf05b54c..3639440a518 100644
--- a/lib/private/repair.php
+++ b/lib/private/repair.php
@@ -103,7 +103,7 @@ class Repair extends BasicEmitter {
*/
public static function getRepairSteps() {
return [
- new RepairMimeTypes(),
+ new RepairMimeTypes(\OC::$server->getConfig()),
new RepairLegacyStorages(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()),
new RepairConfig(),
new AssetCache(),
diff --git a/lib/repair/repairmimetypes.php b/lib/repair/repairmimetypes.php
index 89ad0ed16c7..db11f526ad6 100644
--- a/lib/repair/repairmimetypes.php
+++ b/lib/repair/repairmimetypes.php
@@ -29,6 +29,17 @@ namespace OC\Repair;
use OC\Hooks\BasicEmitter;
class RepairMimeTypes extends BasicEmitter implements \OC\RepairStep {
+ /**
+ * @var \OCP\IConfig
+ */
+ protected $config;
+
+ /**
+ * @param \OCP\IConfig $config
+ */
+ public function __construct($config) {
+ $this->config = $config;
+ }
public function getName() {
return 'Repair mime types';
@@ -243,36 +254,45 @@ class RepairMimeTypes extends BasicEmitter implements \OC\RepairStep {
* Fix mime types
*/
public function run() {
- if ($this->fixOfficeMimeTypes()) {
- $this->emit('\OC\Repair', 'info', array('Fixed office mime types'));
- }
- if ($this->fixApkMimeType()) {
- $this->emit('\OC\Repair', 'info', array('Fixed APK mime type'));
- }
+ $ocVersionFromBeforeUpdate = $this->config->getSystemValue('version', '0.0.0');
- if ($this->fixFontsMimeTypes()) {
- $this->emit('\OC\Repair', 'info', array('Fixed fonts mime types'));
- }
+ // NOTE TO DEVELOPERS: when adding new mime types, please make sure to
+ // add a version comparison to avoid doing it every time
- if ($this->fixPostscriptMimeType()) {
- $this->emit('\OC\Repair', 'info', array('Fixed Postscript mime types'));
- }
+ // only update mime types if necessary as it can be expensive
+ if (version_compare($ocVersionFromBeforeUpdate, '8.2.0', '<')) {
+ if ($this->fixOfficeMimeTypes()) {
+ $this->emit('\OC\Repair', 'info', array('Fixed office mime types'));
+ }
- if ($this->introduceRawMimeType()) {
- $this->emit('\OC\Repair', 'info', array('Fixed Raw mime types'));
- }
+ if ($this->fixApkMimeType()) {
+ $this->emit('\OC\Repair', 'info', array('Fixed APK mime type'));
+ }
- if ($this->introduce3dImagesMimeType()) {
- $this->emit('\OC\Repair', 'info', array('Fixed 3D images mime types'));
- }
+ if ($this->fixFontsMimeTypes()) {
+ $this->emit('\OC\Repair', 'info', array('Fixed fonts mime types'));
+ }
- if ($this->introduceConfMimeType()) {
- $this->emit('\OC\Repair', 'info', array('Fixed Conf/cnf mime types'));
- }
+ if ($this->fixPostscriptMimeType()) {
+ $this->emit('\OC\Repair', 'info', array('Fixed Postscript mime types'));
+ }
+
+ if ($this->introduceRawMimeType()) {
+ $this->emit('\OC\Repair', 'info', array('Fixed Raw mime types'));
+ }
+
+ if ($this->introduce3dImagesMimeType()) {
+ $this->emit('\OC\Repair', 'info', array('Fixed 3D images mime types'));
+ }
- if ($this->introduceYamlMimeType()) {
- $this->emit('\OC\Repair', 'info', array('Fixed Yaml/Yml mime types'));
+ if ($this->introduceConfMimeType()) {
+ $this->emit('\OC\Repair', 'info', array('Fixed Conf/cnf mime types'));
+ }
+
+ if ($this->introduceYamlMimeType()) {
+ $this->emit('\OC\Repair', 'info', array('Fixed Yaml/Yml mime types'));
+ }
}
}
}
diff --git a/tests/lib/repair/repairmimetypes.php b/tests/lib/repair/repairmimetypes.php
index da36e7de58a..3c100b808cf 100644
--- a/tests/lib/repair/repairmimetypes.php
+++ b/tests/lib/repair/repairmimetypes.php
@@ -26,8 +26,17 @@ class RepairMimeTypes extends \Test\TestCase {
$this->savedMimetypeLoader = \OC::$server->getMimeTypeLoader();
$this->mimetypeLoader = \OC::$server->getMimeTypeLoader();
+ $config = $this->getMockBuilder('OCP\IConfig')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $config->expects($this->any())
+ ->method('getSystemValue')
+ ->with('version')
+ ->will($this->returnValue('8.0.0.0'));
+
$this->storage = new \OC\Files\Storage\Temporary([]);
- $this->repair = new \OC\Repair\RepairMimeTypes();
+
+ $this->repair = new \OC\Repair\RepairMimeTypes($config);
}
protected function tearDown() {