Adding intidsede in webservices see BT#4882

skala
Julio Montoya 13 years ago
parent 527cdd3be5
commit e98ba67a48
  1. 6
      tests/migrate/migrate.php
  2. 73
      tests/migrate/migration.class.php
  3. 127
      tests/migrate/migration.custom.class.php

@ -71,12 +71,12 @@ if (!empty($servers)) {
$m->set_web_service_connection_info($matches);
//This functions truncates the transaction lists!
//$m->test_transactions();
$m->insert_test_transactions();
//$m->search_transactions();
//$m->get_transactions_from_webservice();
//Load transactions saved before
$m->load_transactions();
$m->execute_transactions();
} else {
error_log('Make sure you define the web_service_calls array in your db_matches.php file');
}

@ -177,7 +177,7 @@ class Migration {
/**
* Call the SOAP web service as detailed in the parameters
* @param array Settings for the WS call
* @param string Name of the funcion to call
* @param string Name of the function to call
* @param array Variables to be passed as params to the function
* @return array Results as returned by the SOAP call
*/
@ -231,8 +231,8 @@ class Migration {
* @param bool Whether to truncate the transaction table before the test or not
* @return void
*/
function test_transactions($truncate = false) {
error_log('test_transactions');
function insert_test_transactions($truncate = false) {
error_log('insert_test_transactions');
//Just for tests
//Cleaning transaction table
@ -244,6 +244,7 @@ class Migration {
array(
//'action' => 'usuario_agregar',
'action' => 1,
'transaction_id' => 1000,
'item_id' => 'D236776B-D7A5-47FF-8328-55EBE9A59015',
'orig_id' => null,
'branch_id' => 1,
@ -252,6 +253,7 @@ class Migration {
),
array(
//'action' => 'usuario_editar',
'transaction_id' => 1001,
'action' => 3,
'item_id' => 'D236776B-D7A5-47FF-8328-55EBE9A59015',
'orig_id' => '0',
@ -260,6 +262,7 @@ class Migration {
'status_id' => 0
),
array(
'transaction_id' => 1002,
//'action' => 'usuario_eliminar',
'action' => 2,
'item_id' => 'D236776B-D7A5-47FF-8328-55EBE9A59015',
@ -269,6 +272,7 @@ class Migration {
'status_id' => 0
),
array(
'transaction_id' => 1003,
//'action' => 'usuario_matricula',
'action' => 4,
'item_id' => '95EDA88F-D729-450F-95FF-4A3989244F53', //usuario - Abel
@ -278,6 +282,7 @@ class Migration {
'status_id' => 0
),
array(
'transaction_id' => 1004,
//'action' => 'curso_agregar',
'action' => 5,
'item_id' => 'E2334974-9D55-4BB4-8B57-FCEFBE2510DC',
@ -287,6 +292,7 @@ class Migration {
'status_id' => 0
),
array(
'transaction_id' => 1005,
//'action' => 'curso_eliminar',
'action' => 6,
'item_id' => 'E2334974-9D55-4BB4-8B57-FCEFBE2510DC',
@ -296,6 +302,7 @@ class Migration {
'status_id' => 0
),
array(
'transaction_id' => 1006,
//'action' => 'curso_editar',
'action' => 7,
'item_id' => '31B4BD38-5D90-4275-88AF-F01F0274800A', // ONE (SATURDAYS)
@ -315,6 +322,7 @@ class Migration {
*/
array(
//'action' => 'pa_agregar',
'transaction_id' => 1007,
'action' => 8,
'item_id' => 'C3671999-095E-4018-9826-678BAFF595DF',
'orig_id' => null,
@ -324,6 +332,7 @@ class Migration {
),
array(
//'action' => 'pa_editar',
'transaction_id' => 1008,
'action' => 10,
'item_id' => 'C3671999-095E-4018-9826-678BAFF595DF',
'orig_id' => '0',
@ -333,6 +342,7 @@ class Migration {
),
array(
//'action' => 'pa_eliminar',
'transaction_id' => 1009,
'action' => 9,
'item_id' => 'C3671999-095E-4018-9826-678BAFF595DF', //id to delete
'orig_id' => null,
@ -352,6 +362,7 @@ class Migration {
'status_id' => 0
),*/
array(
'transaction_id' => 1010,
//'action' => 'pa_cambiar_horario',
'action' => 12,
'item_id' => 'B94FEBA2-7EAD-4E14-B3DA-1D02397D1FA1', //session id - 200910 (A02M) Advanced Oral Communication Skills 2 08:45 10:15 701 00003
@ -388,6 +399,7 @@ class Migration {
*/
array(
//'action' => 'horario_agregar',
'transaction_id' => 1010,
'action' => 13,
'item_id' => 'E395895A-B480-456F-87F2-36B3A1EBB81C', // horario
'orig_id' => '0',
@ -396,6 +408,7 @@ class Migration {
'status_id' => 0
),
array(
'transaction_id' => 1011,
//'action' => 'horario_editar',
'action' => 15,
'item_id' => 'E395895A-B480-456F-87F2-36B3A1EBB81C',
@ -406,6 +419,7 @@ class Migration {
),
array(
//'action' => 'horario_eliminar',
'transaction_id' => 1012,
'action' => 14,
'item_id' => 'E395895A-B480-456F-87F2-36B3A1EBB81C',
'orig_id' => '0',
@ -444,6 +458,7 @@ class Migration {
* */
array(
//'action' => 'sede_agregar',
'transaction_id' => 1013,
'action' => 19,
'item_id' => '7379A7D3-6DC5-42CA-9ED4-97367519F1D9',
'orig_id' => '0',
@ -453,6 +468,7 @@ class Migration {
),
array(
//'action' => 'sede_editar',
'transaction_id' => 1014,
'action' => 21,
'item_id' => '7379A7D3-6DC5-42CA-9ED4-97367519F1D9',
'orig_id' => '0',
@ -462,6 +478,7 @@ class Migration {
),
array(
//'action' => 'sede_eliminar',
'transaction_id' => 1015,
'action' => 20,
'item_id' => '7379A7D3-6DC5-42CA-9ED4-97367519F1D9',
'orig_id' => '0',
@ -471,6 +488,7 @@ class Migration {
),
array(
//'action' => 'frecuencia_agregar',
'transaction_id' => 1016,
'action' => 22,
'item_id' => '0091CD3B-F042-11D7-B338-0050DAB14015',
'orig_id' => '0',
@ -480,6 +498,7 @@ class Migration {
),
array(
//'action' => 'frecuencia_editar',
'transaction_id' => 1017,
'action' => 24,
'item_id' => '0091CD3B-F042-11D7-B338-0050DAB14015',
'orig_id' => '0',
@ -489,6 +508,7 @@ class Migration {
),
array(
//'action' => 'frecuencia_eliminar',
'transaction_id' => 1018,
'action' => 23,
'item_id' => '0091CD3B-F042-11D7-B338-0050DAB14015',
'orig_id' => '0',
@ -498,6 +518,7 @@ class Migration {
),
array(
//'action' => 'intensidad_agregar',
'transaction_id' => 1019,
'action' => 25,
'item_id' => '0091CD3C-F042-11D7-B338-0050DAB14015',
'orig_id' => '0',
@ -507,6 +528,7 @@ class Migration {
),
array(
//'action' => 'intensidad_editar',
'transaction_id' => 1020,
'action' => 27,
'item_id' => '0091CD3C-F042-11D7-B338-0050DAB14015',
'orig_id' => '0',
@ -516,6 +538,7 @@ class Migration {
),
array(
//'action' => 'intensidad_eliminar',
'transaction_id' => 1021,
'action' => 26,
'item_id' => '0091CD3C-F042-11D7-B338-0050DAB14015',
'orig_id' => '0',
@ -525,7 +548,11 @@ class Migration {
),
);
foreach( $transaction_harcoded as $transaction) {
foreach( $transaction_harcoded as $transaction) {
$transaction['branch_id'] = 2;
if ($transaction['action'] != 8) {
continue;
}
self::add_transaction($transaction);
}
}
@ -536,7 +563,7 @@ class Migration {
* @return int The ID of the transaction row in Chamilo's table
*/
static function add_transaction($params) {
error_log('Requested add_transaction of : '.print_r($params,1));
//error_log('Requested add_transaction of : '.print_r($params,1));
$table = Database::get_main_table(TABLE_MIGRATION_TRANSACTION);
if (isset($params['id'])) {
unset($params['id']);
@ -611,8 +638,7 @@ class Migration {
$sql = "DELETE FROM $table WHERE transaction_id = $transaction_id AND branch_id = $branch_id";
Database::query($sql);
}
}
}
/**
* Gets the latest completed transaction for a specific branch (allows the building of a request to the branch to get new transactions)
@ -694,8 +720,8 @@ class Migration {
* If none provided, fetches the latest transaction available and add + 1
* @return The operation results
*/
function search_transactions($params = array()) {
error_log("search_transactions() function called \n");
function get_transactions_from_webservice($params = array()) {
error_log("get_transactions_from_webservice() function called \n");
$branch_id = isset($params['branch_id']) ? $params['branch_id'] : null;
$transaction_id = isset($params['transaction_id']) ? $params['transaction_id'] : null;
@ -725,8 +751,7 @@ class Migration {
error_log(count($branches)." branches found \n");
if (!empty($branches)) {
foreach ($branches as $branch) {
foreach ($branches as $branch) {
if (!empty($branch_id) && !empty($transaction_id)) {
$last_transaction_id = $transaction_id;
} else {
@ -738,8 +763,7 @@ class Migration {
'ultimo' => $last_transaction_id,
'cantidad' => isset($number_of_transactions) && !empty($number_of_transactions) ? $number_of_transactions : 2,
'intIdSede' => $branch['branch_id'],
);
);
error_log("Branch #".$branch['branch_id']." - treating $number_of_transactions transaction(s) starting with transaction #$last_transaction_id \n");
MigrationCustom::process_transactions($params, $web_service_params);
}
@ -752,7 +776,7 @@ class Migration {
* @param int Optional limit of transactions to execute
* @return void
*/
function load_transactions($params = array()) {
function execute_transactions($params = array()) {
error_log("load_transactions() function called \n");
$branch_id = isset($params['branch_id']) ? $params['branch_id'] : null;
//$transaction_id = isset($params['transaction_id']) ? $params['transaction_id'] : null;
@ -767,7 +791,7 @@ class Migration {
if (!empty($branches)) {
error_log(count($branches)." branches found \n");
error_log(count($branches)." branch(es) found \n");
foreach ($branches as $branch_info) {
//Get uncompleted transactions
@ -783,12 +807,11 @@ class Migration {
}
$count = count($transactions);
error_log("Treating $count transaction(s) starting with transaction #$latest_id_attempt for branch ".$branch_info['branch_id']."\n");
$item = 1;//counter
if (!empty($transactions)) {
error_log("\n$count Transactions found");
if (!empty($transactions)) {
error_log("Branch #".$branch_info['branch_id']." called, $count transaction(s) found starting with transaction #$latest_id_attempt \n");
//Looping transactions
if (!empty($transactions)) {
@ -815,7 +838,7 @@ class Migration {
}
}
} else {
error_log('No transactions to load');
error_log("Branch #".$branch_info['branch_id']." - No transactions to load");
}
}
} else {
@ -845,11 +868,11 @@ class Migration {
$function_to_call = "transaction_" . $transaction_info['action'];
if (method_exists('MigrationCustom', $function_to_call)) {
error_log("\nCalling function MigrationCustom::$function_to_call");
error_log("\nCalling function MigrationCustom::$function_to_call()");
$result = MigrationCustom::$function_to_call($transaction_info, $this->web_service_connection_info);
$result['message'] = "Funcion called: MigrationCustom::$function_to_call() \nFunction reponse: ".$result['message'];
error_log('Reponse: '.$result['message']);
$result['message'] = "\nFunction reponse: ".$result['message'];
//error_log('Reponse: '.$result['message']);
if (!empty($transaction_info['id'])) {
self::update_transaction(array('id' => $transaction_info['id'] , 'status_id' => $result['status_id']));
} else {

@ -194,7 +194,10 @@ class MigrationCustom {
error_log('User does not have a uidIdPersona');
error_log(print_r($data, 1));
exit;
}
}
$data['uidIdPersona'] = strtoupper($data['uidIdPersona']);
$data['status'] = STUDENT;
if (isset($data['uidIdEmpleado'])) {
$data['status'] = COURSEMANAGER;
@ -728,7 +731,7 @@ class MigrationCustom {
static function transaction_1($data, $web_service_details) {
$uidIdPersonaId = $data['item_id'];
//Add user call the webservice
$user_info = Migration::soap_call($web_service_details, 'usuarioDetalles', array('uididpersona' => $uidIdPersonaId));
$user_info = Migration::soap_call($web_service_details, 'usuarioDetalles', array('intIdSede'=> $data['branch_id'], 'uididpersona' => $uidIdPersonaId));
if ($user_info['error'] == false) {
global $api_failureList;
unset($user_info['error']);
@ -757,7 +760,7 @@ class MigrationCustom {
//eliminar usuario usuario_eliminar UID
//const TRANSACTION_TYPE_DEL_USER = 2;
static function transaction_2($data) {
$uidIdPersonaId = $data['item_id'];
$uidIdPersonaId = strtoupper($data['item_id']);
$user_id = self::get_user_id_by_persona_id($uidIdPersonaId);
if ($user_id) {
$chamilo_user_info_before = api_get_user_info($user_id, false, false, true);
@ -788,10 +791,10 @@ class MigrationCustom {
//editar detalles de usuario (nombre/correo/contraseña) usuario_editar UID
//const TRANSACTION_TYPE_EDIT_USER = 3;
static function transaction_3($data, $web_service_details) {
$uidIdPersonaId = $data['item_id'];
$uidIdPersonaId = strtoupper($data['item_id']);
$user_id = self::get_user_id_by_persona_id($uidIdPersonaId);
if ($user_id) {
$user_info = Migration::soap_call($web_service_details, 'usuarioDetalles', array('uididpersona' => $uidIdPersonaId));
$user_info = Migration::soap_call($web_service_details, 'usuarioDetalles', array('intIdSede'=> $data['branch_id'], 'uididpersona' => $uidIdPersonaId));
if ($user_info['error'] == false) {
unset($user_info['error']);
//Edit user
@ -802,8 +805,8 @@ class MigrationCustom {
return array(
'entity' => 'user',
'before' => $chamilo_user_info_before,
'after' => $chamilo_user_info,
'message' => "User id $user_id was updated updated with data: ".print_r($user_info, 1),
'after' => $chamilo_user_info,
'message' => "User id $user_id was updated with data: ".print_r($user_info, 1),
'status_id' => self::TRANSACTION_STATUS_SUCCESSFUL
);
} else {
@ -910,7 +913,7 @@ class MigrationCustom {
}
}
function check_if_user_is_subscribe_to_session($user_id, $session_id, $message = null, $before = array()) {
static function check_if_user_is_subscribe_to_session($user_id, $session_id, $message = null, $before = array()) {
$user_session_status = SessionManager::get_user_status_in_session($session_id, $user_id);
if (!empty($user_session_status)) {
return array(
@ -933,9 +936,9 @@ class MigrationCustom {
//const TRANSACTION_TYPE_ADD_COURSE = 5;
static function transaction_5($data, $web_service_details) {
$uidCursoId = $data['item_id'];
$course_info = Migration::soap_call($web_service_details, 'cursoDetalles', array('uididcurso' => $uidCursoId));
$course_info = Migration::soap_call($web_service_details, 'cursoDetalles', array('intIdSede'=> $data['branch_id'], 'uididcurso' => $uidCursoId));
if ($course_info['error'] == false) {
unset($user_info['error']);
unset($course_info['error']);
$course_info = CourseManager::create_course($course_info);
$course_info = api_get_course_info($course_info['code'], true);
if (!empty($course_info)) {
@ -988,7 +991,7 @@ class MigrationCustom {
$course_code = self::get_real_course_code($uidCursoId);
if (!empty($course_code)) {
$course_info = api_get_course_info($course_code, true);
$data_to_update = Migration::soap_call($web_service_details, 'cursoDetalles', array('uididcurso' => $uidCursoId));
$data_to_update = Migration::soap_call($web_service_details, 'cursoDetalles', array('intIdSede'=> $data['branch_id'], 'uididcurso' => $uidCursoId));
if ($data_to_update['error'] == false) {
//do some cleaning
@ -1053,7 +1056,7 @@ class MigrationCustom {
//añadir p.a. pa_agregar PID
// const TRANSACTION_TYPE_ADD_SESS = 8;
static function transaction_8($data, $web_service_details) {
$session_info = Migration::soap_call($web_service_details, 'programaDetalles', array('uididprograma' => $data['item_id']));
$session_info = Migration::soap_call($web_service_details, 'programaDetalles', array('intIdSede'=> $data['branch_id'], 'uididprograma' => $data['item_id']));
if ($session_info['error'] == false) {
unset($session_info['error']);
@ -1110,7 +1113,7 @@ class MigrationCustom {
$uidIdPrograma = $data['item_id'];
$session_id = self::get_session_id_by_programa_id($uidIdPrograma);
if (!empty($session_id)) {
$session_info = Migration::soap_call($web_service_details, 'programaDetalles', array('uididprograma' => $data['item_id']));
$session_info = Migration::soap_call($web_service_details, 'programaDetalles', array('intIdSede'=> $data['branch_id'], 'uididprograma' => $data['item_id']));
if ($session_info['error'] == false) {
$session_info['id'] = $session_id;
unset($session_info['error']);
@ -1232,7 +1235,7 @@ class MigrationCustom {
static function transaction_extra_field_agregar_generic($extra_field_variable, $original_data, $web_service_details) {
$function_name = $extra_field_variable."Detalles";
$data = Migration::soap_call($web_service_details, $function_name, array("uidid".$extra_field_variable => $original_data['item_id']));
$data = Migration::soap_call($web_service_details, $function_name, array('intIdSede'=> $original_data['branch_id'], "uidid".$extra_field_variable => $original_data['item_id']));
if ($data['error'] == false) {
$extra_field = new ExtraField('session');
@ -1292,7 +1295,7 @@ class MigrationCustom {
$extra_field_option_info = $extra_field_option->get_field_option_by_field_and_option($extra_field_info['id'], $original_data['item_id']);
$function_name = $extra_field_variable."Detalles";
$data = Migration::soap_call($web_service_details, $function_name, array("uidid".$extra_field_variable => $original_data['item_id']));
$data = Migration::soap_call($web_service_details, $function_name, array('intIdSede'=> $original_data['branch_id'], "uidid".$extra_field_variable => $original_data['item_id']));
if ($data['error'] == false) {
//Update 1 item
@ -1536,6 +1539,7 @@ class MigrationCustom {
if ($result['error'] == true) {
error_log("ERROR:");
error_log($result['message']);
exit;
} else {
error_log($result['message']);
}
@ -1562,7 +1566,7 @@ class MigrationCustom {
* @return int
*/
static function process_transaction($transaction_info, $transaction_status_list = array(), $forced = false) {
if ($transaction_info) {
if ($transaction_info) {
if (empty($transaction_status_list)) {
$transaction_status_list = self::get_transaction_status_list();
}
@ -1593,11 +1597,19 @@ class MigrationCustom {
if (empty($transaction_info)) {
$transaction_id = Migration::add_transaction($params);
return array(
'id' => $transaction_id,
'error' => false,
'message' => "Third party transaction id #{$params['transaction_id']} added to Chamilo with id #$transaction_id"
);
if ($transaction_id) {
return array(
'id' => $transaction_id,
'error' => false,
'message' => "Third party transaction id #{$params['transaction_id']} added to Chamilo with id #$transaction_id"
);
} else {
return array(
'id' => null,
'error' => true,
'message' => 'There was an error while creating the transaction'
);
}
} else {
//only process transaction if it was failed or to be executed
if (in_array($transaction_info['status_id'], array(MigrationCustom::TRANSACTION_STATUS_FAILED, MigrationCustom::TRANSACTION_STATUS_TO_BE_EXECUTED))) {
@ -1613,15 +1625,19 @@ class MigrationCustom {
'message' => "Third party transaction id #{$params['transaction_id']} was already added to Chamilo with id #{$transaction_info['id']}. Transaction can't be executed twice. Transacion status_id = {$transaction_status_list[$transaction_info['status_id']]['title']}"
);
}
}
}
return array(
'id' => null,
'error' => true,
'message' => 'Third party transaction was already treated'
);
} else {
return array(
'id' => null,
'error' => true,
'message' => 'Third party transaction is not an array'
);
}
return false;
}
static function genericDetalles($data, $result_name, $params = array()) {
@ -1635,8 +1651,15 @@ class MigrationCustom {
if (!empty($xml->NewDataSet)) {
$item = (array)$xml->NewDataSet->Table;
//var_dump($item);
$item['error'] = false;
if (isset($item['uididsede'])) {
$item['uididsede'] = strtoupper($item['uididsede']);
}
if (isset($item['uididhorario'])) {
$item['uididhorario'] = strtoupper($item['uididhorario']);
}
return $item;
} else {
return array(
@ -1674,7 +1697,7 @@ class MigrationCustom {
$result['status'] = $result['rol'] == 'profesor' ? COURSEMANAGER : STUDENT;
$result['phone'] = (string)$result['phone'];
$result['extra_uidIdPersona'] = $params['uididpersona'];
$result['extra_uidIdPersona'] = strtoupper($params['uididpersona']);
unset($result['rol']);
return $result;
}
@ -1707,20 +1730,46 @@ class MigrationCustom {
return $result;
}
$result['extra_uidIdPrograma'] = $params['uididprograma'];
$result['extra_sede'] = $result['uididsede'];
$result['extra_horario'] = $result['uididhorario'];
$result['extra_periodo'] = $result['chrperiodo'];
//Searching course code
$course_code = MigrationCustom::get_real_course_code($result['course_code']);
$result['course_code'] = $course_code;
$course_info = api_get_course_info($course_code);
//Getting sede
$extra_field = new ExtraField('session');
$extra_field_option = new ExtraFieldOption('session');
$extra_field_info = $extra_field->get_handler_field_info_by_field_variable('sede');
$extra_field_option_info_sede = $extra_field_option->get_field_option_by_field_and_option($extra_field_info['id'], $result['uididsede']);
$sede_name = null;
if (isset($extra_field_option_info_sede[0]) && !empty($extra_field_option_info_sede[0]['option_display_text'])) {
$sede_name = $extra_field_option_info_sede[0]['option_display_text'];
}
//Getting horario
$extra_field_info = $extra_field->get_handler_field_info_by_field_variable('horario');
$extra_field_option_info_horario = $extra_field_option->get_field_option_by_field_and_option($extra_field_info['id'], $result['uididhorario']);
$horario_name = null;
if (isset($extra_field_option_info_horario[0]) && !empty($extra_field_option_info_horario[0]['option_display_text'])) {
$horario_name = $extra_field_option_info_horario[0]['option_display_text'];
}
//Setting the session name
$result['name'] = $result['chrperiodo']." - ".$course_info['title'].' '.$sede_name." ".$horario_name;
$result['extra_uidIdPrograma'] = strtoupper($params['uididprograma']);
$result['extra_horario'] = strtoupper($result['uididhorario']);
$result['extra_sede'] = strtoupper($result['uididsede']);
$result['extra_periodo'] = strtoupper($result['chrperiodo']);
$result['display_start_date'] = MigrationCustom::clean_date_time_from_ws($result['display_start_date']);
$result['display_end_date'] = MigrationCustom::clean_date_time_from_ws($result['display_end_date']);
$result['access_start_date'] = MigrationCustom::clean_date_time_from_ws($result['access_start_date']);
$result['access_end_date'] = MigrationCustom::clean_date_time_from_ws($result['access_end_date']);
//Searching course code
$course_code = MigrationCustom::get_real_course_code($result['course_code']);
$result['course_code'] = $course_code;
//Searching id_coach
$result['id_coach'] = MigrationCustom::get_user_id_by_persona_id($result['id_coach']);
@ -1751,11 +1800,11 @@ class MigrationCustom {
}
$result['title'] = $result['name'];
$result['extra_frecuencia'] = $result['frecuencia'];
$result['extra_intensidad'] = $result['intensidad'];
$result['extra_fase'] = $result['fase'];
$result['extra_meses'] = $result['meses'];
$result['extra_uidIdCurso'] = $params['uididcurso'];
$result['extra_frecuencia'] = strtoupper($result['frecuencia']);
$result['extra_intensidad'] = strtoupper($result['intensidad']);
$result['extra_fase'] = strtoupper($result['fase']);
$result['extra_meses'] = strtoupper($result['meses']);
$result['extra_uidIdCurso'] = strtoupper($params['uididcurso']);
unset($result['frecuencia']);
unset($result['intensidad']);

Loading…
Cancel
Save