diff --git a/tests/migrate/migrate.php b/tests/migrate/migrate.php index 58b970edf6..2cd69761b5 100644 --- a/tests/migrate/migrate.php +++ b/tests/migrate/migrate.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'); } diff --git a/tests/migrate/migration.class.php b/tests/migrate/migration.class.php index 27f33ad940..da6f042087 100644 --- a/tests/migrate/migration.class.php +++ b/tests/migrate/migration.class.php @@ -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 { diff --git a/tests/migrate/migration.custom.class.php b/tests/migrate/migration.custom.class.php index a7cb2612f4..574c4f376c 100644 --- a/tests/migrate/migration.custom.class.php +++ b/tests/migrate/migration.custom.class.php @@ -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']);