From 1b95bfdf531bcebc21db63c41394692b813cbd71 Mon Sep 17 00:00:00 2001
From: Chris Smith <chris@jalakai.co.uk>
Date: Sun, 5 Aug 2007 21:36:38 +0200
Subject: [PATCH] Add checks for supported attic compression methods to config
 plugin (FS#1185)

darcs-hash:20070805193638-d26fc-aac3910d4dea3cd5539572cce3e73366ed39ab80.gz
---
 lib/plugins/config/settings/config.class.php    |  2 +-
 lib/plugins/config/settings/config.metadata.php |  3 ++-
 lib/plugins/config/settings/extra.class.php     | 16 ++++++++++++++++
 3 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/lib/plugins/config/settings/config.class.php b/lib/plugins/config/settings/config.class.php
index 909cc01de..71e69b4c8 100644
--- a/lib/plugins/config/settings/config.class.php
+++ b/lib/plugins/config/settings/config.class.php
@@ -622,7 +622,7 @@ if (!class_exists('setting_dirchoice')) {
 
     function initialize($default,$local,$protected) {
 
-      // populate $this->_choices with a list of available templates
+      // populate $this->_choices with a list of directories
       $list = array();
 
       if ($dh = @opendir($this->_dir)) {
diff --git a/lib/plugins/config/settings/config.metadata.php b/lib/plugins/config/settings/config.metadata.php
index f8e2c35ce..3609b0cf5 100644
--- a/lib/plugins/config/settings/config.metadata.php
+++ b/lib/plugins/config/settings/config.metadata.php
@@ -35,6 +35,7 @@
  *   'authtype'    - as 'setting', input validated against a valid php file at expected location for auth files
  *   'im_convert'  - as 'setting', input must exist and be an im_convert module
  *   'disableactions' - as 'setting'
+ *   'compression' - no additional parameters. checks php installation supports possible compression alternatives
  *
  *  Any setting commented or missing will use 'setting' class - text input, minimal validation, quoted output
  *
@@ -162,7 +163,7 @@ $meta['compress']    = array('onoff');
 $meta['gzip_output'] = array('onoff');
 $meta['hidepages']   = array('string');
 $meta['send404']     = array('onoff');
-$meta['compression'] = array('multichoice','_choices' => array('0','gz','bz2'));
+$meta['compression'] = array('compression');
 $meta['sitemap']     = array('numeric');
 $meta['rss_type']    = array('multichoice','_choices' => array('rss','rss1','rss2','atom','atom1'));
 $meta['rss_linkto']  = array('multichoice','_choices' => array('diff','page','rev','current'));
diff --git a/lib/plugins/config/settings/extra.class.php b/lib/plugins/config/settings/extra.class.php
index af97d85a8..42cbe64f8 100644
--- a/lib/plugins/config/settings/extra.class.php
+++ b/lib/plugins/config/settings/extra.class.php
@@ -98,3 +98,19 @@ if (!class_exists('setting_disableactions')) {
     }
   }
 }
+
+if (!class_exists('setting_compression')) {
+  class setting_compression extends setting_multichoice {
+
+    var $_choices = array('0');      // 0 = no compression, always supported
+
+    function initialize($default,$local,$protected) {
+
+      // populate _choices with the compression methods supported by this php installation
+      if (function_exists('gzopen')) $this->_choices[] = 'gz';
+      if (function_exists('bzopen')) $this->_choices[] = 'bzip';
+
+      parent::initialize($default,$local,$protected);
+    }
+  }
+}
-- 
GitLab