From 36bd93f1384ccf3f3ccd6fa884ad594d1b486367 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Fri, 07 Aug 2015 11:27:08 -0400
Subject: [PATCH] PHP7: Fixed some E_WARNING errors that previously were E_STRICT

---
 program/lib/Roundcube/rcube.php                             |    4 
 tests/Selenium/bootstrap.php                                |    2 
 tests/Framework/ResultMultifolder.php                       |   20 ++++++
 tests/Framework/DBOracle.php                                |   22 +++++++
 tests/Framework/Ldap.php                                    |   23 +++++++
 bin/deluser.sh                                              |    2 
 plugins/example_addressbook/example_addressbook_backend.php |    4 
 tests/bootstrap.php                                         |    2 
 plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php  |    4 +
 index.php                                                   |    2 
 program/lib/Roundcube/rcube_ldap_generic.php                |    8 +-
 program/lib/Roundcube/bootstrap.php                         |    3 
 program/include/rcmail.php                                  |   10 ++-
 program/lib/Roundcube/rcube_ldap.php                        |    9 ++-
 tests/Framework/ImapSearch.php                              |   20 ++++++
 tests/phpunit.xml                                           |    4 +
 program/lib/Roundcube/rcube_content_filter.php              |    2 
 17 files changed, 120 insertions(+), 21 deletions(-)

diff --git a/bin/deluser.sh b/bin/deluser.sh
index 1e93793..06505ef 100755
--- a/bin/deluser.sh
+++ b/bin/deluser.sh
@@ -37,7 +37,7 @@
     exit(1);
 }
 
-$rcmail = rcmail::get_instance();
+$rcmail = rcube::get_instance();
 
 // get arguments
 $args     = rcube_utils::get_opt(array('h' => 'host'));
diff --git a/index.php b/index.php
index c029b5a..1ebbdca 100644
--- a/index.php
+++ b/index.php
@@ -40,7 +40,7 @@
 require_once 'program/include/iniset.php';
 
 // init application, start session, init output class, etc.
-$RCMAIL = rcmail::get_instance($GLOBALS['env']);
+$RCMAIL = rcmail::get_instance(0, $GLOBALS['env']);
 
 // Make the whole PHP output non-cacheable (#1487797)
 $RCMAIL->output->nocacheing_headers();
diff --git a/plugins/example_addressbook/example_addressbook_backend.php b/plugins/example_addressbook/example_addressbook_backend.php
index 8c143c2..c965d5a 100644
--- a/plugins/example_addressbook/example_addressbook_backend.php
+++ b/plugins/example_addressbook/example_addressbook_backend.php
@@ -44,7 +44,7 @@
     $this->filter = null;
   }
 
