Browse Source

Merge pull request #615 from AngelFQC/BT9433

Add fallback for array_column function - refs BT#9433
Yannick Warnier 10 years ago
parent
commit
3b92de1bb8
3 changed files with 30 additions and 4 deletions
  1. 3 3
      main/inc/ajax/model.ajax.php
  2. 26 0
      main/inc/lib/api.lib.php
  3. 1 1
      main/survey/survey.lib.php

+ 3 - 3
main/inc/ajax/model.ajax.php

@@ -198,14 +198,14 @@ switch ($action) {
                 'admin',
                 null
             );
-            $userIdList = array_column($userIdList, 'user_id');
+            $userIdList = api_array_column($userIdList, 'user_id');
             $sessionList = SessionManager::get_sessions_list();
-            $sessionIdList = array_column($sessionList, 'id');
+            $sessionIdList = api_array_column($sessionList, 'id');
 
             $courseCodeList = array();
             foreach ($sessionList as $session) {
                 $courses = SessionManager::get_course_list_by_session_id($session['id']);
-                $courseCodeList = array_merge($courseCodeList, array_column($courses, 'code'));
+                $courseCodeList = array_merge($courseCodeList, api_array_column($courses, 'code'));
             }
         }
 

+ 26 - 0
main/inc/lib/api.lib.php

@@ -8078,3 +8078,29 @@ function apiIsSystemInstalled()
     $version = $settingsRow['selected_value'];
     return array('installed' => 1, 'message' => $version);
 }
+
+/**
+ * Fallback for PHP 5.5 array_colum function.
+ * Return the values from a single column in the $input array
+ * @param array $input Array from which to pull a column of values
+ * @param string $columnName The column of values to return
+ * @return array
+ */
+function api_array_column($input, $columnName)
+{
+    if (function_exists('array_column')) {
+        return array_column($input, $columnName);
+    }
+
+    $result = array();
+
+    foreach ($input as $value) {
+        if (!array_key_exists($columnName, $value)) {
+            continue;
+        }
+
+        $result[] = $value[$columnName];
+    }
+
+    return $result;
+}

+ 1 - 1
main/survey/survey.lib.php

@@ -3405,7 +3405,7 @@ class SurveyUtil
 
         foreach ($groupList as $groupId) {
             $userGroupList = GroupManager::getStudents($groupId);
-            $userGroupIdList = array_column($userGroupList, 'user_id');
+            $userGroupIdList = api_array_column($userGroupList, 'user_id');
             $users_array = array_merge($users_array, $userGroupIdList);
 
             $params = array(