Parcourir la source

Fix extrafield of type tag when save a user info #1941

Angel Fernando Quiroz Campos il y a 7 ans
Parent
commit
d6384115de

+ 14 - 6
main/inc/ajax/user_manager.ajax.php

@@ -90,13 +90,22 @@ switch ($action) {
         }
         break;
     case 'search_tags':
+        header('Content-Type: application/json');
+
+        $result = ['items' => []];
+
         if (api_is_anonymous()) {
-            echo '';
-        } else {
-            if (isset($_GET['tag']) && isset($_GET['field_id'])) {
-                echo UserManager::get_tags($_GET['tag'], $_GET['field_id'], 'json', '10');
-            }
+            echo json_encode($result);
+            break;
         }
+
+        if (!isset($_GET['q'], $_GET['field_id'])) {
+            echo json_encode($result);
+            break;
+        }
+
+        $result['items'] = UserManager::get_tags($_GET['q'], $_GET['field_id'], null, '10');
+        echo json_encode($result);
         break;
     case 'generate_api_key':
         if (api_is_anonymous()) {
@@ -174,4 +183,3 @@ switch ($action) {
         echo '';
 }
 exit;
-

+ 1 - 1
main/inc/lib/extra_field_value.lib.php

@@ -106,7 +106,7 @@ class ExtraFieldValue extends Model
 
         // Parse params.
         foreach ($extraFields as $fieldDetails) {
-            if ($fieldDetails['visible_to_self'] != 1) {
+            if ($fieldDetails['visible_to_self'] != 1 && !api_is_platform_admin(true, true)) {
                 continue;
             }
 

+ 5 - 4
main/inc/lib/usermanager.lib.php

@@ -389,10 +389,11 @@ class UserManager
                 UrlManager::add_user_to_url($userId, 1);
             }
 
+            $extra['item_id'] = $userId;
+
             if (is_array($extra) && count($extra) > 0) {
-                foreach ($extra as $fname => $fvalue) {
-                    self::update_extra_field_value($userId, $fname, $fvalue);
-                }
+                $courseFieldValue = new ExtraFieldValue('user');
+                $courseFieldValue->saveFieldValues($extra);
             } else {
                 // Create notify settings by default
                 self::update_extra_field_value($userId, 'mail_notify_invitation', '1');
@@ -3475,7 +3476,7 @@ class UserManager
         $return = array();
         if (Database::num_rows($result) > 0) {
             while ($row = Database::fetch_array($result, 'ASSOC')) {
-                $return[] = array('key' => $row['tag'], 'value' => $row['tag']);
+                $return[] = array('id' => $row['tag'], 'text' => $row['tag']);
             }
         }
         if ($return_format === 'json') {