-  function list_groups($search = null)
+  function list_groups($search = null, $mode = 0)
   {
     return array(
       array('ID' => 'testgroup1', 'name' => "Testgroup"),
@@ -98,7 +98,7 @@
     return false;
   }
 
-  function rename_group($gid, $newname)
+  function rename_group($gid, $newname, &$newid)
   {
     return $newname;
   }
diff --git a/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php b/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php
index 2779d2f..2c26de1 100644
--- a/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php
+++ b/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php
@@ -49,9 +49,11 @@
     /**
      * Find and load sieve script with/for vacation rule
      *
+     * @param string $script_name Optional script name
+     *
      * @return int Connection status: 0 on success, >0 on failure
      */
-    protected function load_script()
+    protected function load_script($script_name = null)
     {
         if ($this->script_name !== null) {
             return 0;
diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index 6a40bec..10a9d64 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -65,11 +65,12 @@
     /**
      * This implements the 'singleton' design pattern
      *
-     * @param string Environment name to run (e.g. live, dev, test)
+     * @param integer $mode Ignored rcube::get_instance() argument
+     * @param string  $env  Environment name to run (e.g. live, dev, test)
      *
      * @return rcmail The one and only instance
      */
-    static function get_instance($env = '')
+    static function get_instance($mode = 0, $env = '')
     {
         if (!self::$instance || !is_a(self::$instance, 'rcmail')) {
             self::$instance = new rcmail($env);
@@ -94,8 +95,9 @@
         }
 
         // load all configured plugins
-        $this->plugins->load_plugins((array)$this->config->get('plugins', array()),
-                                     array('filesystem_attachments', 'jqueryui'));
+        $plugins          = (array) $this->config->get('plugins', array());
+        $required_plugins = array('filesystem_attachments', 'jqueryui');
+        $this->plugins->load_plugins($plugins, $required_plugins);
 
         // start session
         $this->session_init();
diff --git a/program/lib/Roundcube/bootstrap.php b/program/lib/Roundcube/bootstrap.php
index 2e5d9e6..7acd4a4 100644
--- a/program/lib/Roundcube/bootstrap.php
+++ b/program/lib/Roundcube/bootstrap.php
@@ -25,7 +25,8 @@
  */
 
 $config = array(
-    'error_reporting'         => E_ALL & ~E_NOTICE & ~E_STRICT,
+//    'error_reporting'         => E_ALL & ~E_NOTICE & ~E_STRICT,
+    'error_reporting'         => E_STRICT,
     // Some users are not using Installer, so we'll check some
     // critical PHP settings here. Only these, which doesn't provide
     // an error/warning in the logs later. See (#1486307).
diff --git a/program/lib/Roundcube/rcube.php b/program/lib/Roundcube/rcube.php
index 7452287..d452ea8 100644
--- a/program/lib/Roundcube/rcube.php
+++ b/program/lib/Roundcube/rcube.php
@@ -124,8 +124,8 @@
     /**
      * This implements the 'singleton' design pattern
      *
-     * @param integer Options to initialize with this instance. See rcube::INIT_WITH_* constants
-     * @param string Environment name to run (e.g. live, dev, test)
+     * @param integer $mode Options to initialize with this instance. See rcube::INIT_WITH_* constants
+     * @param string  $env  Environment name to run (e.g. live, dev, test)
      *
      * @return rcube The one and only instance
      */
diff --git a/program/lib/Roundcube/rcube_content_filter.php b/program/lib/Roundcube/rcube_content_filter.php
index e0de98b..88f7806 100644
--- a/program/lib/Roundcube/rcube_content_filter.php
+++ b/program/lib/Roundcube/rcube_content_filter.php
@@ -33,7 +33,7 @@
         return true;
     }
 
-    function filter($in, $out, &$consumed)
+    function filter($in, $out, &$consumed, $closing)
     {
         while ($bucket = stream_bucket_make_writeable($in)) {
             $this->buffer .= $bucket->data;
diff --git a/program/lib/Roundcube/rcube_ldap.php b/program/lib/Roundcube/rcube_ldap.php
index e8f9a8e..f1ebea0 100644
--- a/program/lib/Roundcube/rcube_ldap.php
+++ b/program/lib/Roundcube/rcube_ldap.php
@@ -1051,11 +1051,14 @@
     /**
      * Create a new contact record
      *
-     * @param array    Hash array with save data
+     * @param array Associative array with save data
+     *  Keys:   Field name with optional section in the form FIELD:SECTION
+     *  Values: Field value. Can be either a string or an array of strings for multiple values
+     * @param boolean True to check for duplicates first
      *
-     * @return encoded record ID on success, False on error
+     * @return mixed The created record ID on success, False on error
      */
-    function insert($save_cols)
+    function insert($save_cols, $check = false)
     {
         // Map out the column names to their LDAP ones to build the new entry.
         $newentry = $this->_map_data($save_cols);
diff --git a/program/lib/Roundcube/rcube_ldap_generic.php b/program/lib/Roundcube/rcube_ldap_generic.php
index 74ac7f7..d0b3576 100644
--- a/program/lib/Roundcube/rcube_ldap_generic.php
+++ b/program/lib/Roundcube/rcube_ldap_generic.php
@@ -57,12 +57,13 @@
      * Get a specific LDAP entry, identified by its DN
      *
      * @param string $dn Record identifier
+     * @param array  $attributes Attributes to return
      *
      * @return array Hash array
      */
-    function get_entry($dn)
+    function get_entry($dn, $attributes = array())
     {
-        return parent::get_entry($dn, $this->attributes);
+        return parent::get_entry($dn, !empty($attributes) ? $attributes : $this->attributes);
     }
 
     /**
@@ -284,10 +285,11 @@
      * Turn an LDAP entry into a regular PHP array with attributes as keys.
      *
      * @param array $entry Attributes array as retrieved from ldap_get_attributes() or ldap_get_entries()
+     * @param bool  $flat  Convert one-element-array values into strings (not implemented)
      *
      * @return array Hash array with attributes as keys
      */
-    public static function normalize_entry($entry)
+    public static function normalize_entry($entry, $flat = false)
     {
         if (!isset($entry['count'])) {
             return $entry;
diff --git a/tests/Framework/DBOracle.php b/tests/Framework/DBOracle.php
new file mode 100644
index 0000000..27e138d
--- /dev/null
+++ b/tests/Framework/DBOracle.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * Test class to test rcube_db_oracle class
+ *
+ * @package Tests
+ * @group database
+ * @group oracle
+ */
+class Framework_DBOracle extends PHPUnit_Framework_TestCase
+{
+
+    /**
+     * Class constructor
+     */
+    function test_class()
+    {
+        $object = new rcube_db_oracle('test');
+
+        $this->assertInstanceOf('rcube_db_oracle', $object, "Class constructor");
+    }
+}
diff --git a/tests/Framework/ImapSearch.php b/tests/Framework/ImapSearch.php
new file mode 100644
index 0000000..f91139c
--- /dev/null
+++ b/tests/Framework/ImapSearch.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * Test class to test rcube_imap_search class
+ *
+ * @package Tests
+ */
+class Framework_ImapSearch extends PHPUnit_Framework_TestCase
+{
+
+    /**
+     * Class constructor
+     */
+    function test_class()
+    {
+        $object = new rcube_imap_search(array(), true);
+
+        $this->assertInstanceOf('rcube_imap_search', $object, "Class constructor");
+    }
+}
diff --git a/tests/Framework/Ldap.php b/tests/Framework/Ldap.php
new file mode 100644
index 0000000..8306907
--- /dev/null
+++ b/tests/Framework/Ldap.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * Test class to test rcube_ldap class
+ *
+ * @package Tests
+ */
+class Framework_Ldap extends PHPUnit_Framework_TestCase
+{
+
+    /**
+     * Class constructor
+     */
+    function test_class()
+    {
+        // skip this test as we don't want to connect to ldap here
+        $this->markTestSkipped('We do not connect to LDAP');
+
+        $object = new rcube_ldap(array());
+
+        $this->assertInstanceOf('rcube_ldap', $object, "Class constructor");
+    }
+}
diff --git a/tests/Framework/ResultMultifolder.php b/tests/Framework/ResultMultifolder.php
new file mode 100644
index 0000000..83a2b1d
--- /dev/null
+++ b/tests/Framework/ResultMultifolder.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * Test class to test rcube_result_multifolder class
+ *
+ * @package Tests
+ */
+class Framework_ResultMultifolder extends PHPUnit_Framework_TestCase
+{
+
+    /**
+     * Class constructor
+     */
+    function test_class()
+    {
+        $object = new rcube_result_multifolder;
+
+        $this->assertInstanceOf('rcube_result_multifolder', $object, "Class constructor");
+    }
+}
diff --git a/tests/Selenium/bootstrap.php b/tests/Selenium/bootstrap.php
index dc4897d..9baf0c0 100644
--- a/tests/Selenium/bootstrap.php
+++ b/tests/Selenium/bootstrap.php
@@ -38,7 +38,7 @@
     die("Fatal error: ini_set/set_include_path does not work.");
 }
 
-$rcmail = rcmail::get_instance('test');
+$rcmail = rcmail::get_instance(0, 'test');
 
 define('TESTS_URL',     $rcmail->config->get('tests_url'));
 define('TESTS_BROWSER', $rcmail->config->get('tests_browser', 'firefox'));
diff --git a/tests/bootstrap.php b/tests/bootstrap.php
index bf7199c..925cca6 100644
--- a/tests/bootstrap.php
+++ b/tests/bootstrap.php
@@ -32,7 +32,7 @@
 
 require_once(INSTALL_PATH . 'program/include/iniset.php');
 
-rcmail::get_instance('test')->config->set('devel_mode', false);
+rcmail::get_instance(0, 'test')->config->set('devel_mode', false);
 
 // Extend include path so some plugin test won't fail
 $include_path = ini_get('include_path') . PATH_SEPARATOR . TESTS_DIR . '..';
diff --git a/tests/phpunit.xml b/tests/phpunit.xml
index f5cac92..07d8d41 100644
--- a/tests/phpunit.xml
+++ b/tests/phpunit.xml
@@ -15,6 +15,7 @@
             <file>Framework/DB.php</file>
             <file>Framework/DBMssql.php</file>
             <file>Framework/DBMysql.php</file>
+            <file>Framework/DBOracle.php</file>
             <file>Framework/DBPgsql.php</file>
             <file>Framework/DBSqlite.php</file>
             <file>Framework/DBSqlsrv.php</file>
@@ -24,13 +25,16 @@
             <file>Framework/Imap.php</file>
             <file>Framework/ImapCache.php</file>
             <file>Framework/ImapGeneric.php</file>
+            <file>Framework/ImapSearch.php</file>
             <file>Framework/Image.php</file>
+            <file>Framework/Ldap.php</file>
             <file>Framework/LdapGeneric.php</file>
             <file>Framework/MessageHeader.php</file>
             <file>Framework/MessagePart.php</file>
             <file>Framework/Mime.php</file>
             <file>Framework/Rcube.php</file>
             <file>Framework/ResultIndex.php</file>
+            <file>Framework/ResultMultifolder.php</file>
             <file>Framework/ResultSet.php</file>
             <file>Framework/ResultThread.php</file>
             <file>Framework/Smtp.php</file>

--
Gitblit v1.9.1