diff --git a/main/inc/lib/extra_field_option.lib.php b/main/inc/lib/extra_field_option.lib.php index f81397fa4e..9307b52be1 100644 --- a/main/inc/lib/extra_field_option.lib.php +++ b/main/inc/lib/extra_field_option.lib.php @@ -218,7 +218,7 @@ class ExtraFieldOption extends Model { $field_id = intval($field_id); $option_value = Database::escape_string($option_value); - $sql = "SELECT * FROM {$this->table} WHERE field_id = $field_id AND option_value = '".$option_value."'"; + $sql = "SELECT * FROM {$this->table} WHERE field_id = $field_id AND option_value = '".$option_value."'"; $result = Database::query($sql); if (Database::num_rows($result) > 0) { return Database::store_result($result, 'ASSOC'); diff --git a/main/inc/lib/extra_field_value.lib.php b/main/inc/lib/extra_field_value.lib.php index 0e50da88aa..a71d0c037e 100644 --- a/main/inc/lib/extra_field_value.lib.php +++ b/main/inc/lib/extra_field_value.lib.php @@ -217,6 +217,7 @@ class ExtraFieldValue extends Model { WHERE field_value = '$field_value' AND field_variable = '".$field_variable."' "; + $result = Database::query($sql); if (Database::num_rows($result)) { $result = Database::fetch_array($result, 'ASSOC'); diff --git a/main/inc/lib/sessionmanager.lib.php b/main/inc/lib/sessionmanager.lib.php index ba19016ebd..3619d8ec41 100644 --- a/main/inc/lib/sessionmanager.lib.php +++ b/main/inc/lib/sessionmanager.lib.php @@ -60,7 +60,9 @@ class SessionManager { if ($my_session_result == false) { $session_model = new SessionModel(); $session_id = $session_model->save($params); - } + } else { + return false; + } if (!empty($session_id)) { /* diff --git a/tests/migrate/migrate.php b/tests/migrate/migrate.php index 8f7d606f5f..41eddc1ae8 100644 --- a/tests/migrate/migrate.php +++ b/tests/migrate/migrate.php @@ -67,9 +67,9 @@ if (!empty($servers)) { require_once $matches['web_service_calls']['filename']; } //This functions truncates the transaction lists! - //$m->test_transactions($matches['web_service_calls']); + $m->test_transactions($matches['web_service_calls']); - $m->search_transactions($matches['web_service_calls']); + //$m->search_transactions($matches['web_service_calls']); //Load transactions saved before $m->load_transactions($matches); @@ -84,4 +84,4 @@ if (!empty($servers)) { } } $end = time(); -echo "Total process took ".($end-$start)." seconds"; +echo "Total process took ".($end-$start)." seconds \n"; diff --git a/tests/migrate/migration.class.php b/tests/migrate/migration.class.php index 8f5c679a8d..a0d6eba1de 100644 --- a/tests/migrate/migration.class.php +++ b/tests/migrate/migration.class.php @@ -171,7 +171,6 @@ class Migration { static function soap_call($web_service_params, $function_name, $params = array()) { // Create the client instance $url = $web_service_params['url']; - error_log("\nCalling function '$function_name' in $url with params: "); try { $client = new SoapClient($url); } catch (SoapFault $fault) { @@ -187,23 +186,21 @@ class Migration { //die("Problem querying service - $function_name"); return array( 'error' => true, - 'message' => 'Problem querying service - $function_name ', + 'message' => "Problem querying service - $function_name in URL $url ", 'status_id' => 0 ); } if (!empty($data)) { - error_log("Calling {$web_service_params['class']}::$function_name"); + error_log("Calling {$web_service_params['class']}::$function_name $url with params: "); return $web_service_params['class']::$function_name($data, $params); } else { return array( 'error' => true, 'message' => 'No Data found', 'status_id' => 0 - ); - error_log('No data found'); - } - error_log("\n--End--"); + ); + } } /** @@ -251,9 +248,9 @@ class Migration { array( //'action' => 'usuario_matricula', 'action' => 4, - 'item_id' => 'D236776B-D7A5-47FF-8328-55EBE9A59015', - 'orig_id' => null, - 'dest_id' => 'C3671999-095E-4018-9826-678BAFF595DF', //session + 'item_id' => '95EDA88F-D729-450F-95FF-4A3989244F53', //usuario - Abel + 'orig_id' => null, //session orig + 'dest_id' => 'C3671999-095E-4018-9826-678BAFF595DF', //session dest 'branch_id' => 1, 'status_id' => 0 ), @@ -278,7 +275,7 @@ class Migration { array( //'action' => 'curso_editar', 'action' => 7, - 'item_id' => 'E2334974-9D55-4BB4-8B57-FCEFBE2510DC', + 'item_id' => '31B4BD38-5D90-4275-88AF-F01F0274800A', // ONE (SATURDAYS) 'orig_id' => '0', 'branch_id' => 1, 'dest_id' => null, @@ -314,8 +311,8 @@ class Migration { array( //'action' => 'pa_eliminar', 'action' => 9, - 'item_id' => '1', - 'orig_id' => 'C3671999-095E-4018-9826-678BAFF595DF', + 'item_id' => 'C3671999-095E-4018-9826-678BAFF595DF', //id to delete + 'orig_id' => null, 'branch_id' => 1, 'dest_id' => null, 'status_id' => 0 @@ -334,10 +331,10 @@ class Migration { array( //'action' => 'pa_cambiar_horario', 'action' => 12, - 'item_id' => 'C3671999-095E-4018-9826-678BAFF595DF', //session id - 'orig_id' => '0', + 'item_id' => 'B94FEBA2-7EAD-4E14-B3DA-1D02397D1FA1', //session id - 200910 (A02M) Advanced Oral Communication Skills 2 08:45 10:15 701 00003 + 'orig_id' => '63D661DB-0A2F-47FC-94C0-5AA46BE7DA66', // (01) 07:00 09:00 'branch_id' => 1, - 'dest_id' => null, + 'dest_id' => 'B4FE6E83-F33F-417B-8B3F-C24CB94264EA', //(02) 09:00 11:00 'status_id' => 0 ), /* array( @@ -369,7 +366,7 @@ class Migration { array( //'action' => 'horario_agregar', 'action' => 13, - 'item_id' => '2FF78F94-2474-4A9B-AD4A-B1DE624A2759', // horario + 'item_id' => 'E395895A-B480-456F-87F2-36B3A1EBB81C', // horario 'orig_id' => '0', 'branch_id' => 1, 'dest_id' => null, @@ -378,7 +375,7 @@ class Migration { array( //'action' => 'horario_editar', 'action' => 15, - 'item_id' => '2FF78F94-2474-4A9B-AD4A-B1DE624A2759', + 'item_id' => 'E395895A-B480-456F-87F2-36B3A1EBB81C', 'orig_id' => '0', 'dest_id' => null, 'branch_id' => 1, @@ -387,7 +384,7 @@ class Migration { array( //'action' => 'horario_eliminar', 'action' => 14, - 'item_id' => '2FF78F94-2474-4A9B-AD4A-B1DE624A2759', + 'item_id' => 'E395895A-B480-456F-87F2-36B3A1EBB81C', 'orig_id' => '0', 'dest_id' => null, 'branch_id' => 1, @@ -452,7 +449,7 @@ class Migration { array( //'action' => 'frecuencia_agregar', 'action' => 22, - 'item_id' => '78D22B04-B7EB-4DB7-96A3-3557D4B80123', + 'item_id' => '0091CD3B-F042-11D7-B338-0050DAB14015', 'orig_id' => '0', 'branch_id' => 1, 'dest_id' => null, @@ -461,7 +458,7 @@ class Migration { array( //'action' => 'frecuencia_editar', 'action' => 24, - 'item_id' => '78D22B04-B7EB-4DB7-96A3-3557D4B80123', + 'item_id' => '0091CD3B-F042-11D7-B338-0050DAB14015', 'orig_id' => '0', 'branch_id' => 1, 'dest_id' => null, @@ -470,7 +467,7 @@ class Migration { array( //'action' => 'frecuencia_eliminar', 'action' => 23, - 'item_id' => '78D22B04-B7EB-4DB7-96A3-3557D4B80123', + 'item_id' => '0091CD3B-F042-11D7-B338-0050DAB14015', 'orig_id' => '0', 'branch_id' => 1, 'dest_id' => null, @@ -479,7 +476,7 @@ class Migration { array( //'action' => 'intensidad_agregar', 'action' => 25, - 'item_id' => '0091CD3A-F042-11D7-B338-0050DAB14015', + 'item_id' => '0091CD3C-F042-11D7-B338-0050DAB14015', 'orig_id' => '0', 'branch_id' => 1, 'dest_id' => null, @@ -488,7 +485,7 @@ class Migration { array( //'action' => 'intensidad_editar', 'action' => 27, - 'item_id' => '0091CD3A-F042-11D7-B338-0050DAB14015', + 'item_id' => '0091CD3C-F042-11D7-B338-0050DAB14015', 'orig_id' => '0', 'branch_id' => 1, 'dest_id' => null, @@ -497,7 +494,7 @@ class Migration { array( //'action' => 'intensidad_eliminar', 'action' => 26, - 'item_id' => '0091CD3A-F042-11D7-B338-0050DAB14015', + 'item_id' => '0091CD3C-F042-11D7-B338-0050DAB14015', 'orig_id' => '0', 'branch_id' => 1, 'dest_id' => null, @@ -631,7 +628,8 @@ class Migration { function search_transactions($web_service_params) { error_log('search_transactions'); //Testing transactions - + + /*$result = self::soap_call($web_service_params, 'usuarioDetalles', array('uididpersona' => 'D236776B-D7A5-47FF-8328-55EBE9A59015')); $result = self::soap_call($web_service_params, 'programaDetalles', array('uididprograma' => 'C3671999-095E-4018-9826-678BAFF595DF')); $result = self::soap_call($web_service_params, 'cursoDetalles', array('uididcurso' => 'E2334974-9D55-4BB4-8B57-FCEFBE2510DC')); @@ -691,8 +689,8 @@ class Migration { } $item++; //-- - - error_log("Waiting for transaction #$latest_id_attempt"); + error_log("\nend transaction -> \n"); + error_log("Waiting for transaction #$latest_id_attempt ..."); //Checking "huecos" //Waiting transaction is fine continue: @@ -710,7 +708,7 @@ class Migration { error_log("\nCalling function MigrationCustom::$function_to_call"); $result = MigrationCustom::$function_to_call($transaction, $matches['web_service_calls']); - error_log($result['message']); + error_log('Reponse: '.$result['message']); self::update_transaction(array('id' => $transaction['id'] , 'status_id' => $result['status_id'])); /* diff --git a/tests/migrate/migration.custom.class.php b/tests/migrate/migration.custom.class.php index 9365f6e8d8..e0f3776b77 100644 --- a/tests/migrate/migration.custom.class.php +++ b/tests/migrate/migration.custom.class.php @@ -122,14 +122,14 @@ class MigrationCustom { } } - static function get_session_id_by_programa_id($uidIdProgram, $omigrate=null) { + static function get_session_id_by_programa_id($uidIdPrograma, $omigrate=null) { if (is_object($omigrate) && $omigrate->boost_sessions) { if (isset($omigrate->sessions[$uidIdPrograma])) { return $omigrate->sessions[$uidIdPrograma]; } } $extra_field = new ExtraFieldValue('session'); - $values = $extra_field->get_item_id_from_field_variable_and_field_value('uidIdPrograma', $uidIdProgram); + $values = $extra_field->get_item_id_from_field_variable_and_field_value('uidIdPrograma', $uidIdPrograma); if ($values) { return $values['session_id']; } else { @@ -733,10 +733,10 @@ class MigrationCustom { $user_info = Migration::soap_call($web_service_details, 'usuarioDetalles', array('uididpersona' => $uidIdPersonaId)); if ($user_info['error'] == false) { global $api_failureList; - $user_id = UserManager::add($user_info); - if ($user_id) { + $chamilo_user_info = UserManager::add($user_info); + if ($chamilo_user_info) { return array( - 'message' => "User was created : $user_id", + 'message' => "User was created - user_id: {$chamilo_user_info['user_id']} - firstname: {$chamilo_user_info['firstname']} - lastname:{$chamilo_user_info['lastname']}", 'status_id' => self::TRANSACTION_STATUS_SUCCESSFUL ); } else { @@ -783,12 +783,12 @@ class MigrationCustom { $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)); - if ($user_info['error'] == false) { + if ($user_info['error'] == false) { //Edit user $user_info['user_id'] = $user_id; UserManager::update($user_info); return array( - 'message' => "User was updated : $user_id", + 'message' => "User id $user_id was updated updated with data: ".print_r($user_info, 1), 'status_id' => self::TRANSACTION_STATUS_SUCCESSFUL ); } else { @@ -826,11 +826,8 @@ class MigrationCustom { if (!empty($session_id) && !empty($destination_session_id)) { SessionManager::unsubscribe_user_from_session($session_id, $user_id); SessionManager::suscribe_users_to_session($destination_session_id, array($user_id), SESSION_VISIBLE_READ_ONLY, false, false); - - return array( - 'message' => "User $user_id was added to Session $destination_session_id & was removed from $session_id - Move Session A to Session B", - 'status_id' => self::TRANSACTION_STATUS_SUCCESSFUL - ); + $message = "Move Session A to Session B"; + return self::check_if_user_is_subscribe_to_session($user_id, $destination_session_id, $message); } else { return array( 'message' => "Session ids were not correctly setup session_id 1: $session_id Session id 2 $uidIdProgramaDestination - Move Session A to Session B", @@ -844,10 +841,8 @@ class MigrationCustom { $session_id = self::get_session_id_by_programa_id($uidIdPrograma); if (!empty($session_id)) { SessionManager::suscribe_users_to_session($session_id, array($user_id), SESSION_VISIBLE_READ_ONLY, false, false); - return array( - 'message' => "User $user_id added to Session $session_id - Move Session to empty", - 'status_id' => self::TRANSACTION_STATUS_SUCCESSFUL - ); + $message = "Move Session to empty"; + return self::check_if_user_is_subscribe_to_session($user_id, $session_id, $message); } else { return array( 'message' => "Session does not exists $uidIdPrograma - Move Session to empty", @@ -859,8 +854,10 @@ class MigrationCustom { //Move empty to A if (empty($uidIdPrograma) && !empty($uidIdProgramaDestination)) { $session_id = self::get_session_id_by_programa_id($uidIdProgramaDestination); - if (!empty($session_id)) { + if (!empty($session_id)) { SessionManager::suscribe_users_to_session($session_id, array($user_id), SESSION_VISIBLE_READ_ONLY, false, false); + $message = 'Move empty to Session'; + return self::check_if_user_is_subscribe_to_session($user_id, $session_id, $message); } else { return array( 'message' => "Session does not exists $uidIdProgramaDestination - Move empty to Session", @@ -870,6 +867,21 @@ class MigrationCustom { } } + function check_if_user_is_subscribe_to_session($user_id, $session_id, $message = null) { + $user_session_status = SessionManager::get_user_status_in_session($session_id, $user_id); + if (!empty($user_session_status)) { + return array( + 'message' => "User $user_id added to Session $session_id - user relation_type in session: {$user_session_status['relation_type']}- $message ", + 'status_id' => self::TRANSACTION_STATUS_SUCCESSFUL + ); + } else { + return array( + 'message' => "User $user_id was NOT added to Session $session_id - $message", + 'status_id' => self::TRANSACTION_STATUS_SUCCESSFUL + ); + } + } + //Cursos //añadir curso curso_agregar CID //const TRANSACTION_TYPE_ADD_COURSE = 5; @@ -877,15 +889,15 @@ class MigrationCustom { $uidCursoId = $data['item_id']; $course_info = Migration::soap_call($web_service_details, 'cursoDetalles', array('uididcurso' => $uidCursoId)); if ($course_info['error'] == false) { - $course_code = CourseManager::create_course($course_info); - if (!empty($course_code)) { + $course_info = CourseManager::create_course($course_info); + if (!empty($course_info)) { return array( - 'message' => "Course was created $course_code ", + 'message' => "Course was created code: {$course_info['code']} ", 'status_id' => self::TRANSACTION_STATUS_SUCCESSFUL ); } else { return array( - 'message' => "Course does not exists $course_code ", + 'message' => "Course was NOT created", 'status_id' => self::TRANSACTION_STATUS_FAILED ); } @@ -925,9 +937,11 @@ class MigrationCustom { if ($data_to_update['error'] == false) { //do some cleaning $data_to_update['code'] = $course_info['code']; + unset($data_to_update['error']); + CourseManager::update($data_to_update); return array( - 'message' => "Course was updated $course_code ", + 'message' => "Course with code: $course_code was updated with this data: ".print_r($data_to_update, 1), 'status_id' => self::TRANSACTION_STATUS_SUCCESSFUL ); } else { @@ -979,12 +993,45 @@ class MigrationCustom { $session_info = Migration::soap_call($web_service_details, 'programaDetalles', array('uididprograma' => $data['item_id'])); if ($session_info['error'] == false) { - SessionManager::add($session_info); + unset($session_info['error']); + $session_id = SessionManager::add($session_info); + if ($session_id) { + return array( + 'message' => "Session was created. Id: $session_id session data: ".print_r($session_info, 1), + 'status_id' => self::TRANSACTION_STATUS_FAILED + ); + } else { + return array( + 'message' => "Session was NOT created: {$data['item_id']} session data: ".print_r($session_info, 1), + 'status_id' => self::TRANSACTION_STATUS_FAILED + ); + } } else { + //Return error return $session_info; } } + + //eliminar p.a. pa_eliminar PID + //const TRANSACTION_TYPE_DEL_SESS = 9; + static function transaction_9($data) { + $uidIdPrograma = $data['item_id']; + $session_id = self::get_session_id_by_programa_id($uidIdPrograma); + if (!empty($session_id)) { + SessionManager::delete_session($session_id, true); + return array( + 'message' => "Session was deleted session_id: $session_id - id: $uidIdPrograma", + 'status_id' => self::TRANSACTION_STATUS_SUCCESSFUL + ); + } else { + return array( + 'message' => "Session does not exists $uidIdPrograma", + 'status_id' => self::TRANSACTION_STATUS_FAILED + ); + } + } + //editar detalles de p.a. pa_editar PID // const TRANSACTION_TYPE_EDIT_SESS = 10; static function transaction_10($data, $web_service_details) { @@ -994,9 +1041,10 @@ class MigrationCustom { $session_info = Migration::soap_call($web_service_details, 'programaDetalles', array('uididprograma' => $data['item_id'])); if ($session_info['error'] == false) { $session_info['id'] = $session_id; + unset($session_info['error']); SessionManager::update($session_info); return array( - 'message' => "Session updated $uidIdPrograma", + 'message' => "Session updated $uidIdPrograma with data: ".print_r($session_info, 1), 'status_id' => self::TRANSACTION_STATUS_SUCCESSFUL ); } else { @@ -1009,42 +1057,33 @@ class MigrationCustom { ); } } - - //eliminar p.a. pa_eliminar PID - //const TRANSACTION_TYPE_DEL_SESS = 9; - static function transaction_9($data) { - $uidIdPrograma = $data['item_id']; - $session_id = self::get_session_id_by_programa_id($uidIdPrograma); - if (!empty($session_id)) { - SessionManager::delete($session_id); - return array( - 'message' => "Session was deleted $session_id - $uidIdPrograma", - 'status_id' => self::TRANSACTION_STATUS_SUCCESSFUL - ); - } else { - return array( - 'message' => "Session does not exists $uidIdPrograma", - 'status_id' => self::TRANSACTION_STATUS_FAILED - ); - } - } + static function transaction_cambiar_generic($extra_field_variable, $data) { $uidIdPrograma = $data['item_id']; //$orig_id = $data['orig_id']; $destination_id = $data['dest_id']; + $common_message = " - item_id: $uidIdPrograma, dest_id: $destination_id - looking for extra_field_variable: $extra_field_variable - with data ".print_r($data, 1); + $session_id = self::get_session_id_by_programa_id($uidIdPrograma); if (!empty($session_id)) { //?? $extra_field = new ExtraField('session'); $extra_field_info = $extra_field->get_handler_field_info_by_field_variable($extra_field_variable); //horario, aula, etc + if (empty($extra_field_info)) { + return array( + 'message' => "Extra field $extra_field_variable doest not exists in the DB $common_message", + 'status_id' => self::TRANSACTION_STATUS_FAILED + ); + } + //check if option exists $extra_field_option = new ExtraFieldOption('session'); - $extra_field_option_info = $extra_field_option->get_field_option_by_field_and_option($extra_field_info['field_id'], $destination_id); //horario, aula, etc - if ($extra_field_option_info) { - + $extra_field_option_info = $extra_field_option->get_field_option_by_field_and_option($extra_field_info['id'], $destination_id); //horario, aula, etc + + if ($extra_field_option_info) { $extra_field_value = new ExtraFieldValue('session'); $params = array( 'session_id' => $session_id, @@ -1053,109 +1092,186 @@ class MigrationCustom { ); $extra_field_value->save($params); return array( - 'message' => "Session does not exists $uidIdPrograma", + 'message' => "Extra field $extra_field_variable saved with params: ".print_r($params, 1), 'status_id' => self::TRANSACTION_STATUS_SUCCESSFUL ); - } else { + } else { return array( - 'message' => "Option does not exists $destination_id", - 'status_id' => self::TRANSACTION_STATUS_SUCCESSFUL + 'message' => "Option does not exists dest_id: $destination_id $common_message", + 'status_id' => self::TRANSACTION_STATUS_FAILED ); } } else { return array( - 'message' => "Change variable $extra_field_variable - Session does not exists $uidIdPrograma", + 'message' => "Session does not exists: $uidIdPrograma $common_message", 'status_id' => self::TRANSACTION_STATUS_FAILED ); - } - + } } //cambiar aula pa_cambiar_aula PID ORIG DEST //const TRANSACTION_TYPE_UPD_ROOM = 11; static function transaction_11($data) { - self::transaction_cambiar_generic('aula', $data); + return self::transaction_cambiar_generic('aula', $data); } //cambiar horario pa_cambiar_horario PID ORIG DEST //const TRANSACTION_TYPE_UPD_SCHED = 12; static function transaction_12($data) { - self::transaction_cambiar_generic('horario', $data); + return self::transaction_cambiar_generic('horario', $data); } //cambiar sede pa_cambiar_sede PID ORIG DEST //no se usa (se declara el p.a. en otra sede, nada más) static function transaction_pa_cambiar_sede($data) { - self::transaction_cambiar_generic('sede', $data); + return self::transaction_cambiar_generic('sede', $data); } //cambiar intensidad pa_cambiar_fase_intensidad CID ORIG DEST (id de "intensidadFase") //no se usa (se declara el p.a. en otra sede, nada más) static function transaction_cambiar_pa_fase($data) { - self::transaction_cambiar_generic('fase', $data); + return self::transaction_cambiar_generic('fase', $data); } //no se usa (se declara el p.a. en otra sede, nada más) static function transaction_cambiar_pa_intensidad($data) { - self::transaction_cambiar_generic('intensidad', $data); + return self::transaction_cambiar_generic('intensidad', $data); } //------- - static function transaction_extra_field_agregar_generic($extra_field_variable, $data, $web_service_details) { - $function_name = $extra_field_variable."Detalles"; - $data = $web_service_details['class']::$function_name($data['item_id']); - if ($data['error'] == false) { + 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'])); + + if ($data['error'] == false) { $extra_field = new ExtraField('session'); $extra_field_info = $extra_field->get_handler_field_info_by_field_variable($extra_field_variable); - $extra_field_option = new ExtraFieldOption('session'); + if ($extra_field_info) { + $extra_field_option = new ExtraFieldOption('session'); - $params = array( - 'field_id' => $extra_field_info['id'], - 'option_value' => $data['item_id'], - 'option_display_text' => $data['name'], - 'option_order' => null - ); - $extra_field_option->save_one_item($params); + $params = array( + 'field_id' => $extra_field_info['id'], + 'option_value' => $original_data['item_id'], + 'option_display_text' => $data['name'], + 'option_order' => null + ); + + $result = $extra_field_option->save_one_item($params); + if ($result) { + return array( + 'message' => "Extra field option added - $extra_field_variable was saved with data: ".print_r($params,1), + 'status_id' => self::TRANSACTION_STATUS_SUCCESSFUL + ); + } else { + return array( + 'message' => "Extra field option added - $extra_field_variable was NOT saved with data: ".print_r($params,1), + 'status_id' => self::TRANSACTION_STATUS_FAILED + ); + } + } else { + return array( + 'message' => "Extra field was not found: $extra_field_variable", + 'status_id' => self::TRANSACTION_STATUS_FAILED + ); + } } else { return $data; } } - static function transaction_extra_field_editar_generic($extra_field_variable, $data, $web_service_details) { + static function transaction_extra_field_editar_generic($extra_field_variable, $original_data, $web_service_details) { $extra_field = new ExtraField('session'); $extra_field_info = $extra_field->get_handler_field_info_by_field_variable($extra_field_variable); + if (empty($extra_field_info)) { + return array( + 'message' => "Extra field can't be edited extra field does not exists: extra_field_variable: ".$extra_field_variable, + 'status_id' => self::TRANSACTION_STATUS_FAILED + ); + } $extra_field_option = new ExtraFieldOption('session'); - $extra_field_option_info = $extra_field_option->get_field_option_by_field_and_option($extra_field_info['field_id'], $data['item_id']); + $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 = $web_service_details['class']::$function_name($data['item_id']); - $data = Migration::soap_call($web_service_details, $function_name, array("uidid".$extra_field_variable => $data['item_id'])); - + $data = Migration::soap_call($web_service_details, $function_name, array("uidid".$extra_field_variable => $original_data['item_id'])); if ($data['error'] == false) { - //update array - $extra_field_option_info = array( - 'id' => $extra_field_option_info['id'], - 'field_id' => $extra_field_info['field_id'], - 'option_value' => $data['item_id'], - 'option_display_text' => $data['name'], - 'option_order' => null - ); - $extra_field_option->update($extra_field_option_info); + + //Update 1 item + if (!empty($extra_field_option_info)) { + + if (count($extra_field_option_info) > 1) { + var_dump($extra_field_option_info); + //Take the first one + error_log('Warning! There are several options with the same key. You should delete doubles. Check your DB with this query:'); + error_log("SELECT * FROM session_field_options WHERE field_id = {$extra_field_info['id']} AND option_value = '{$original_data['item_id']}' "); + error_log('All options are going to be updated'); + } + + $options_updated = array(); + foreach($extra_field_option_info as $option) { + $extra_field_option_info = array( + 'id' => $option['id'], + 'field_id' => $extra_field_info['id'], + 'option_value' => $original_data['item_id'], + 'option_display_text' => $data['name'], + 'option_order' => null + ); + $extra_field_option->update($extra_field_option_info); + $options_updated [] = $option['id']; + } + + $options_updated = implode(',', $options_updated); + + return array( + 'message' => "Extra field options id updated: $options_updated", + 'status_id' => self::TRANSACTION_STATUS_FAILED + ); + } else { + return array( + 'message' => "Extra field option not found item_id: {$original_data['item_id']}", + 'status_id' => self::TRANSACTION_STATUS_FAILED + ); + } } else { return $data; } } - static function transaction_extra_field_eliminar_generic($extra_field_variable, $data, $web_service_details) { //horario + /* Delete all options with option_value = item_id */ + static function transaction_extra_field_eliminar_generic($extra_field_variable, $original_data, $web_service_details) { //horario $extra_field = new ExtraField('session'); $extra_field_info = $extra_field->get_handler_field_info_by_field_variable($extra_field_variable); $extra_field_option = new ExtraFieldOption('session'); - $extra_field_option_info = $extra_field_option->get_field_option_by_field_and_option($extra_field_info['field_id'], $data['item_id']); - //@todo Delete all horario in sessions? - $extra_field_option->delete($extra_field_option_info['id']); + $extra_field_option_info = $extra_field_option->get_field_option_by_field_and_option($extra_field_info['id'], $original_data['item_id']); + + if (!empty($extra_field_option_info)) { + $deleting_option_ids = array(); + foreach($extra_field_option_info as $option) { + //@todo Delete all horario in sessions? + $result = $extra_field_option->delete($option['id']); + $deleting_option_ids[] = $option['id']; + } + $deleting_option_ids = implode(',', $deleting_option_ids); + + if ($result) { + return array( + 'message' => "Extra field options were deleted for the field_variable: $extra_field_variable, options id deleted: $deleting_option_ids", + 'status_id' => self::TRANSACTION_STATUS_FAILED + ); + } else { + return array( + 'message' => "Extra field option was NOT deleted - extra field not found field_variable: $extra_field_variable", + 'status_id' => self::TRANSACTION_STATUS_FAILED + ); + } + } else { + return array( + 'message' => "Extra field option was NOT deleted - extra field not found field_variable: $extra_field_variable", + 'status_id' => self::TRANSACTION_STATUS_FAILED + ); + } } @@ -1163,53 +1279,53 @@ class MigrationCustom { // añadir horario_agregar HID // const TRANSACTION_TYPE_ADD_SCHED = 13; static function transaction_13($data, $web_service_details) { - self::transaction_extra_field_agregar_generic('horario', $data, $web_service_details); + return self::transaction_extra_field_agregar_generic('horario', $data, $web_service_details); } // eliminar horario_eliminar HID // const TRANSACTION_TYPE_DEL_SCHED = 14; static function transaction_14($data, $web_service_details) { - self::transaction_extra_field_eliminar_generic('horario', $data, $web_service_details); + return self::transaction_extra_field_eliminar_generic('horario', $data, $web_service_details); } // editar horario_editar HID // const TRANSACTION_TYPE_EDIT_SCHED = 15; static function transaction_15($data, $web_service_details) { - self::transaction_extra_field_editar_generic('horario', $data, $web_service_details); + return self::transaction_extra_field_editar_generic('horario', $data, $web_service_details); } // Aula // añadir aula_agregar AID // const TRANSACTION_TYPE_ADD_ROOM = 16; static function transaction_16($data, $web_service_details) { - self::transaction_extra_field_agregar_generic('aula', $data, $web_service_details); + return self::transaction_extra_field_agregar_generic('aula', $data, $web_service_details); } // eliminar aula_eliminar AID // const TRANSACTION_TYPE_DEL_ROOM = 17; static function transaction_17($data, $web_service_details) { - self::transaction_extra_field_eliminar_generic('aula', $data, $web_service_details); + return self::transaction_extra_field_eliminar_generic('aula', $data, $web_service_details); } // editar aula_editor AID // const TRANSACTION_TYPE_EDIT_ROOM = 18; static function transaction_18($data, $web_service_details) { - self::transaction_extra_field_editar_generic('aula', $data, $web_service_details); + return self::transaction_extra_field_editar_generic('aula', $data, $web_service_details); } // Sede // añadir aula_agregar SID // const TRANSACTION_TYPE_ADD_BRANCH = 19; static function transaction_19($data, $web_service_details) { - self::transaction_extra_field_agregar_generic('sede', $data, $web_service_details); + return self::transaction_extra_field_agregar_generic('sede', $data, $web_service_details); } // eliminar aula_eliminar SID // const TRANSACTION_TYPE_DEL_BRANCH = 20; static function transaction_20($data, $web_service_details) { - self::transaction_extra_field_eliminar_generic('sede', $data, $web_service_details); + return self::transaction_extra_field_eliminar_generic('sede', $data, $web_service_details); } // editar aula_editar SID // const TRANSACTION_TYPE_EDIT_BRANCH = 21; static function transaction_21($data, $web_service_details) { - self::transaction_extra_field_editar_generic('sede', $data, $web_service_details); + return self::transaction_extra_field_editar_generic('sede', $data, $web_service_details); } // @@ -1217,19 +1333,19 @@ class MigrationCustom { // añadir frec FID // const TRANSACTION_TYPE_ADD_FREQ = 22; static function transaction_22($data, $web_service_details) { - self::transaction_extra_field_agregar_generic('frecuencia', $data, $web_service_details); + return self::transaction_extra_field_agregar_generic('frecuencia', $data, $web_service_details); } // eliminar Freca_eliminar FID // const TRANSACTION_TYPE_DEL_FREQ = 23; static function transaction_23($data, $web_service_details) { - self::transaction_extra_field_eliminar_generic('frecuencia', $data, $web_service_details); + return self::transaction_extra_field_eliminar_generic('frecuencia', $data, $web_service_details); } // editar aula_editar FID // const TRANSACTION_TYPE_EDIT_FREQ = 24; static function transaction_24($data, $web_service_details) { - self::transaction_extra_field_editar_generic('frecuencia', $data, $web_service_details); + return self::transaction_extra_field_editar_generic('frecuencia', $data, $web_service_details); } // @@ -1237,17 +1353,17 @@ class MigrationCustom { // añadir intfase_agregar IID // const TRANSACTION_TYPE_ADD_INTENS = 25; static function transaction_25($data, $web_service_details) { - self::transaction_extra_field_agregar_generic('intensidad', $data, $web_service_details); + return self::transaction_extra_field_agregar_generic('intensidad', $data, $web_service_details); } // eliminar intfase_eliminar IID // const TRANSACTION_TYPE_DEL_INTENS = 26; static function transaction_26($data, $web_service_details) { - self::transaction_extra_field_eliminar_generic('intensidad', $data, $web_service_details); + return self::transaction_extra_field_eliminar_generic('intensidad', $data, $web_service_details); } // editar intfase_editar IID // const TRANSACTION_TYPE_EDIT_INTENS = 27; static function transaction_27($data, $web_service_details) { - self::transaction_extra_field_editar_generic('intensidad', $data, $web_service_details); + return self::transaction_extra_field_editar_generic('intensidad', $data, $web_service_details); } }