Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
chamilo-lms/tests/scripts/userfields_to_groups.php

70 lines
2.6 KiB

<?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);
}
}*/