Merge pull request #8852 from bsilvern/CRM-19201
[civicrm-core.git] / Civi / Install / Requirements.php
index 2fcddf14bbcd3a8d9975d3b13f4ac03305e6944c..16fe39bb6b1adb5205a0699e48322091a6ca0b0d 100644 (file)
@@ -49,7 +49,8 @@ class Requirements {
    *     - file_paths
    *     - db_config
    *
-   * @return array An array of check summaries. Each array contains the keys 'title', 'severity', and 'details'.
+   * @return array
+   *   An array of check summaries. Each array contains the keys 'title', 'severity', and 'details'.
    */
   public function checkAll(array $config) {
     return array_merge($this->checkSystem($config['file_paths']), $this->checkDatabase($config['db_config']));
@@ -84,7 +85,7 @@ class Requirements {
    * @param array $db_config
    *   An array with keys:
    *   - host (with optional port specified eg. localhost:12345)
-   *   = database (name of database to select)
+   *   - database (name of database to select)
    *   - username
    *   - password
    *
@@ -101,7 +102,7 @@ class Requirements {
   }
 
   /**
-   * Check configured php Memory
+   * Check configured php Memory.
    * @return array
    */
   public function checkMemory() {
@@ -120,10 +121,10 @@ class Requirements {
     if ($mem < $min && $mem > 0) {
       $results['severity'] = $this::REQUIREMENT_ERROR;
     }
-    else if ($mem < $recommended && $mem != 0) {
+    elseif ($mem < $recommended && $mem != 0) {
       $results['severity'] = $this::REQUIREMENT_WARNING;
     }
-    else if ($mem == 0) {
+    elseif ($mem == 0) {
       $results['details'] = "Cannot determine PHP memory allocation. Install only if you're sure you've allocated at least 32 MB.";
       $results['severity'] = $this::REQUIREMENT_WARNING;
     }
@@ -132,7 +133,7 @@ class Requirements {
   }
 
   /**
-   * Get Configured PHP memory
+   * Get Configured PHP memory.
    * @return float
    */
   protected function getPHPMemory() {
@@ -141,10 +142,13 @@ class Requirements {
     switch (strtolower(substr($memString, -1))) {
       case "k":
         return round(substr($memString, 0, -1) * 1024);
+
       case "m":
         return round(substr($memString, 0, -1) * 1024 * 1024);
+
       case "g":
         return round(substr($memString, 0, -1) * 1024 * 1024 * 1024);
+
       default:
         return round($memString);
     }
@@ -153,7 +157,7 @@ class Requirements {
   /**
    * @return array
    */
-  function checkServerVariables() {
+  public function checkServerVariables() {
     $results = array(
       'title' => 'CiviCRM PHP server variables',
       'severity' => $this::REQUIREMENT_OK,
@@ -201,11 +205,11 @@ class Requirements {
     $results = array(
       'title' => 'CiviCRM MySQL check',
       'severity' => $this::REQUIREMENT_OK,
-      'details' => 'Function mysql_connect() found',
+      'details' => 'Function mysqli_connect() found',
     );
-    if (!function_exists('mysql_connect')) {
+    if (!function_exists('mysqli_connect')) {
       $results['severity'] = $this::REQUIREMENT_ERROR;
-      $results['details'] = 'Function mysql_connect() does not exist';
+      $results['details'] = 'Function mysqli_connect() does not exist';
     }
 
     return $results;
@@ -223,16 +227,16 @@ class Requirements {
       'details' => "Connected",
     );
 
-    $conn = @mysql_connect($db_config['host'], $db_config['username'], $db_config['password']);
+    $conn = @mysqli_connect($db_config['host'], $db_config['username'], $db_config['password']);
 
     if (!$conn) {
-      $results['details'] = mysql_error();
+      $results['details'] = mysqli_connect_error();
       $results['severity'] = $this::REQUIREMENT_ERROR;
       return $results;
     }
 
-    if (!@mysql_select_db($db_config['database'], $conn)) {
-      $results['details'] = mysql_error();
+    if (!@mysqli_select_db($conn, $db_config['database'])) {
+      $results['details'] = mysqli_error($conn);
       $results['severity'] = $this::REQUIREMENT_ERROR;
       return $results;
     }
@@ -252,8 +256,8 @@ class Requirements {
       'severity' => $this::REQUIREMENT_OK,
     );
 
-    $conn = @mysql_connect($db_config['host'], $db_config['username'], $db_config['password']);
-    if (!$conn || !($info = mysql_get_server_info($conn))) {
+    $conn = @mysqli_connect($db_config['host'], $db_config['username'], $db_config['password']);
+    if (!$conn || !($info = mysqli_get_server_info($conn))) {
       $results['severity'] = $this::REQUIREMENT_WARNING;
       $results['details'] = "Cannot determine the version of MySQL installed. Please ensure at least version {$min} is installed.";
       return $results;
@@ -278,17 +282,17 @@ class Requirements {
     $results = array(
       'title' => 'CiviCRM InnoDB support',
       'severity' => $this::REQUIREMENT_ERROR,
-      'details' => 'Could not determine if MySQL has InnoDB support. Assuming none.'
+      'details' => 'Could not determine if MySQL has InnoDB support. Assuming none.',
     );
 
-    $conn = @mysql_connect($db_config['host'], $db_config['username'], $db_config['password']);
+    $conn = @mysqli_connect($db_config['host'], $db_config['username'], $db_config['password']);
     if (!$conn) {
       return $results;
     }
 
     $innodb_support = FALSE;
-    $result = mysql_query("SHOW ENGINES", $conn);
-    while ($values = mysql_fetch_array($result)) {
+    $result = mysqli_query($conn, "SHOW ENGINES");
+    while ($values = mysqli_fetch_array($result)) {
       if ($values['Engine'] == 'InnoDB') {
         if (strtolower($values['Support']) == 'yes' || strtolower($values['Support']) == 'default') {
           $innodb_support = TRUE;
@@ -316,27 +320,27 @@ class Requirements {
       'details' => 'MySQL server supports temporary tables',
     );
 
-    $conn = @mysql_connect($db_config['host'], $db_config['username'], $db_config['password']);
+    $conn = @mysqli_connect($db_config['host'], $db_config['username'], $db_config['password']);
     if (!$conn) {
       $results['severity'] = $this::REQUIREMENT_ERROR;
       $results['details'] = "Could not connect to database";
       return $results;
     }
 
-    if (!@mysql_select_db($db_config['database'], $conn)) {
+    if (!@mysqli_select_db($conn, $db_config['database'])) {
       $results['severity'] = $this::REQUIREMENT_ERROR;
       $results['details'] = "Could not select the database";
       return $results;
     }
 
-    $r = mysql_query('CREATE TEMPORARY TABLE civicrm_install_temp_table_test (test text)', $conn);
+    $r = mysqli_query($conn, 'CREATE TEMPORARY TABLE civicrm_install_temp_table_test (test text)');
     if (!$r) {
       $results['severity'] = $this::REQUIREMENT_ERROR;
       $results['details'] = "Database does not support creation of temporary tables";
       return $results;
     }
 
-    mysql_query('DROP TEMPORARY TABLE civicrm_install_temp_table_test');
+    mysqli_query($conn, 'DROP TEMPORARY TABLE civicrm_install_temp_table_test');
     return $results;
   }
 
@@ -352,36 +356,36 @@ class Requirements {
       'details' => 'Database supports MySQL triggers',
     );
 
-    $conn = @mysql_connect($db_config['host'], $db_config['username'], $db_config['password']);
+    $conn = @mysqli_connect($db_config['host'], $db_config['username'], $db_config['password']);
     if (!$conn) {
       $results['severity'] = $this::REQUIREMENT_ERROR;
       $results['details'] = 'Could not connect to database';
       return $results;
     }
 
-    if (!@mysql_select_db($db_config['database'], $conn)) {
+    if (!@mysqli_select_db($conn, $db_config['database'])) {
       $results['severity'] = $this::REQUIREMENT_ERROR;
       $results['details'] = "Could not select the database";
       return $results;
     }
 
-    $r = mysql_query('CREATE TABLE civicrm_install_temp_table_test (test text)', $conn);
+    $r = mysqli_query($conn, 'CREATE TABLE civicrm_install_temp_table_test (test text)');
     if (!$r) {
       $results['severity'] = $this::REQUIREMENT_ERROR;
       $results['details'] = 'Could not create a table to run test';
       return $results;
     }
 
-    $r = mysql_query('CREATE TRIGGER civicrm_install_temp_table_test_trigger BEFORE INSERT ON civicrm_install_temp_table_test FOR EACH ROW BEGIN END');
+    $r = mysqli_query($conn, 'CREATE TRIGGER civicrm_install_temp_table_test_trigger BEFORE INSERT ON civicrm_install_temp_table_test FOR EACH ROW BEGIN END');
     if (!$r) {
       $results['severity'] = $this::REQUIREMENT_ERROR;
       $results['details'] = 'Database does not support creation of triggers';
     }
     else {
-      mysql_query('DROP TRIGGER civicrm_install_temp_table_test_trigger');
+      mysqli_query($conn, 'DROP TRIGGER civicrm_install_temp_table_test_trigger');
     }
 
-    mysql_query('DROP TABLE civicrm_install_temp_table_test');
+    mysqli_query($conn, 'DROP TABLE civicrm_install_temp_table_test');
     return $results;
   }
 
@@ -397,21 +401,21 @@ class Requirements {
       'details' => 'MySQL server auto_increment_increment is 1',
     );
 
-    $conn = @mysql_connect($db_config['host'], $db_config['username'], $db_config['password']);
+    $conn = @mysqli_connect($db_config['host'], $db_config['username'], $db_config['password']);
     if (!$conn) {
       $results['severity'] = $this::REQUIREMENT_ERROR;
       $results['details'] = 'Could not connect to database';
       return $results;
     }
 
-    $r = mysql_query("SHOW variables like 'auto_increment_increment'", $conn);
+    $r = mysqli_query($conn, "SHOW variables like 'auto_increment_increment'");
     if (!$r) {
       $results['severity'] = $this::REQUIREMENT_ERROR;
       $results['details'] = 'Could not query database server variables';
       return $results;
     }
 
-    $values = mysql_fetch_row($r);
+    $values = mysqli_fetch_row($r);
     if ($values[1] != 1) {
       $results['severity'] = $this::REQUIREMENT_ERROR;
       $results['details'] = 'MySQL server auto_increment_increment is not 1';
@@ -433,26 +437,26 @@ class Requirements {
       'details' => 'MySQL thread_stack is OK',
     );
 
-    $conn = @mysql_connect($db_config['server'], $db_config['username'], $db_config['password']);
+    $conn = @mysqli_connect($db_config['server'], $db_config['username'], $db_config['password']);
     if (!$conn) {
       $results['severity'] = $this::REQUIREMENT_ERROR;
       $results['details'] = 'Could not connect to database';
       return $results;
     }
 
-    if (!@mysql_select_db($db_config['database'], $conn)) {
+    if (!@mysqli_select_db($conn, $db_config['database'])) {
       $results['severity'] = $this::REQUIREMENT_ERROR;
       $results['details'] = 'Could not select the database';
       return $results;
     }
 
-    $r = mysql_query("SHOW VARIABLES LIKE 'thread_stack'", $conn); // bytes => kb
+    $r = mysqli_query($conn, "SHOW VARIABLES LIKE 'thread_stack'"); // bytes => kb
     if (!$r) {
       $results['severity'] = $this::REQUIREMENT_ERROR;
       $results['details'] = 'Could not query thread_stack value';
     }
     else {
-      $values = mysql_fetch_row($r);
+      $values = mysqli_fetch_row($r);
       if ($values[1] < (1024 * $min_thread_stack)) {
         $results['severity'] = $this::REQUIREMENT_ERROR;
         $results['details'] = 'MySQL thread_stack is ' . ($values[1] / 1024) . "kb (minimum required is {$min_thread_stack} kb";
@@ -467,50 +471,50 @@ class Requirements {
    *
    * @return array
    */
-  function checkMysqlLockTables($db_config) {
+  public function checkMysqlLockTables($db_config) {
     $results = array(
       'title' => 'CiviCRM MySQL Lock Tables',
       'severity' => $this::REQUIREMENT_OK,
       'details' => 'Can successfully lock and unlock tables',
     );
 
-    $conn = @mysql_connect($db_config['server'], $db_config['username'], $db_config['password']);
+    $conn = @mysqli_connect($db_config['server'], $db_config['username'], $db_config['password']);
     if (!$conn) {
       $results['severity'] = $this::REQUIREMENT_ERROR;
-      $results['details'] =  'Could not connect to database';
+      $results['details'] = 'Could not connect to database';
       return $results;
     }
 
-    if (!@mysql_select_db($db_config['database'], $conn)) {
+    if (!@mysqli_select_db($conn, $db_config['database'])) {
       $results['severity'] = $this::REQUIREMENT_ERROR;
       $results['details'] = 'Could not select the database';
-      mysql_close($conn);
+      mysqli_close($conn);
       return $results;
     }
 
-    $r = mysql_query('CREATE TEMPORARY TABLE civicrm_install_temp_table_test (test text)', $conn);
+    $r = mysqli_query($conn, 'CREATE TEMPORARY TABLE civicrm_install_temp_table_test (test text)');
     if (!$r) {
       $results['severity'] = $this::REQUIREMENT_ERROR;
       $results['details'] = 'Could not create a table';
-      mysql_close($conn);
+      mysqli_close($conn);
       return $results;
     }
 
-    $r = mysql_query('LOCK TABLES civicrm_install_temp_table_test WRITE', $conn);
+    $r = mysqli_query($conn, 'LOCK TABLES civicrm_install_temp_table_test WRITE');
     if (!$r) {
       $results['severity'] = $this::REQUIREMENT_ERROR;
       $results['details'] = 'Could not obtain a write lock';
-      mysql_close($conn);
+      mysqli_close($conn);
       return $results;
     }
 
-    $r = mysql_query('UNLOCK TABLES', $conn);
+    $r = mysqli_query($conn, 'UNLOCK TABLES');
     if (!$r) {
       $results['severity'] = $this::REQUIREMENT_ERROR;
       $results['details'] = 'Could not release table lock';
     }
 
-    mysql_close($conn);
+    mysqli_close($conn);
     return $results;
   }
 
@@ -540,4 +544,5 @@ class Requirements {
 
     return $results;
   }
+
 }