Fixing transactions see BT#4882

skala
Julio Montoya 13 years ago
parent a6b0fe1845
commit 38cb233e2f
  1. 2
      main/inc/lib/extra_field_option.lib.php
  2. 1
      main/inc/lib/extra_field_value.lib.php
  3. 4
      main/inc/lib/sessionmanager.lib.php
  4. 6
      tests/migrate/migrate.php
  5. 56
      tests/migrate/migration.class.php
  6. 322
      tests/migrate/migration.custom.class.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');

@ -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');

@ -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)) {
/*

@ -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";

@ -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']));
/*

@ -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);
}
}

Loading…
Cancel
Save