<?php /** * Move user fields "ruc" and "razon_social" to (social) groups (create groups) * and assign the related users to those groups. */ if (PHP_SAPI != 'cli') { die('This script can only be launched from the command line'); } require __DIR__ . '/../../main/inc/global.inc.php'; // We assume all these fields represent the same value, so they are on a 1-1 // relationship. $referenceFields = array('razon_social', 'ruc'); $tUserField = Database::get_main_table(TABLE_EXTRA_FIELD); $tUserFieldValue = Database::get_main_table(TABLE_EXTRA_FIELD_VALUES); $tUser = Database::get_main_table(TABLE_MAIN_USER); // First get the IDs of the selected fields $sql = "SELECT id, field_type, variable FROM $tUserField"; $result = Database::query($sql); $foundFields = array(); $fieldsNames = array(); while ($row = Database::fetch_assoc($result)) { if ($row['field_type'] == 1 && in_array($row['variable'], $referenceFields)) { $foundFields[$row['variable']] = array('id' => $row['id']); $fieldsNames[$row['id']] = $row['variable']; } } // Second get all the possible values of this field (in user data) $usersData = array(); foreach ($foundFields as $key => $value) { $sql = "SELECT item_id as user_id, value FROM $tUserFieldValue WHERE field_id = " . $value['id']; $result = Database::query($sql); while ($row = Database::fetch_assoc($result)) { $foundFields[$key]['options'][$row['value']][] = $row['user_id']; if (empty($usersData[$row['user_id']])) { $usersData[$row['user_id']] = ''; } if ($referenceFields[0] == $key) { $usersData[$row['user_id']] = $row['value'] . ' - ' . $usersData[$row['user_id']]; } else { $usersData[$row['user_id']] .= $row['value'] . ' - '; } } } // Clean the user string $distinctGroups = array(); foreach ($usersData as $userId => $value) { $usersData[$userId] = substr($usersData[$userId], 0, -3); $distinctGroups[$usersData[$userId]][] = $userId; } // Third, we create groups based on the combined strings by user and insert // users in them (as reader) /*foreach ($distinctGroups as $name => $usersList) { $now = api_get_utc_datetime(); $sql = "INSERT INTO $tGroup (name, visibility, updated_on, created_on) VALUES ('$name', 1, '$now', '$now')"; echo $sql . PHP_EOL; $result = Database::query($sql); $groupId = Database::insert_id(); echo $groupId . PHP_EOL; foreach ($usersList as $user) { $sql = "INSERT INTO $tGroupUser (group_id, user_id, relation_type) VALUES ($groupId, $user, 2)"; echo $sql . PHP_EOL; $result = Database::query($sql); } }*/