From a3644638aaf0418598196a870204e0b632a4c8ad Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <thomas@roundcube.net>
Date: Fri, 17 Apr 2015 06:28:40 -0400
Subject: [PATCH] Allow preference sections to define CSS class names

---
 program/include/rcmail_install.php |   46 +++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 39 insertions(+), 7 deletions(-)

diff --git a/program/include/rcmail_install.php b/program/include/rcmail_install.php
index 7877b8e..e161779 100644
--- a/program/include/rcmail_install.php
+++ b/program/include/rcmail_install.php
@@ -234,6 +234,13 @@
       else if (is_numeric($value)) {
         $value = intval($value);
       }
+      else if ($prop == 'plugins' && !empty($_POST['submit'])) {
+        $value = array();
+        foreach (array_keys($_POST) as $key) {
+          if (preg_match('/^_plugins_*/', $key))
+            array_push($value, $_POST[$key]);
+        }
+      }
 
       // skip this property
       if (($value == $this->defaults[$prop]) && !in_array($prop, $this->local_config)
@@ -290,7 +297,7 @@
     $out = $seen = array();
 
     // iterate over the current configuration
-    foreach ($this->config as $prop => $value) {
+    foreach (array_keys($this->config) as $prop) {
       if ($replacement = $this->replaced_config[$prop]) {
         $out['replaced'][] = array('prop' => $prop, 'replacement' => $replacement);
         $seen[$replacement] = true;
@@ -559,6 +566,35 @@
   }
 
   /**
+  * Return a list with available subfolders of the plugins directory
+  * (with their associated description in composer.json)
+  */
+  function list_plugins() 
+  {
+    $plugins = array();
+    $plugin_dir = INSTALL_PATH . 'plugins/';
+
+    foreach (glob($plugin_dir . '*') as $path) 
+    {
+
+      if (is_dir($path) && is_readable($path.'/composer.json'))
+      {
+        $file_json = json_decode(file_get_contents($path.'/composer.json'));
+        $plugin_desc = $file_json->description ?: 'N/A';
+      }
+      else
+      {
+        $plugin_desc = 'N/A';
+      }
+
+      $name = substr($path, strlen($plugin_dir));
+      $plugins[] = array('name' => $name, 'desc' => $plugin_desc, 'enabled' => in_array($name, $this->config['plugins']));
+    }
+
+    return $plugins;
+  }
+
+  /**
    * Display OK status
    *
    * @param string Test name
@@ -737,12 +773,8 @@
    */
   function update_db($version)
   {
-    system(INSTALL_PATH . "bin/updatedb.sh --package=roundcube"
-      . " --version=" . escapeshellarg($version)
-      . " --dir=" . INSTALL_PATH . "SQL"
-      . " 2>&1", $result);
-
-    return !$result;
+    return rcmail_utils::db_update(INSTALL_PATH . 'SQL', 'roundcube', $version,
+        array('quiet' => true));
   }
 
 

--
Gitblit v1.9.1