|
|
|
@ -110,7 +110,8 @@ class Migration { |
|
|
|
|
error_log("\n" . '------------ ['.date('H:i:s').'] Migration->migrate function called ------------' . "\n"); |
|
|
|
|
$extra_fields = array(); |
|
|
|
|
// Browsing through 1st-level arrays in db_matches.php |
|
|
|
|
foreach ($matches as $table) { |
|
|
|
|
foreach ($matches as $idx => $table) { |
|
|
|
|
if ($idx == 'web_service_calls') { continue;} |
|
|
|
|
echo "Starting table ".$table['orig_table']." at ".date('h:i:s')."\n"; |
|
|
|
|
error_log('['.date('H:i:s').'] Found table ' . $table['orig_table'] . ' in db_matches'); |
|
|
|
|
$build_only = false; |
|
|
|
@ -140,12 +141,15 @@ class Migration { |
|
|
|
|
if ($num_rows) { |
|
|
|
|
error_log('Records found: ' . $num_rows); |
|
|
|
|
$item = 1; |
|
|
|
|
$lastpct = 0; |
|
|
|
|
//error_log(print_r($table['extra_fields'],1)); |
|
|
|
|
while ($row = $this->fetch_array()) { |
|
|
|
|
//error_log('Loading: ');error_log(print_r($row, 1)); |
|
|
|
|
self::execute_field_match($table, $row, $extra_fields); |
|
|
|
|
$percentage = $item / $num_rows * 100; |
|
|
|
|
if (round($percentage) % 10 == 0) { |
|
|
|
|
$percentage = ($item / $num_rows) * 100; |
|
|
|
|
$newpct = intval($percentage); |
|
|
|
|
if ($newpct>$lastpct && floor($percentage) % 10 == 0) { |
|
|
|
|
$percentage = round($percentage, 3); |
|
|
|
|
$lastpct = $newpct; |
|
|
|
|
error_log("Processing item {$table['orig_table']} #$item $percentage%"); |
|
|
|
|
} |
|
|
|
|
$item++; |
|
|
|
@ -516,7 +520,7 @@ class Migration { |
|
|
|
|
* @return int The ID of the transaction row in Chamilo's table |
|
|
|
|
*/ |
|
|
|
|
static function add_transaction($params) { |
|
|
|
|
error_log('Request 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']); |
|
|
|
@ -599,7 +603,7 @@ error_log('Request add_transaction of : '.print_r($params,1)); |
|
|
|
|
$row = Database::fetch_array($result); |
|
|
|
|
return $row['id']; |
|
|
|
|
} |
|
|
|
|
return 376013; //current first entry |
|
|
|
|
return 20; |
|
|
|
|
} |
|
|
|
|
/** |
|
|
|
|
* Gets a specific transaction using select parameters |
|
|
|
@ -795,21 +799,20 @@ error_log('Request add_transaction of : '.print_r($params,1)); |
|
|
|
|
//error_log('execute_field_match'); |
|
|
|
|
$dest_row = array(); |
|
|
|
|
$first_field = ''; |
|
|
|
|
|
|
|
|
|
// If a dest table exists, fill $my_extra_fields |
|
|
|
|
$my_extra_fields = isset($table['dest_table']) && isset($extra_fields[$table['dest_table']]) ? $extra_fields[$table['dest_table']] : null; |
|
|
|
|
$extra_field_obj = null; |
|
|
|
|
$extra_field_value_obj = null; |
|
|
|
|
|
|
|
|
|
if (!empty($table['dest_table'])) { |
|
|
|
|
$extra_field_obj = new Extrafield($table['dest_table']); |
|
|
|
|
$extra_field_value_obj = new ExtraFieldValue($table['dest_table']); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$extra_fields_to_insert = array(); |
|
|
|
|
|
|
|
|
|
foreach ($table['fields_match'] as $id_field => $details) { |
|
|
|
|
if ($id_field == 0) { |
|
|
|
|
$first_field = $details['dest']; |
|
|
|
|
} |
|
|
|
|
//if ($table['dest_table'] == 'session') {error_log('Processing field '.$details['orig']);} |
|
|
|
|
$params = array(); |
|
|
|
|
// Remove the table name prefix if any (in the orig field) |
|
|
|
|
if (isset($details['orig'])) { |
|
|
|
|
$field_exploded = explode('.', $details['orig']); |
|
|
|
|
if (isset($field_exploded[1])) { |
|
|
|
@ -819,8 +822,10 @@ error_log('Request add_transaction of : '.print_r($params,1)); |
|
|
|
|
|
|
|
|
|
// process the fields one by one |
|
|
|
|
if ($details['func'] == 'none' || empty($details['func'])) { |
|
|
|
|
// if no function is defined to alter the field, take it as is |
|
|
|
|
$dest_data = $row[$details['orig']]; |
|
|
|
|
} else { |
|
|
|
|
// if an alteration function is defined, run it on the field |
|
|
|
|
//error_log(__FILE__.' '.__LINE__.' Preparing to treat field with '.$details['func']); |
|
|
|
|
$dest_data = MigrationCustom::$details['func']($row[$details['orig']], $this->data_list, $row); |
|
|
|
|
} |
|
|
|
@ -833,14 +838,20 @@ error_log('Request add_transaction of : '.print_r($params,1)); |
|
|
|
|
|
|
|
|
|
//Extra field values |
|
|
|
|
$extra_field = isset($my_extra_fields) && isset($my_extra_fields[$details['dest']]) ? $my_extra_fields[$details['dest']] : null; |
|
|
|
|
//error_log('-----'); |
|
|
|
|
//error_log(print_r($extra_field, 1)); |
|
|
|
|
// Check the array is there |
|
|
|
|
//if($table['dest_table'] == 'session') error_log('Fucking Extra field: '.print_r($extra_field,1)); |
|
|
|
|
if (!empty($extra_field) && $extra_field_obj) { |
|
|
|
|
if (isset($extra_field['options'])) { |
|
|
|
|
//if($table['dest_table'] == 'session') error_log('Extra_field no es vacío'); |
|
|
|
|
// Check the "options" array is defined for this field (checking is_array is crucial here, see BT#5215) |
|
|
|
|
if (is_array($extra_field['options']) && count($extra_field['options'])>0) { |
|
|
|
|
//if($table['dest_table'] == 'session') error_log('...y sus opciones son: '.print_r($extra_field['options'],1)); |
|
|
|
|
//if($details['orig']=='uidIdPrograma') { error_log('Eso era lo inicial, del cual se tomó '.$details['dest'].': '.print_r($my_extra_fields,1));} |
|
|
|
|
$options = $extra_field['options']; |
|
|
|
|
$field_type = $extra_field['field_type']; |
|
|
|
|
//if ($table['dest_table'] == 'session') {error_log('Field orid: '.$details['orig']);} |
|
|
|
|
|
|
|
|
|
if (!empty($options)) { |
|
|
|
|
//if ($table['dest_table'] == 'session') {error_log('Options not empty');} |
|
|
|
|
if (!is_array($options)) { $options = array($options); } |
|
|
|
|
foreach ($options as $option) { |
|
|
|
|
if (is_array($option)) { |
|
|
|
@ -872,19 +883,23 @@ error_log('Request add_transaction of : '.print_r($params,1)); |
|
|
|
|
} |
|
|
|
|
unset($dest_row[$details['dest']]); |
|
|
|
|
} |
|
|
|
|
unset($extra_field); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//if ($table['dest_table']=='session') { error_log('Params: '.print_r($params,1)); } |
|
|
|
|
// If a dest_func entry has been defind, use this entry as the main |
|
|
|
|
// operation to execute when inserting the item |
|
|
|
|
if (!empty($table['dest_func'])) { |
|
|
|
|
//error_log('Calling '.$table['dest_func'].' on data recovered: '.print_r($dest_row, 1)); |
|
|
|
|
$dest_row['return_item_if_already_exists'] = true; |
|
|
|
|
|
|
|
|
|
$item_result = call_user_func_array($table['dest_func'], array($dest_row, $this->data_list)); |
|
|
|
|
|
|
|
|
|
if (isset($table['show_in_error_log']) && $table['show_in_error_log'] == false) { |
|
|
|
|
/* if (isset($table['show_in_error_log']) && $table['show_in_error_log'] == false) { |
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
|
//error_log('Result of calling ' . $table['dest_func'] . ': ' . print_r($item_result, 1)); |
|
|
|
|
} |
|
|
|
|
*/ |
|
|
|
|
//error_log('Result of calling ' . $table['dest_func'] . ': ' . print_r($item_result, 1)); |
|
|
|
|
//After the function was executed fill the $this->data_list array |
|
|
|
|
switch ($table['dest_table']) { |
|
|
|
@ -923,8 +938,10 @@ error_log('Request add_transaction of : '.print_r($params,1)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//Saving extra fields of the element |
|
|
|
|
//error_log('Checking extra fields for '.$extra_field_value_obj->handler_id.' '.$handler_id); |
|
|
|
|
if (!empty($extra_fields_to_insert)) { |
|
|
|
|
foreach ($extra_fields_to_insert as $params) { |
|
|
|
|
//error_log('Trying to save '.print_r($params,1)); |
|
|
|
|
$params[$extra_field_value_obj->handler_id] = $handler_id; |
|
|
|
|
$extra_field_value_obj->save($params); |
|
|
|
|
} |
|
|
|
@ -937,16 +954,19 @@ error_log('Request add_transaction of : '.print_r($params,1)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Helper function to create extra fields in the Chamilo database |
|
|
|
|
* Helper function to create extra fields in the Chamilo database. If the |
|
|
|
|
* extra field aleady exists, then just return the ID of this field. If |
|
|
|
|
* options are provided ('options' sub-array), then options are inserted in |
|
|
|
|
* the corresponding x_field_options table. |
|
|
|
|
* @param Array An array containing an 'extra_fields' entry with details about the required extra fields |
|
|
|
|
* @return void |
|
|
|
|
*/ |
|
|
|
|
private function _create_extra_fields(&$table) { |
|
|
|
|
$extra_fields = array(); |
|
|
|
|
|
|
|
|
|
error_log('Inserting (if exists) extra fields for : ' . $table['dest_table'] . " \n"); |
|
|
|
|
error_log('Inserting (if not exist) extra fields for : ' . $table['dest_table'] . " \n"); |
|
|
|
|
foreach ($table['extra_fields'] as $extra_field) { |
|
|
|
|
error_log('Preparing for insertion of extra field ' . $extra_field['field_display_text'] . "\n"); |
|
|
|
|
//error_log('Preparing for insertion of extra field ' . $extra_field['field_display_text'] . "\n"); |
|
|
|
|
$options = isset($extra_field['options']) ? $extra_field['options'] : null; |
|
|
|
|
unset($extra_field['options']); |
|
|
|
|
|
|
|
|
@ -955,9 +975,11 @@ error_log('Request add_transaction of : '.print_r($params,1)); |
|
|
|
|
|
|
|
|
|
$selected_fields = self::prepare_field_match($options); |
|
|
|
|
|
|
|
|
|
//Adding options |
|
|
|
|
//Adding options. This is only processed if the corresponding |
|
|
|
|
// extra_field has an 'options' sub-aray defined |
|
|
|
|
if (!empty($options)) { |
|
|
|
|
$extra_field_option_obj = new ExtraFieldOption($table['dest_table']); |
|
|
|
|
// use the query defined in the 'query' item as returned in a select by prepare_field_match above |
|
|
|
|
$this->select_all($options['orig_table'], $selected_fields); |
|
|
|
|
$num_rows = $this->num_rows(); |
|
|
|
|
|
|
|
|
@ -977,6 +999,7 @@ error_log('Request add_transaction of : '.print_r($params,1)); |
|
|
|
|
//error_log('$data: ' . print_r($data_to_insert, 1)); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
// if there are no pre-defined options, then just return the field_id for this variable |
|
|
|
|
$extra_fields[$table['dest_table']]['extra_field_' . $extra_field['field_variable']] = $extra_field_id; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|