summaryrefslogtreecommitdiffstats
path: root/lib/repair
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 /lib/repair
parent9fbd3fa6c14a59dc829a47cd334b9038777105b4 (diff)
downloadnextcloud-server-0bda4d54c5b77b4ea2865fbcc27f8c86d9f20513.tar.gz
nextcloud-server-0bda4d54c5b77b4ea2865fbcc27f8c86d9f20513.zip
Repair mime types only when upgrading from OC 8.0
Diffstat (limited to 'lib/repair')
-rw-r--r--lib/repair/repairmimetypes.php66
1 files changed, 43 insertions, 23 deletions
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'));
+ }
}
}
}