diff --git a/main/inc/lib/database.constants.inc.php b/main/inc/lib/database.constants.inc.php index d02f13835f..9b2dbd0905 100644 --- a/main/inc/lib/database.constants.inc.php +++ b/main/inc/lib/database.constants.inc.php @@ -344,5 +344,9 @@ define('TABLE_GRADE_MODEL_COMPONENTS', 'grade_components'); define('TABLE_BRANCH_SYNC', 'branch_sync'); define('TABLE_BRANCH_SYNC_LOG', 'branch_sync_log'); -define('TABLE_BRANCH_TRANSACTION', 'branch_transaction'); -define('TABLE_BRANCH_TRANSACTION_STATUS', 'branch_transaction_status'); + +//define('TABLE_BRANCH_TRANSACTION', 'branch_transaction'); +//define('TABLE_BRANCH_TRANSACTION_STATUS', 'branch_transaction_status'); + +define('TABLE_BRANCH_TRANSACTION', 'migration_transaction'); +define('TABLE_BRANCH_TRANSACTION_STATUS', 'migration_transaction_status'); \ No newline at end of file diff --git a/tests/migrate/migration.class.php b/tests/migrate/migration.class.php index c516a39576..f9039f3e15 100644 --- a/tests/migrate/migration.class.php +++ b/tests/migrate/migration.class.php @@ -48,10 +48,10 @@ class Migration { /** * Temporary handler for SQL result */ - public $odbrows = null; + public $odbrows = null; public $web_service_connection_info = array(); - + /** * The constructor assigns all database connection details to the migration * object @@ -73,7 +73,7 @@ class Migration { $this->odbuser = $dbuser; $this->odbpass = $dbpass; $this->odbname = $dbname; - + // Set the boost level if set in config.php if (!empty($boost) && is_array($boost)) { global $data_list; @@ -91,8 +91,8 @@ class Migration { public function connect() { //extend in child class } - - public function set_web_service_connection_info($matches) { + + public function set_web_service_connection_info($matches) { $this->web_service_connection_info = $matches['web_service_calls']; } @@ -117,7 +117,7 @@ class Migration { $build_only = true; } - // Creating extra fields if necessary inside Chamilo (to store + // Creating extra fields if necessary inside Chamilo (to store // original fields) if (isset($table['extra_fields']) && in_array($table['dest_table'], array('course', 'user', 'session'))) { $extra_fields = self::_create_extra_fields($table); @@ -160,7 +160,7 @@ class Migration { } } } - + /** * Call the SOAP web service as detailed in the parameters * @param array Settings for the WS call @@ -168,18 +168,18 @@ class Migration { * @param array Variables to be passed as params to the function * @return array Results as returned by the SOAP call */ - static function soap_call($web_service_params, $function_name, $params = array()) { + static function soap_call($web_service_params, $function_name, $params = array()) { // Create the client instance - $url = $web_service_params['url']; + $url = $web_service_params['url']; try { $client = new SoapClient($url); } catch (SoapFault $fault) { $error = 1; die('Error connecting'); } - - $client->debug_flag = true; - try { + + $client->debug_flag = true; + try { $data = $client->$function_name($params); } catch (SoapFault $fault) { $error = 2; @@ -190,25 +190,25 @@ class Migration { 'status_id' => 0 ); } - + if (!empty($data)) { error_log("Calling MigrationCustom::$function_name $url with params: ".print_r($params,1)); - return MigrationCustom::$function_name($data, $params); + return MigrationCustom::$function_name($data, $params); } else { return array( 'error' => true, 'message' => "No data found when calling $function_name in URL $url with params: ".print_r($params, 1), 'status_id' => 0 ); - } + } } - + function clean_all_transactions() { - $table = Database::get_main_table(TABLE_MIGRATION_TRANSACTION); + $table = Database::get_main_table(TABLE_BRANCH_TRANSACTION); $sql = "TRUNCATE $table"; Database::query($sql); } - + /** * Test a series of hand-crafted transactions * @param array of parameters that would usually get passed to the web service @@ -218,12 +218,12 @@ class Migration { function insert_test_transactions($truncate = false) { error_log('insert_test_transactions'); //Just for tests - + //Cleaning transaction table if ($truncate) { $this->clean_all_transactions(); } - + $transaction_harcoded = array( array( //'action' => 'usuario_agregar', @@ -244,7 +244,7 @@ class Migration { 'branch_id' => 1, 'dest_id' => null, 'status_id' => 0 - ), + ), array( 'transaction_id' => 1002, //'action' => 'usuario_eliminar', @@ -254,15 +254,15 @@ class Migration { 'branch_id' => 1, 'dest_id' => null, 'status_id' => 0 - ), + ), array( 'transaction_id' => 1003, //'action' => 'usuario_matricula', 'action' => 4, - 'item_id' => '95EDA88F-D729-450F-95FF-4A3989244F53', //usuario - Abel + '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, + 'branch_id' => 1, 'status_id' => 0 ), array( @@ -272,7 +272,7 @@ class Migration { 'item_id' => 'E2334974-9D55-4BB4-8B57-FCEFBE2510DC', 'orig_id' => null, 'dest_id' => null, - 'branch_id' => 1, + 'branch_id' => 1, 'status_id' => 0 ), array( @@ -282,7 +282,7 @@ class Migration { 'item_id' => 'E2334974-9D55-4BB4-8B57-FCEFBE2510DC', 'orig_id' => null, 'dest_id' => null, - 'branch_id' => 1, + 'branch_id' => 1, 'status_id' => 0 ), array( @@ -300,7 +300,7 @@ class Migration { 'item_id' => 'E2334974-9D55-4BB4-8B57-FCEFBE2510DC', //course 'orig_id' => null, 'dest_id' => 'C3671999-095E-4018-9826-678BAFF595DF', //session - 'branch_id' => 1, + 'branch_id' => 1, 'status_id' => 0 ), */ @@ -311,7 +311,7 @@ class Migration { 'item_id' => 'C3671999-095E-4018-9826-678BAFF595DF', 'orig_id' => null, 'dest_id' => null, - 'branch_id' => 1, + 'branch_id' => 1, 'status_id' => 0 ), array( @@ -321,7 +321,7 @@ class Migration { 'item_id' => 'C3671999-095E-4018-9826-678BAFF595DF', 'orig_id' => '0', 'dest_id' => null, - 'branch_id' => 1, + 'branch_id' => 1, 'status_id' => 0 ), array( @@ -334,7 +334,7 @@ class Migration { 'dest_id' => null, 'status_id' => 0 ), - + /* seems not to be used array( //'action' => 'pa_cambiar_aula', @@ -342,7 +342,7 @@ class Migration { 'item_id' => 'C3671999-095E-4018-9826-678BAFF595DF', 'orig_id' => '0', 'dest_id' => '', - 'branch_id' => 1, + 'branch_id' => 1, 'status_id' => 0 ),*/ array( @@ -361,7 +361,7 @@ class Migration { 'item_id' => 'C3671999-095E-4018-9826-678BAFF595DF',//session id 'orig_id' => '0', 'dest_id' => null, - 'branch_id' => 1, + 'branch_id' => 1, 'status_id' => 0 ), array( @@ -369,7 +369,7 @@ class Migration { 'item_id' => 'C3671999-095E-4018-9826-678BAFF595DF',//session id 'orig_id' => '0', 'dest_id' => null, - 'branch_id' => 1, + 'branch_id' => 1, 'status_id' => 0 ), array( @@ -398,17 +398,17 @@ class Migration { 'item_id' => 'E395895A-B480-456F-87F2-36B3A1EBB81C', 'orig_id' => '0', 'dest_id' => null, - 'branch_id' => 1, + 'branch_id' => 1, 'status_id' => 0 ), array( - //'action' => 'horario_eliminar', + //'action' => 'horario_eliminar', 'action' => 14, 'transaction_id' => 1012, 'item_id' => 'E395895A-B480-456F-87F2-36B3A1EBB81C', 'orig_id' => '0', 'dest_id' => null, - 'branch_id' => 1, + 'branch_id' => 1, 'status_id' => 0 ), /* @@ -441,7 +441,7 @@ class Migration { ), * */ array( - //'action' => 'sede_agregar', + //'action' => 'sede_agregar', 'action' => 19, 'transaction_id' => 1013, 'item_id' => '7379A7D3-6DC5-42CA-9ED4-97367519F1D9', @@ -451,7 +451,7 @@ class Migration { 'status_id' => 0 ), array( - //'action' => 'sede_editar', + //'action' => 'sede_editar', 'action' => 21, 'transaction_id' => 1014, 'item_id' => '7379A7D3-6DC5-42CA-9ED4-97367519F1D9', @@ -471,7 +471,7 @@ class Migration { 'status_id' => 0 ), array( - //'action' => 'frecuencia_agregar', + //'action' => 'frecuencia_agregar', 'action' => 22, 'transaction_id' => 1016, 'item_id' => '0091CD3B-F042-11D7-B338-0050DAB14015', @@ -531,14 +531,14 @@ class Migration { 'status_id' => 0 ), ); - + foreach( $transaction_harcoded as $transaction) { $transaction['branch_id'] = 2; if ($transaction['action'] != 21) { continue; } self::add_transaction($transaction); - } + } } /** @@ -548,25 +548,25 @@ class Migration { */ static function add_transaction($params) { //error_log('Requested add_transaction of : '.print_r($params,1)); - $table = Database::get_main_table(TABLE_MIGRATION_TRANSACTION); + $table = Database::get_main_table(TABLE_BRANCH_TRANSACTION); if (isset($params['id'])) { unset($params['id']); } - $params['time_update'] = $params['time_insert'] = api_get_utc_datetime(); - + $params['time_update'] = $params['time_insert'] = api_get_utc_datetime(); + $inserted_id = Database::insert($table, $params); if ($inserted_id) { //error_log("Transaction added #$inserted_id"); } - return $inserted_id; + return $inserted_id; } - + /** * Get all available branches (the migration system supports multiple origin databases, the branch identifies which database it comes from) * @return array Branches IDs (int) */ static function get_branches() { - $table = Database::get_main_table(TABLE_MIGRATION_TRANSACTION); + $table = Database::get_main_table(TABLE_BRANCH_TRANSACTION); $sql = "SELECT DISTINCT branch_id FROM $table ORDER BY branch_id"; $result = Database::query($sql); if (Database::num_rows($result) > 0) { @@ -580,7 +580,7 @@ class Migration { 4=>array('branch_id' => 5), ); } - + /** * Gets transactions in a specific state (for example to get all non-processed transactions) from the Chamilo transactions table * @param int State ID (0=unprocessed (default), 2=completed) @@ -588,49 +588,49 @@ class Migration { * @return array Associative array containing the details of the transactions requested */ static function get_transactions($status_id = 0, $branch_id = 0) { - $table = Database::get_main_table(TABLE_MIGRATION_TRANSACTION); + $table = Database::get_main_table(TABLE_BRANCH_TRANSACTION); $branch_id = intval($branch_id); $status_id = intval($status_id); - - $extra_conditions = " AND branch_id = $branch_id "; + + $extra_conditions = " AND branch_id = $branch_id "; $sql = "SELECT * FROM $table WHERE status_id = $status_id $extra_conditions ORDER BY id "; $result = Database::query($sql); return Database::store_result($result, 'ASSOC'); } - + static function get_transaction_by_transaction_id($transaction_id, $branch_id) { - $table = Database::get_main_table(TABLE_MIGRATION_TRANSACTION); + $table = Database::get_main_table(TABLE_BRANCH_TRANSACTION); $transaction_id = intval($transaction_id); $branch_id = intval($branch_id); - + if (!empty($transaction_id) && !empty($branch_id)) { $sql = "SELECT * FROM $table WHERE transaction_id = $transaction_id AND branch_id = $branch_id"; $result = Database::query($sql); if (Database::num_rows($result)) { - return Database::fetch_array($result, 'ASSOC'); + return Database::fetch_array($result, 'ASSOC'); } } return false; } - + static function delete_transaction_by_transaction_id($transaction_id, $branch_id) { - $table = Database::get_main_table(TABLE_MIGRATION_TRANSACTION); + $table = Database::get_main_table(TABLE_BRANCH_TRANSACTION); $transaction_id = intval($transaction_id); $branch_id = intval($branch_id); - + if (!empty($transaction_id) && !empty($branch_id)) { $sql = "DELETE FROM $table WHERE transaction_id = $transaction_id AND branch_id = $branch_id"; - Database::query($sql); - } - } - + 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) * @param int The ID of the branch * @return int The ID of the latest transaction */ static function get_latest_completed_transaction_by_branch($branch_id) { - $table = Database::get_main_table(TABLE_MIGRATION_TRANSACTION); + $table = Database::get_main_table(TABLE_BRANCH_TRANSACTION); $branch_id = intval($branch_id); $sql = "SELECT id FROM $table WHERE status_id = 2 AND branch_id = $branch_id ORDER BY id DESC LIMIT 1"; $result = Database::query($sql); @@ -640,18 +640,18 @@ class Migration { } return 0; } - + /** * Gets the latest locally-recorded transaction for a specific branch * @param int The ID of the branch * @return int The ID of the last transaction registered */ static function get_latest_transaction_id_by_branch($branch_id) { - $table = Database::get_main_table(TABLE_MIGRATION_TRANSACTION); + $table = Database::get_main_table(TABLE_BRANCH_TRANSACTION); $branch_id = intval($branch_id); - $sql = "SELECT transaction_id FROM $table - WHERE branch_id = $branch_id - ORDER BY transaction_id DESC + $sql = "SELECT transaction_id FROM $table + WHERE branch_id = $branch_id + ORDER BY transaction_id DESC LIMIT 1"; $result = Database::query($sql); if (Database::num_rows($result)) { @@ -660,7 +660,7 @@ class Migration { } return 376012; } - + /** * Gets a specific transaction using select parameters * @param array Select parameters (associative array) @@ -668,72 +668,72 @@ class Migration { * @return array Results as requested */ static function get_transaction_by_params($params, $type_result = 'all') { - $table = Database::get_main_table(TABLE_MIGRATION_TRANSACTION); + $table = Database::get_main_table(TABLE_BRANCH_TRANSACTION); return Database::select('*', $table, $params, $type_result); } - + /** * Updates a transaction using the given query parameters * @param array Query parameters * @return bool The result of the transaction row update - */ + */ static function update_transaction($params) { //return false; - $table = Database::get_main_table(TABLE_MIGRATION_TRANSACTION); + $table = Database::get_main_table(TABLE_BRANCH_TRANSACTION); if (empty($params['id'])) { error_log('No transaction id provided during update_transaction'); return false; } $params['time_update'] = api_get_utc_datetime(); error_log("Transaction updated #{$params['id']} with status_id = {$params['status_id']}"); - + //Failed - do something else if ($params['status_id'] == MigrationCustom::TRANSACTION_STATUS_FAILED) { //event_system($event_type, $event_value_type, $event_value, $datetime = null, $user_id = null, $course_code = null) { event_system('transaction_error', 'transaction_id', $params['id'], $params['time_update']); } - + return Database::update($table, $params, array('id = ?' => $params['id'])); } - + /** * Search for new transactions through a web service call. Automatically insert them in the local transactions table. * @param array The web service parameters * @param int the branch id optional - * @param int An optional transaction ID to start from. Branch id must be selected if you use this option. + * @param int An optional transaction ID to start from. Branch id must be selected if you use this option. * If none provided, fetches the latest transaction available and add + 1 * @return The operation results */ 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; $number_of_transactions = isset($params['number_of_transactions']) ? $params['number_of_transactions'] : 2; - - //Testing transactions + + //Testing transactions $web_service_params = $this->web_service_connection_info; - + /*$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')); + $result = self::soap_call($web_service_params,'cursoDetalles', array('uididcurso' => 'E2334974-9D55-4BB4-8B57-FCEFBE2510DC')); $result = self::soap_call($web_service_params,'faseDetalles', array('uididfase' => 'EBF63F1C-FBD7-46A5-B039-80B5AF064929')); $result = self::soap_call($web_service_params,'frecuenciaDetalles', array('uididfrecuencia' => '0091CD3B-F042-11D7-B338-0050DAB14015')); $result = self::soap_call($web_service_params,'intensidadDetalles', array('uididintensidad' => '0091CD3C-F042-11D7-B338-0050DAB14015')); $result = self::soap_call($web_service_params,'mesesDetalles', array('uididfase' => 'EBF63F1C-FBD7-46A5-B039-80B5AF064929')); - $result = self::soap_call($web_service_params,'sedeDetalles', array('uididsede' => '7379A7D3-6DC5-42CA-9ED4-97367519F1D9')); - $result = self::soap_call($web_service_params,'horarioDetalles', array('uididhorario' => 'E395895A-B480-456F-87F2-36B3A1EBB81C')); - $result = self::soap_call($web_service_params,'transacciones', array('ultimo' => 354911, 'cantidad' => 2)); + $result = self::soap_call($web_service_params,'sedeDetalles', array('uididsede' => '7379A7D3-6DC5-42CA-9ED4-97367519F1D9')); + $result = self::soap_call($web_service_params,'horarioDetalles', array('uididhorario' => 'E395895A-B480-456F-87F2-36B3A1EBB81C')); + $result = self::soap_call($web_service_params,'transacciones', array('ultimo' => 354911, 'cantidad' => 2)); */ - + if (empty($branch_id)) { $branches = self::get_branches(); } else { $branches = array('branch_id' => $branch_id); } - + error_log(count($branches)." branches found \n"); - + if (!empty($branches)) { foreach ($branches as $branch) { if (!empty($branch_id) && !empty($transaction_id)) { @@ -747,12 +747,12 @@ 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); } } - } + } /** * Loads a specific set of transactions from the transactions table and executes them @@ -765,36 +765,36 @@ class Migration { $branch_id = isset($params['branch_id']) ? $params['branch_id'] : null; //$transaction_id = isset($params['transaction_id']) ? $params['transaction_id'] : null; //$number_of_transactions = isset($params['number_of_transactions']) ? $params['number_of_transactions'] : 2; - + //Getting transactions of the migration_transaction table if (empty($branch_id)) { $branches = self::get_branches(); } else { $branches = array('branch_id' => $branch_id); } - + if (!empty($branches)) { - + error_log(count($branches)." branch(es) found \n"); - + foreach ($branches as $branch_info) { - //Get uncompleted transactions - $transactions = self::get_transactions(0, $branch_info['branch_id']); - + //Get uncompleted transactions + $transactions = self::get_transactions(0, $branch_info['branch_id']); + //Getting latest executed transaction $options = array('where' => array('branch_id = ? and status_id <> ?' => array($branch_info['branch_id'], 0)), 'order' => 'id desc', 'limit' => '1'); - $transaction_info = self::get_transaction_by_params($options, 'first'); + $transaction_info = self::get_transaction_by_params($options, 'first'); $latest_id_attempt = 1; - if ($transaction_info) { - $latest_id = $transaction_info['id']; + if ($transaction_info) { + $latest_id = $transaction_info['id']; $latest_id_attempt = $latest_id + 1; } - - $count = count($transactions); - + + $count = count($transactions); + $item = 1;//counter if (!empty($transactions)) { - + error_log("Branch #".$branch_info['branch_id']." called, $count transaction(s) found starting with transaction #$latest_id_attempt \n"); //Looping transactions @@ -807,7 +807,7 @@ class Migration { error_log("\nProcessing transaction #{$transaction['id']} $percentage%"); } $item++; - + error_log("\nWaiting for transaction #$latest_id_attempt ..."); //Checking "huecos" @@ -815,9 +815,9 @@ class Migration { if ($transaction['id'] == $latest_id_attempt) { $latest_id_attempt++; } else { - error_log("Transaction #$latest_id_attempt is missing in branch #{$branch_info['branch_id']} \n"); + error_log("Transaction #$latest_id_attempt is missing in branch #{$branch_info['branch_id']} \n"); } - $result = $this->execute_transaction($transaction); + $result = $this->execute_transaction($transaction); error_log($result['message']); } } @@ -837,10 +837,10 @@ class Migration { } } } - + function execute_transaction($transaction_info) { //Loading function. The action is now numeric, so we call a transaction_1() function, for example - + $validate = MigrationCustom::validate_transaction($transaction_info); if (isset($validate['error']) && $validate['error']) { return $validate; @@ -848,26 +848,26 @@ class Migration { error_log("\n-----------------------------------------------------------------------"); error_log("Executing transaction ".$transaction_info['id']); error_log("\n-----------------------------------------------------------------------"); - + $function_to_call = "transaction_" . $transaction_info['action']; if (method_exists('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'] = "\nFunction 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'])); + self::update_transaction(array('id' => $transaction_info['id'] , 'status_id' => $result['status_id'])); } else { - error_log("Cant update transaction, id was not provided"); + error_log("Cant update transaction, id was not provided"); } return $result; } else { // method does not exist $error_message = "Function $function_to_call does not exists"; error_log($error_message); - + //Failed if (!empty($transaction_info['id'])) { self::update_transaction(array('id' => $transaction_info['id'] , 'status_id' => MigrationCustom::TRANSACTION_STATUS_FAILED)); @@ -875,37 +875,37 @@ class Migration { return array('message' => $error_message); } } - - /** - * - * @param int Transaction id of the third party - * + + /** + * + * @param int Transaction id of the third party + * */ - function load_transaction_by_third_party_id($transaction_external_id, $branch_id, $forced = false) { + function load_transaction_by_third_party_id($transaction_external_id, $branch_id, $forced = false) { //Asking for 2 transactions by getting 1 - + $params = array( - 'ultimo' => $transaction_external_id, + 'ultimo' => $transaction_external_id, 'cantidad' => 1, 'intIdSede' => $branch_id ); - + $result = self::soap_call($this->web_service_connection_info, 'transacciones', $params); - - //Hacking webservice default result + + //Hacking webservice default result if ($result && isset($result[0])) { //Getting 1 transaction - $result = $result[0]; - - $transaction_external_id++; + $result = $result[0]; + + $transaction_external_id++; if ($result['idt'] == $transaction_external_id) { $message = Display::return_message('Transaction id found in third party', 'info'); - + //Adding third party transaction to Chamilo $transaction_result = MigrationCustom::process_transaction($result, null, $forced); - + $transaction_chamilo_info = array(); - + if ($transaction_result['error'] == false) { $chamilo_transaction_id = $transaction_result['id']; $message .= Display::return_message($transaction_result['message'], 'info'); @@ -914,20 +914,20 @@ class Migration { $transaction_chamilo_info = $transaction_chamilo_info[$chamilo_transaction_id]; } else { $transaction_chamilo_info = null; - } + } } else { $message .= Display::return_message("Transaction NOT added to Chamilo. {$transaction_result['message']}", 'warning'); - //$transaction_chamilo_info = MigrationCustom::process_transaction($result, false); + //$transaction_chamilo_info = MigrationCustom::process_transaction($result, false); } - + if (!empty($transaction_chamilo_info)) { $transaction_result = $this->execute_transaction($transaction_chamilo_info); if ($transaction_result) { $message .= Display::page_subheader("Transaction result:"); $message .= nl2br($transaction_result['message']); $message .= "
"; - - if (isset($transaction_result['entity']) && !empty($transaction_result['entity'])) { + + if (isset($transaction_result['entity']) && !empty($transaction_result['entity'])) { $message .= Display::page_subheader2("Entity {$transaction_result['entity']} before:"); $message .= "
".print_r($transaction_result['before'], 1)."
"; $message .= "
"; @@ -935,28 +935,28 @@ class Migration { $message .= Display::page_subheader2("Entity {$transaction_result['entity']} after:"); $message .= "
".print_r($transaction_result['after'], 1)."
"; $message .= "
"; - } + } } else { - $message .= Display::return_message("Transaction failed", 'error'); + $message .= Display::return_message("Transaction failed", 'error'); } - } - + } + return array( 'message' => $message, - 'raw_reponse' => - //Display::page_subheader2("Transactions:"). + 'raw_reponse' => + //Display::page_subheader2("Transactions:"). Display::page_subheader3("Chamilo transaction info:")."
".print_r($transaction_chamilo_info, true)."
". Display::page_subheader3("Webservice transaction reponse:")."
".print_r($result, true)."
", ); } } - + return array( 'message' => Display::return_message("Transaction NOT found in third party", 'warning'), //'raw_reponse' => print_r($result, true) ); } - + /** * Prepares the relationship between two fields (one from the original database and on from the destination/local database) * @param array List of fields that must be matched ('fields_match' => array(0=>array('orig'=>'...','dest'=>'...',...))) @@ -1002,7 +1002,7 @@ class Migration { } $extra_fields_to_insert = array(); global $data_list; - + foreach ($table['fields_match'] as $id_field => $details) { //if ($table['dest_table'] == 'session') {error_log('Processing field '.$details['orig']);} $params = array(); @@ -1043,7 +1043,7 @@ class Migration { $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); } @@ -1080,16 +1080,16 @@ class Migration { 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 + // 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)); + //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, $data_list)); /* 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)); } @@ -1100,7 +1100,7 @@ class Migration { case 'course': //Saving courses in array if ($item_result) { - //$data_list['courses'][$dest_row['uidIdCurso']] = $item_result; + //$data_list['courses'][$dest_row['uidIdCurso']] = $item_result; } else { error_log('Course Not FOUND'); error_log(print_r($item_result, 1)); @@ -1116,7 +1116,7 @@ class Migration { //$data_list['users_alumno'][$dest_row['uidIdAlumno']]['extra'] = $item_result; } if (isset($dest_row['uidIdEmpleado'])) { - //print_r($dest_row['uidIdEmpleado']);exit; + //print_r($dest_row['uidIdEmpleado']);exit; //$data_list['users_empleado'][$dest_row['uidIdEmpleado']]['extra'] = $item_result; } } else { @@ -1126,7 +1126,7 @@ class Migration { } break; case 'session': - //$data_list['sessions'][$dest_row['uidIdPrograma']] = $item_result; + //$data_list['sessions'][$dest_row['uidIdPrograma']] = $item_result; $handler_id = $item_result; //session_id break; } @@ -1148,8 +1148,8 @@ class Migration { } /** - * 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 + * 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 @@ -1169,7 +1169,7 @@ class Migration { $selected_fields = self::prepare_field_match($options); - //Adding options. This is only processed if the corresponding + //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']); @@ -1189,7 +1189,7 @@ class Migration { $extra_fields[$table['dest_table']]['extra_field_' . $extra_field['field_variable']]['options'][] = $data_to_insert; $extra_fields[$table['dest_table']]['extra_field_' . $extra_field['field_variable']]['field_type'] = $extra_field['field_type']; } - //$extra_fields[$table['dest_table']]['extra_field_'.$extra_field['field_variable']]['selected_option'] = + //$extra_fields[$table['dest_table']]['extra_field_'.$extra_field['field_variable']]['selected_option'] = //error_log('$data: ' . print_r($data_to_insert, 1)); } } else { diff --git a/tests/migrate/migration.custom.class.php b/tests/migrate/migration.custom.class.php index 355315e006..5b9474e88e 100644 --- a/tests/migrate/migration.custom.class.php +++ b/tests/migrate/migration.custom.class.php @@ -11,12 +11,12 @@ * during the migration */ class MigrationCustom { - + const default_admin_id = 1; const TRANSACTION_STATUS_TO_BE_EXECUTED = 1; const TRANSACTION_STATUS_SUCCESSFUL = 2; const TRANSACTION_STATUS_DEPRECATED = 3; //?? - const TRANSACTION_STATUS_FAILED = 4; + const TRANSACTION_STATUS_FAILED = 4; /** * Types of transaction operations read from the external databases */ @@ -50,12 +50,12 @@ class MigrationCustom { const TRANSACTION_TYPE_ADD_FASE = 28; const TRANSACTION_TYPE_DEL_FASE = 29; const TRANSACTION_TYPE_EDIT_FASE = 30; - + static function get_transaction_status_list() { - $table = Database::get_main_table(TABLE_MIGRATION_TRANSACTION_STATUS); + $table = Database::get_main_table(TABLE_BRANCH_TRANSACTION_STATUS); return Database::select("*", $table); } - + /** * The only required method is the 'none' method, which will not trigger * any process at all @@ -65,18 +65,18 @@ class MigrationCustom { static function none($data) { return $data; } - + static function join_horario($data, &$omigrate, $row_data) { return '('.$row_data['chrIdHorario'].') '.$row_data['chrHoraInicial'].' '.$row_data['chrHoraFinal']; } - + /** - * Converts 2008-02-01 12:20:20.540 to 2008-02-01 12:20:20 + * Converts 2008-02-01 12:20:20.540 to 2008-02-01 12:20:20 */ static function clean_date_time($date) { return substr($date, 0, 19); } - + /* Converts 2009-09-30T00:00:00-05:00 to 2009-09-30 00:00:00*/ static function clean_date_time_from_ws($date) { $pre_clean = self::clean_date_time($date, 0, 19); @@ -89,7 +89,7 @@ class MigrationCustom { * @return string SQL select string to include in the final select */ static function sql_alter_unhash_50($field) { - $as_field = explode('.', $field); + $as_field = explode('.', $field); if (isset($as_field[1])) { $as_field = $as_field[1]; } else { @@ -97,27 +97,27 @@ class MigrationCustom { } return " cast( $field as varchar(50)) as $as_field "; } - + static function clean_utf8($value) { - return utf8_encode($value); + return utf8_encode($value); } static function make_sha1($value) { return sha1($value); } - + static function add_meses_label_to_extra_field_fase($value, $data, $row_data) { $label = 'meses'; if ($row_data['chrOrdenFase'] == 1) { - $label = 'mes'; + $label = 'mes'; } $value = $row_data['vchNombreFase'] .' ['.trim($row_data['chrOrdenFase']).' '.$label.']'; return self::clean_utf8($value); } - + static function clean_session_name($value, &$omigrate, $row_data) { - return self::clean_utf8($row_data['session_name']); + return self::clean_utf8($row_data['session_name']); } - + static function get_real_course_code($data, &$omigrate=null) { if (is_array($omigrate) && $omigrate['boost_courses']) { if (isset($omigrate['courses'][$data])) { @@ -125,29 +125,29 @@ class MigrationCustom { } } $extra_field = new ExtraFieldValue('course'); - $values = $extra_field->get_item_id_from_field_variable_and_field_value('uidIdCurso', $data); + $values = $extra_field->get_item_id_from_field_variable_and_field_value('uidIdCurso', $data); if ($values) { return $values['course_code']; } else { error_log("Course ".print_r($data,1)." not found in DB"); } } - - static function get_session_id_by_programa_id($uidIdPrograma, &$omigrate=null) { + + static function get_session_id_by_programa_id($uidIdPrograma, &$omigrate=null) { if (is_array($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', $uidIdPrograma); + $values = $extra_field->get_item_id_from_field_variable_and_field_value('uidIdPrograma', $uidIdPrograma); if ($values) { return $values['session_id']; } else { //error_log("session id not found in DB"); - } + } } - + /* Not used */ static function get_user_id_by_persona_id($uidIdPersona, &$omigrate=null) { if (is_array($omigrate) && $omigrate['boost_users']) { @@ -157,16 +157,16 @@ class MigrationCustom { } //error_log('get_user_id_by_persona_id'); $extra_field = new ExtraFieldValue('user'); - $values = $extra_field->get_item_id_from_field_variable_and_field_value('uidIdPersona', $uidIdPersona); + $values = $extra_field->get_item_id_from_field_variable_and_field_value('uidIdPersona', $uidIdPersona); if ($values) { return $values['user_id']; } else { return 0; } } - + static function get_real_teacher_id($uidIdPersona, &$omigrate=null) { - $default_teacher_id = self::default_admin_id; + $default_teacher_id = self::default_admin_id; if (empty($uidIdPersona)) { //error_log('No teacher provided'); return $default_teacher_id; @@ -176,19 +176,19 @@ class MigrationCustom { return $omigrate['users'][$uidIdPersona]; } } - + $extra_field = new ExtraFieldValue('user'); $values = $extra_field->get_item_id_from_field_variable_and_field_value('uidIdPersona', $uidIdPersona); - + if ($values) { return $values['user_id']; } else { - return $default_teacher_id; - } + return $default_teacher_id; + } } - + /** - * Manage the user creation, including checking if the user hasn't been + * Manage the user creation, including checking if the user hasn't been * created previously * @param array User data * @param object List of migrated things @@ -198,37 +198,37 @@ class MigrationCustom { //error_log('In create_user, receiving '.print_r($data,1)); if (empty($data['uidIdPersona'])) { error_log('User does not have a uidIdPersona'); - error_log(print_r($data, 1)); + error_log(print_r($data, 1)); exit; } - + $data['uidIdPersona'] = strtoupper($data['uidIdPersona']); - + $data['status'] = STUDENT; if (isset($data['uidIdEmpleado'])) { $data['status'] = COURSEMANAGER; - } - + } + if (!isset($data['username']) || empty($data['username'])) { - $data['firstname'] = (string) trim($data['firstname']); - $data['lastname'] = (string) trim($data['lastname']); - + $data['firstname'] = (string) trim($data['firstname']); + $data['lastname'] = (string) trim($data['lastname']); + if (empty($data['firstname']) && empty($data['lastname'])) { $wanted_user_name = UserManager::purify_username($data['uidIdPersona']); - //$wanted_user_name = UserManager::create_unique_username(null, null); + //$wanted_user_name = UserManager::create_unique_username(null, null); } else { $wanted_user_name = UserManager::create_username($data['firstname'], $data['lastname']); } - + $extra_data = UserManager::get_extra_user_data_by_value('uidIdPersona', $data['uidIdPersona']); - + if ($extra_data) { $user_info = api_get_user_info($extra_data[0]); //print_r($extra_data); //error_log("User_already_added - {$user_info['user_id']} - {$user_info['username']} - {$user_info['firstname']} - {$user_info['lastname']}"); return $user_info; } - + if (UserManager::is_username_available($wanted_user_name)) { $data['username'] = $wanted_user_name; error_log("username available $wanted_user_name"); @@ -236,21 +236,21 @@ class MigrationCustom { //the user already exists? $user_info = UserManager::get_user_info_simple($wanted_user_name); $user_persona = UserManager::get_extra_user_data_by_field($user_info['user_id'], 'uidIdPersona'); - + if (isset($user_persona['uidIdPersona']) && $data['uidIdPersona'] == $user_persona['uidIdPersona']) { - error_log("Skip user already added: {$user_info['username']}"); + error_log("Skip user already added: {$user_info['username']}"); return $user_info; } else { - error_log("Homonym - wanted_username: $wanted_user_name - uidIdPersona: {$user_persona['uidIdPersona']} - username: {$user_info['username']}"); + error_log("Homonym - wanted_username: $wanted_user_name - uidIdPersona: {$user_persona['uidIdPersona']} - username: {$user_info['username']}"); //print_r($data); - //The user has the same firstname and lastname but it has another uiIdPersona could by an homonym - $data['username'] = UserManager::create_unique_username($data['firstname'], $data['lastname']); + //The user has the same firstname and lastname but it has another uiIdPersona could by an homonym + $data['username'] = UserManager::create_unique_username($data['firstname'], $data['lastname']); error_log("homonym username created ". $data['username']); } } - + if (empty($data['username'])) { - //Last chance to have a nice username + //Last chance to have a nice username if (empty($data['firstname']) && empty($data['lastname'])) { $data['username'] = UserManager::create_unique_username(uniqid()); error_log("username empty 1". $data['username']); @@ -266,33 +266,33 @@ class MigrationCustom { //the user already exists? $user_info = UserManager::get_user_info_simple($data['username']); $user_persona = UserManager::get_extra_user_data_by_field($user_info['user_id'], 'uidIdPersona'); - - + + if (isset($user_persona['uidIdPersona']) && (string)$data['uidIdPersona'] == (string)$user_persona['uidIdPersona']) { - //error_log("2 Skip user already added: {$user_info['username']}"); + //error_log("2 Skip user already added: {$user_info['username']}"); return $user_info; } else { //print_r($user_persona); - //error_log("2 homonym - wanted_username: {$data['username']} - uidIdPersona: {$user_persona['uidIdPersona']} - username: {$user_info['username']}"); + //error_log("2 homonym - wanted_username: {$data['username']} - uidIdPersona: {$user_persona['uidIdPersona']} - username: {$user_info['username']}"); //print_r($data); - //The user has the same firstname and lastname but it has another uiIdPersona could by an homonym - $data['username'] = UserManager::create_unique_username($data['firstname'], $data['lastname']); - //error_log("2 homonym username created ". $data['username']); + //The user has the same firstname and lastname but it has another uiIdPersona could by an homonym + $data['username'] = UserManager::create_unique_username($data['firstname'], $data['lastname']); + //error_log("2 homonym username created ". $data['username']); } } } - + if (empty($data['username'])) { error_log('No Username provided'); error_log(print_r($data, 1)); exit; } - $id_persona = $data['uidIdPersona']; + $id_persona = $data['uidIdPersona']; unset($data['uidIdPersona']); unset($data['uidIdAlumno']); unset($data['uidIdEmpleado']); $data['encrypt_method'] = 'sha1'; - + global $api_failureList; $api_failureList = array(); //error_log(print_r($data, 1)); @@ -308,7 +308,7 @@ class MigrationCustom { UserManager::update_extra_field_value($user_info['user_id'], 'uidIdPersona', $id_persona); return $user_info; } - + /** * Manages the course creation based on the rules in db_matches.php */ @@ -316,11 +316,11 @@ class MigrationCustom { //error_log('In create_course, received '.print_r($data,1)); //Fixes wrong wanted codes $data['wanted_code'] = str_replace(array('-', '_'), '000', $data['wanted_code']); - + //Specific to customer, set the default language to English $data['language'] = 'english'; $data['visibility'] = COURSE_VISIBILITY_REGISTERED; - + //Creates an evaluation $data['create_gradebook_evaluation'] = false; /* @@ -330,13 +330,13 @@ class MigrationCustom { 'weight' => '20', 'max' => '20' );*/ - $course_data = CourseManager::create_course($data); + $course_data = CourseManager::create_course($data); if (is_array($omigrate) && isset($omigrate) && $omigrate['boost_courses']) { $omigrate['courses'][$data['uidIdCurso']] = $course_data['code']; } return $course_data; } - + /** * Manages the session creation, based on data provided by the rules * in db_matches.php @@ -344,7 +344,7 @@ class MigrationCustom { */ static function create_session($data, &$omigrate) { //Hack to add the default gradebook course to the session course - $data['create_gradebook_evaluation'] = true; + $data['create_gradebook_evaluation'] = true; /*$data['gradebook_params'] = array( 'name' => 'General evaluation', 'user_id' => self::default_admin_id, @@ -353,7 +353,7 @@ class MigrationCustom { );*/ self::fix_access_dates($data); - // Here the $data variable has $data['course_code'] that will be added + // Here the $data variable has $data['course_code'] that will be added // when creating the session // If session already exists, it will return the existing session id $session_id = SessionManager::add($data, true); @@ -367,7 +367,7 @@ class MigrationCustom { } return $session_id; } - + /** * Assigns a user to a session based on rules in db_matches.php */ @@ -378,7 +378,7 @@ class MigrationCustom { if (isset($omigrate['sessions'][$data['uidIdPrograma']])) { $session_id = $omigrate['sessions'][$data['uidIdPrograma']]; } - } + } if (empty($session_id)) { $extra_field_value = new ExtraFieldValue('session'); $result = $extra_field_value->get_item_id_from_field_variable_and_field_value('uidIdPrograma', $data['uidIdPrograma']); @@ -387,7 +387,7 @@ class MigrationCustom { $session_id = $result['session_id']; } } - + if (is_array($omigrate) && $omigrate['boost_users']) { if (isset($omigrate['users'][$data['uidIdPersona']])) { $user_id = $omigrate['users'][$data['uidIdPersona']]; @@ -397,61 +397,61 @@ class MigrationCustom { $extra_field_value = new ExtraFieldValue('user'); $result = $extra_field_value->get_item_id_from_field_variable_and_field_value('uidIdPersona', $data['uidIdPersona']); //error_log('data[uidIdPersona] '.$data['uidIdPersona'].' returned $result[user_id]: '.$result['user_id']); - if ($result && $result['user_id']) { - $user_id = $result['user_id']; + if ($result && $result['user_id']) { + $user_id = $result['user_id']; } } - - if (!empty($session_id) && !empty($user_id)) { + + if (!empty($session_id) && !empty($user_id)) { //error_log('Called: add_user_to_session - Subscribing: session_id: '.$session_id. ' user_id: '.$user_id); - SessionManager::suscribe_users_to_session($session_id, array($user_id), SESSION_VISIBLE_READ_ONLY, false, false); + SessionManager::suscribe_users_to_session($session_id, array($user_id), SESSION_VISIBLE_READ_ONLY, false, false); //exit; - } else { - //error_log('Called: add_user_to_session - No idPrograma: '.$data['uidIdPrograma'].' - No uidIdPersona: '.$data['uidIdPersona']); - } + } else { + //error_log('Called: add_user_to_session - No idPrograma: '.$data['uidIdPrograma'].' - No uidIdPersona: '.$data['uidIdPersona']); + } } - - static function create_attendance($data) { + + static function create_attendance($data) { error_log('create_attendance'); $session_id = $data['session_id']; $user_id = $data['user_id']; - + if (!empty($session_id) && !empty($user_id)) { - $attendance = new Attendance(); + $attendance = new Attendance(); $course_list = SessionManager::get_course_list_by_session_id($session_id); $attendance_id = null; - + if (!empty($course_list)) { $course = current($course_list); - + //Creating attendance if (isset($course['code'])) { $course_info = api_get_course_info($course['code']); - + $attendance->set_course_id($course_info['code']); $attendance->set_course_int_id($course_info['real_id']); $attendance->set_session_id($session_id); - $attendance_list = $attendance->get_attendances_list($course_info['real_id'], $session_id); + $attendance_list = $attendance->get_attendances_list($course_info['real_id'], $session_id); if (empty($attendance_list)) { $attendance->set_name('Asistencia'); $attendance->set_description(''); //$attendance->set_attendance_qualify_title($_POST['attendance_qualify_title']); //$attendance->set_attendance_weight($_POST['attendance_weight']); - $link_to_gradebook = false; + $link_to_gradebook = false; //$attendance->category_id = $_POST['category_id']; - $attendance_id = $attendance->attendance_add($link_to_gradebook, self::default_admin_id); + $attendance_id = $attendance->attendance_add($link_to_gradebook, self::default_admin_id); error_log("Attendance added course code: {$course['code']} - session_id: $session_id"); - //only 1 course per session + //only 1 course per session } else { - $attendance_data = current($attendance_list); + $attendance_data = current($attendance_list); $attendance_id = $attendance_data['id']; error_log("Attendance found in attendance_id = $attendance_id - course code: {$course['code']} - session_id: $session_id"); } - + if ($attendance_id) { //Attendance date exists? - $cal_info = $attendance->get_attendance_calendar_data_by_date($attendance_id, $data['fecha']); + $cal_info = $attendance->get_attendance_calendar_data_by_date($attendance_id, $data['fecha']); if ($cal_info && isset($cal_info['id'])) { $cal_id = $cal_info['id']; } else { @@ -463,7 +463,7 @@ class MigrationCustom { //Adding presence for the user (by default everybody is present) $users_present = array($user_id); $attendance->attendance_sheet_add($cal_id, $users_present, $attendance_id, false, false); - error_log("Adding calendar to user: $user_id to calendar: $cal_id"); + error_log("Adding calendar to user: $user_id to calendar: $cal_id"); } else { error_log('No attendance_id created'); } @@ -475,56 +475,56 @@ class MigrationCustom { error_log("Missing data: session: $session_id - user_id: $user_id"); } } - + static function create_thematic($data) { error_log('create_thematic'); $session_id = $data['session_id']; - + if (!empty($session_id)) { $course_list = SessionManager::get_course_list_by_session_id($session_id); - + if (!empty($course_list)) { $course_data = current($course_list); $course_info = api_get_course_info($course_data['code']); - + if (!empty($course_data)) { $thematic = new Thematic(); $thematic->set_course_int_id($course_info['real_id']); - $thematic->set_session_id($session_id); + $thematic->set_session_id($session_id); $thematic_info = $thematic->get_thematic_by_title($data['thematic']); - + if (empty($thematic_info)) { $thematic->set_thematic_attributes(null, $data['thematic'], null, $session_id); $thematic_id = $thematic->thematic_save(); error_log("Thematic added to course code: {$course_info['code']} - session_id: $session_id"); } else { - $thematic_id = isset($thematic_info['id']) ? $thematic_info['id'] : null; + $thematic_id = isset($thematic_info['id']) ? $thematic_info['id'] : null; error_log("Thematic id #$thematic_id found in course: {$course_info['code']} - session_id: $session_id"); } - - if ($thematic_id) { + + if ($thematic_id) { $thematic->set_thematic_plan_attributes($thematic_id, $data['thematic_plan'], null, 6); $thematic->thematic_plan_save(); error_log("Saving plan attributes: {$data['thematic_plan']}"); } error_log("Adding thematic id : $thematic_id to session: $session_id to course: {$course_info['code']} real_id: {$course_info['real_id']}"); - + if ($thematic_id) { error_log("Thematic saved: $thematic_id"); } else { error_log("Thematic NOT saved"); } } - + if ($course_info['code'] != 'B05') { //exit; } } else { - error_log("No courses in session $session_id "); + error_log("No courses in session $session_id "); } - } + } } - + static function add_evaluation_type($params) { $table = Database::get_main_table(TABLE_MAIN_GRADEBOOK_EVALUATION_TYPE); if (!empty($params['name']) && !empty($params['external_id'])) { @@ -532,25 +532,25 @@ class MigrationCustom { unset($params['return_item_if_already_exists']); } Database::insert($table, $params); - } + } } - + static function get_evaluation_type($external_id) { $table = Database::get_main_table(TABLE_MAIN_GRADEBOOK_EVALUATION_TYPE); $external_id = intval($external_id); $sql = "SELECT * FROM $table WHERE external_id = $external_id"; - $result = Database::query($sql); + $result = Database::query($sql); if (Database::num_rows($result)) { $result = Database::fetch_array($result, 'ASSOC'); return $result['id']; } return false; } - + static function create_gradebook_evaluation($data){ error_log('create_gradebook_evaluation'); $session_id = isset($data['session_id']) ? $data['session_id'] : null; - + if (!empty($session_id)) { $course_list = SessionManager::get_course_list_by_session_id($session_id); if (!empty($course_list)) { @@ -559,50 +559,50 @@ class MigrationCustom { //Get gradebook $gradebook = new Gradebook(); $gradebook = $gradebook->get_first(array('where' => array('course_code = ? AND session_id = ?' => array($course_data['code'], $session_id)))); - error_log("Looking gradebook in course code: {$course_data['code']} - session_id: $session_id"); - if (!empty($gradebook)) { + error_log("Looking gradebook in course code: {$course_data['code']} - session_id: $session_id"); + if (!empty($gradebook)) { //error_log("Gradebook exists {$gradebook['id']}"); //Check if gradebook exists - $eval = new Evaluation(); + $eval = new Evaluation(); $evals_found = $eval->load(null, null, $course_data['code'], null, null, null, $data['gradebook_description']); - - if (empty($evals_found)) { + + if (empty($evals_found)) { $eval->set_name($data['gradebook_description']); $eval->set_description($data['gradebook_description']); $eval->set_evaluation_type_id($data['gradebook_evaluation_type_id']); $eval->set_user_id(self::default_admin_id); - $eval->set_course_code($course_data['code']); + $eval->set_course_code($course_data['code']); $eval->set_category_id($gradebook['id']); //harcoded values - $eval->set_weight(20); + $eval->set_weight(20); $eval->set_max(20); $eval->set_visible(1); $eval->add(); error_log("Gradebook evaluation was created!!"); } else { error_log("Gradebook evaluation was already created :( "); - } + } } else { error_log("Gradebook does not exists"); - } + } } else { error_log("Something is wrong with the course "); - } + } } else { - error_log("NO course found for session id: $session_id"); + error_log("NO course found for session id: $session_id"); } - + } else { error_log("NO session id found: $session_id"); - } + } } - + static function add_gradebook_result($data) { error_log('add_gradebook_result'); $session_id = isset($data['session_id']) ? $data['session_id'] : null; - $user_id = isset($data['user_id']) ? $data['user_id'] : null; - + $user_id = isset($data['user_id']) ? $data['user_id'] : null; + if (!empty($session_id) && !empty($user_id)) { $course_list = SessionManager::get_course_list_by_session_id($session_id); if (!empty($course_list)) { @@ -611,20 +611,20 @@ class MigrationCustom { //Get gradebook $gradebook = new Gradebook(); $gradebook = $gradebook->get_first(array('where' => array('course_code = ? AND session_id = ?' => array($course_data['code'], $session_id)))); - error_log("Looking gradebook in course code: {$course_data['code']} - session_id: $session_id, user_id: $user_id"); - if (!empty($gradebook)) { + error_log("Looking gradebook in course code: {$course_data['code']} - session_id: $session_id, user_id: $user_id"); + if (!empty($gradebook)) { error_log("Gradebook exists: {$gradebook['id']}"); - + //Check if gradebook exists - $eval = new Evaluation(); + $eval = new Evaluation(); $evals_found = $eval->load(null, null, null, $gradebook['id'], null, null); - - if (!empty($evals_found)) { + + if (!empty($evals_found)) { $evaluation = current($evals_found); $eval_id = $evaluation->get_id(); - - //Eval found - $res = new Result(); + + //Eval found + $res = new Result(); $check_result = Result :: load (null, $user_id, $eval_id); if (empty($check_result)) { $res->set_evaluation_id($eval_id); @@ -641,27 +641,27 @@ class MigrationCustom { } } else { error_log("Gradebook does not exists"); - } + } } else { error_log("Something is wrong with the course "); - } + } } else { - error_log("NO course found for session id: $session_id"); + error_log("NO course found for session id: $session_id"); } - + } else { error_log("NO session id found: $session_id"); } } - + static function add_gradebook_result_with_evaluation($data) { error_log('add_gradebook_result_with_evaluation'); $session_id = isset($data['session_id']) ? $data['session_id'] : null; $user_id = isset($data['user_id']) ? $data['user_id'] : null; - + //Default evaluation title $title = 'Evaluación General'; - + if (!empty($session_id) && !empty($user_id)) { $course_list = SessionManager::get_course_list_by_session_id($session_id); if (!empty($course_list)) { @@ -670,39 +670,39 @@ class MigrationCustom { //Get gradebook $gradebook = new Gradebook(); $gradebook = $gradebook->get_first(array('where' => array('course_code = ? AND session_id = ?' => array($course_data['code'], $session_id)))); - error_log("Looking gradebook in course code: {$course_data['code']} - session_id: $session_id, user_id: $user_id"); - if (!empty($gradebook)) { + error_log("Looking gradebook in course code: {$course_data['code']} - session_id: $session_id, user_id: $user_id"); + if (!empty($gradebook)) { error_log("Gradebook exists: {$gradebook['id']}"); - - //Creates + + //Creates $eval = new Evaluation(); $evals_found = $eval->load(null, null, $course_data['code'], $gradebook['id'], null, null, $title); - + if (empty($evals_found)) { - $eval->set_name($title); + $eval->set_name($title); //$eval->set_evaluation_type_id($data['gradebook_evaluation_type_id']); $eval->set_user_id(self::default_admin_id); - $eval->set_course_code($course_data['code']); + $eval->set_course_code($course_data['code']); $eval->set_category_id($gradebook['id']); //harcoded values - $eval->set_weight(20); + $eval->set_weight(20); $eval->set_max(20); $eval->set_visible(1); $eval->add(); error_log("Gradebook evaluation was created!!"); $eval_id = $eval->get_id(); - error_log("eval id created: $eval_id"); + error_log("eval id created: $eval_id"); } else { $eval = current($evals_found); error_log("Gradebook evaluation already exists "); $eval_id = $eval->get_id(); - error_log("eval id loaded : $eval_id"); + error_log("eval id loaded : $eval_id"); } - + if ($eval_id) { $res = new Result(); - //Check if already exists + //Check if already exists $check_result = Result :: load (null, $user_id, $eval_id); if (empty($check_result)) { $res->set_evaluation_id($eval_id); @@ -713,38 +713,38 @@ class MigrationCustom { error_log("Result Added :)"); } else { error_log("Result already added "); - } + } } else { error_log("Evaluation not detected"); - } + } } else { error_log("Gradebook does not exists"); - } + } } else { error_log("Something is wrong with the course "); - } + } } else { - error_log("NO course found for session id: $session_id"); - } + error_log("NO course found for session id: $session_id"); + } } else { error_log("NO session id found: $session_id"); } } - - + + /* Transaction methods */ - + //añadir usuario: usuario_agregar UID //const TRANSACTION_TYPE_ADD_USER = 1; static function transaction_1($data, $web_service_details) { $uidIdPersonaId = $data['item_id']; - //Add user call the webservice + //Add user call the webservice $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']); - $chamilo_user_info = UserManager::add($user_info); - + $chamilo_user_info = UserManager::add($user_info); + if ($chamilo_user_info && $chamilo_user_info['user_id']) { $chamilo_user_info = api_get_user_info($chamilo_user_info['user_id'], false, false, true); return array( @@ -762,16 +762,16 @@ class MigrationCustom { } } else { return $user_info; - } + } } - + //eliminar usuario usuario_eliminar UID //const TRANSACTION_TYPE_DEL_USER = 2; static function transaction_2($data) { - $uidIdPersonaId = strtoupper($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); + $chamilo_user_info_before = api_get_user_info($user_id, false, false, true); $result = UserManager::delete_user($user_id); $chamilo_user_info = api_get_user_info($user_id, false, false, true); if ($result) { @@ -795,14 +795,14 @@ 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 = strtoupper($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('intIdSede'=> $data['branch_id'], 'uididpersona' => $uidIdPersonaId)); + if ($user_id) { + $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 @@ -827,7 +827,7 @@ class MigrationCustom { ); } } - + //cambiar usuario de progr. académ. (de A a B, de A a nada, de nada a A) (como estudiante o profesor) usuario_matricula UID ORIG DEST //const TRANSACTION_TYPE_SUB_USER = 4; //subscribe user to a session static function transaction_4($data) { @@ -835,60 +835,60 @@ class MigrationCustom { $uidIdPrograma = $data['orig_id']; $uidIdProgramaDestination = $data['dest_id']; $user_id = self::get_user_id_by_persona_id($uidIdPersona); - + if (empty($user_id)) { return array( 'message' => "User does not exists in DB: $uidIdPersona", 'status_id' => self::TRANSACTION_STATUS_FAILED ); } - + //Move A to B if (!empty($uidIdPrograma) && !empty($uidIdProgramaDestination)) { $session_id = self::get_session_id_by_programa_id($uidIdPrograma); $destination_session_id = self::get_session_id_by_programa_id($uidIdProgramaDestination); - + if (!empty($session_id) && !empty($destination_session_id)) { - + $before1 = SessionManager::get_user_status_in_session($session_id, $user_id); $before2 = SessionManager::get_user_status_in_session($destination_session_id, $user_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);*/ - + //Not sure what reason use /* $extra_field_value = new ExtraFieldValue('session'); - + SESSION_CHANGE_USER_REASON_SCHEDULE = 1; SESSION_CHANGE_USER_REASON_CLASSROOM = 2; SESSION_CHANGE_USER_REASON_LOCATION = 3; SESSION_CHANGE_USER_REASON_ENROLLMENT_ANNULATION = 4; - + $extra_field_value->compare_item_values($session_id, $destination_session_id, 'aula'); - + SessionManager::compare_extra_field($session_id, $session_id, 'aula'); SessionManager::detect_reason_by_extra_field($session_id, 'sede'); SessionManager::detect_reason_by_extra_field($session_id, 'horario'); SessionManager::detect_reason_by_extra_field($session_id, 'aula');*/ - + $reason_id = SESSION_CHANGE_USER_REASON_SCHEDULE; SessionManager::change_user_session($user_id, $session_id, $destination_session_id, $reason_id); - + $befores = array($before1, $before2); - - $message = "Move Session A to Session B"; - return self::check_if_user_is_subscribe_to_session($user_id, $destination_session_id, $message, $befores); + + $message = "Move Session A to Session B"; + return self::check_if_user_is_subscribe_to_session($user_id, $destination_session_id, $message, $befores); } else { - return array( + return array( 'message' => "Session ids were not correctly setup session_id 1: $session_id Session id 2 $uidIdProgramaDestination - Move Session A to Session B", 'status_id' => self::TRANSACTION_STATUS_FAILED ); } } - + //Move A to empty - if (!empty($uidIdPrograma) && empty($uidIdProgramaDestination)) { + if (!empty($uidIdPrograma) && empty($uidIdProgramaDestination)) { $session_id = self::get_session_id_by_programa_id($uidIdPrograma); if (!empty($session_id)) { $before = SessionManager::get_user_status_in_session($session_id, $user_id); @@ -903,11 +903,11 @@ 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)) { $before = SessionManager::get_user_status_in_session($session_id, $user_id); SessionManager::suscribe_users_to_session($session_id, array($user_id), SESSION_VISIBLE_READ_ONLY, false, false); $message = 'Move empty to Session'; @@ -920,7 +920,7 @@ class MigrationCustom { } } } - + 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)) { @@ -938,17 +938,17 @@ class MigrationCustom { ); } } - + //Cursos //añadir curso curso_agregar CID //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('intIdSede'=> $data['branch_id'], 'uididcurso' => $uidCursoId)); + $uidCursoId = $data['item_id']; + $course_info = Migration::soap_call($web_service_details, 'cursoDetalles', array('intIdSede'=> $data['branch_id'], 'uididcurso' => $uidCursoId)); if ($course_info['error'] == false) { unset($course_info['error']); $course_info = CourseManager::create_course($course_info); - $course_info = api_get_course_info($course_info['code'], true); + $course_info = api_get_course_info($course_info['code'], true); if (!empty($course_info)) { return array( 'entity' => 'course', @@ -967,7 +967,7 @@ class MigrationCustom { return $course_info; } } - + //eliminar curso curso_eliminar CID //const TRANSACTION_TYPE_DEL_COURSE = 6; static function transaction_6($data) { @@ -989,25 +989,25 @@ class MigrationCustom { 'status_id' => self::TRANSACTION_STATUS_FAILED ); } - + } - + //editar detalles de curso curso_editar CID //const TRANSACTION_TYPE_EDIT_COURSE = 7; static function transaction_7($data, $web_service_details) { $uidCursoId = $data['item_id']; - $course_code = self::get_real_course_code($uidCursoId); - if (!empty($course_code)) { - $course_info = api_get_course_info($course_code, true); + $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('intIdSede'=> $data['branch_id'], 'uididcurso' => $uidCursoId)); - + if ($data_to_update['error'] == false) { //do some cleaning $data_to_update['code'] = $course_info['code']; - unset($data_to_update['error']); + unset($data_to_update['error']); CourseManager::update($data_to_update); $course_info_after = api_get_course_info($course_code, true); - + return array( 'entity' => 'course', 'before' => $course_info, @@ -1017,7 +1017,7 @@ class MigrationCustom { ); } else { return $data_to_update; - } + } } else { return array( 'message' => "couCoursese_code does not exists $course_code ", @@ -1025,7 +1025,7 @@ class MigrationCustom { ); } } - + /** * Cambiar curso de progr. académ. (de nada a A) curso_matricula CID ORIG DEST * @todo Unused ? @@ -1035,10 +1035,10 @@ class MigrationCustom { $course_code = self::get_real_course_code($data['item_id']); $uidIdPrograma = $data['orig_id']; $uidIdProgramaDestination = $data['dest_id']; - + $session_id = self::get_session_id_by_programa_id($uidIdPrograma); $destination_session_id = self::get_session_id_by_programa_id($uidIdProgramaDestination); - + if (!empty($course_code)) { if (empty($uidIdPrograma) && !empty($uidIdProgramaDestination) && !empty($destination_session_id)) { SessionManager::add_courses_to_session($destination_session_id, array($course_code)); @@ -1051,7 +1051,7 @@ class MigrationCustom { 'message' => "Session destination was not found - [dest_id] not found", 'status_id' => self::TRANSACTION_STATUS_FAILED ); - } + } } else { return array( 'message' => "Course does not exists $course_code", @@ -1059,13 +1059,13 @@ class MigrationCustom { ); } } - + //Programas académicos //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('intIdSede'=> $data['branch_id'], 'uididprograma' => $data['item_id'])); - + if ($session_info['error'] == false) { unset($session_info['error']); // check dates (only do this at session creation) @@ -1091,13 +1091,13 @@ class MigrationCustom { 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); + $uidIdPrograma = $data['item_id']; + $session_id = self::get_session_id_by_programa_id($uidIdPrograma); if (!empty($session_id)) { $session_info_before = api_get_session_info($session_id, true); SessionManager::delete_session($session_id, true); @@ -1116,15 +1116,15 @@ class MigrationCustom { ); } } - + //editar detalles de p.a. pa_editar PID // const TRANSACTION_TYPE_EDIT_SESS = 10; - static function transaction_10($data, $web_service_details) { - $uidIdPrograma = $data['item_id']; + static function transaction_10($data, $web_service_details) { + $uidIdPrograma = $data['item_id']; $session_id = self::get_session_id_by_programa_id($uidIdPrograma); - if (!empty($session_id)) { + if (!empty($session_id)) { $session_info = Migration::soap_call($web_service_details, 'programaDetalles', array('intIdSede'=> $data['branch_id'], 'uididprograma' => $data['item_id'])); - if ($session_info['error'] == false) { + if ($session_info['error'] == false) { $session_info['id'] = $session_id; unset($session_info['error']); $session_info_before = api_get_session_info($session_id, true); @@ -1139,58 +1139,58 @@ class MigrationCustom { ); } else { return $session_info; - } + } } 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']; + $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); + + $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['id'], $destination_id); //horario, aula, etc - + if ($extra_field_option_info) { $extra_field_value = new ExtraFieldValue('session'); - + //Getting info before $info_before = $extra_field_value->get_values_by_handler_and_field_id($session_id, $extra_field_info['id']); - + //Delete previous extra field value $extra_field_value->delete_values_by_handler_and_field_id($session_id, $extra_field_info['id']); - + $params = array( 'session_id' => $session_id, 'field_id' => $extra_field_info['id'], 'field_value' => $destination_id, - ); + ); $extra_field_value->save($params); - + //Getting info after $info_after = $extra_field_value->get_values_by_handler_and_field_id($session_id, $extra_field_info['id']); - + return array( 'entity' => $extra_field_variable, 'before' => $info_before, @@ -1198,7 +1198,7 @@ class MigrationCustom { '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 dest_id: $destination_id $common_message", 'status_id' => self::TRANSACTION_STATUS_FAILED @@ -1209,40 +1209,40 @@ class MigrationCustom { '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) { 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) { return self::transaction_cambiar_generic('horario', $data); - } - - //cambiar sede pa_cambiar_sede PID ORIG DEST + } + + //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) { 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) { 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) { return self::transaction_cambiar_generic('intensidad', $data); } - + //------- - + static function transaction_extra_field_agregar_generic($extra_field_variable, $original_data, $web_service_details, $type='session') { $function_name = $extra_field_variable."Detalles"; $data = Migration::soap_call($web_service_details, $function_name, array('intIdSede'=> $original_data['branch_id'], "uidid".$extra_field_variable => $original_data['item_id'])); @@ -1256,7 +1256,7 @@ class MigrationCustom { $extra_field_info = $extra_field->get_handler_field_info_by_field_variable($extra_field_variable); if ($extra_field_info) { $extra_field_option = new ExtraFieldOption($type); - + $info_before = $extra_field_option->get_field_options_by_field($extra_field_info['id']); $params = array( @@ -1267,9 +1267,9 @@ class MigrationCustom { ); $result = $extra_field_option->save_one_item($params); - + $info_after = $extra_field_option->get_field_options_by_field($extra_field_info['id']); - + if ($result) { return array( 'entity' => $extra_field_variable, @@ -1283,7 +1283,7 @@ class MigrationCustom { '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", @@ -1293,8 +1293,8 @@ class MigrationCustom { } else { return $data; } - } - + } + static function transaction_extra_field_editar_generic($extra_field_variable, $original_data, $web_service_details, $type='session') { $extra_field = new ExtraField($type); $extra_field_info = $extra_field->get_handler_field_info_by_field_variable($extra_field_variable); @@ -1304,34 +1304,34 @@ class MigrationCustom { 'status_id' => self::TRANSACTION_STATUS_FAILED ); } - - $extra_field_option = new ExtraFieldOption($type); + + $extra_field_option = new ExtraFieldOption($type); $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"; - + $params = array('intIdSede'=> $original_data['branch_id'], "uidid".$extra_field_variable => $original_data['item_id']); - - $data = Migration::soap_call($web_service_details, $function_name, $params); + + $data = Migration::soap_call($web_service_details, $function_name, $params); if ($data['error'] == false) { - + // Exceptional treatment for specific fields if ($extra_field_variable == 'aula') { $data['name'] = $original_data['branch_id'].' - '.$data['name']; } //Update 1 item if (!empty($extra_field_option_info)) { - + $info_before = $extra_field_option->get_field_options_by_field($extra_field_info['id']); - + if (count($extra_field_option_info) > 1) { //var_dump($extra_field_option_info); - //Take the first one + //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 ".$type."_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( @@ -1340,16 +1340,16 @@ class MigrationCustom { 'option_value' => $original_data['item_id'], 'option_display_text' => $data['name'], 'option_order' => null - ); + ); $extra_field_option->update($extra_field_option_info); error_log('Editing extra field: '.print_r($extra_field_option_info,1)); $options_updated[] = $option['id']; } - + $info_after = $extra_field_option->get_field_options_by_field($extra_field_info['id']); $options_updated = implode(',', $options_updated); - + return array( 'entity' => $extra_field_variable, 'before' => $info_before, @@ -1365,21 +1365,21 @@ error_log('Editing extra field: '.print_r($extra_field_option_info,1)); } } else { return $data; - } + } } - - /* Delete all options with option_value = item_id */ - static function transaction_extra_field_eliminar_generic($extra_field_variable, $original_data, $web_service_details, $type='session') { //horario + + /* Delete all options with option_value = item_id */ + static function transaction_extra_field_eliminar_generic($extra_field_variable, $original_data, $web_service_details, $type='session') { //horario $extra_field = new ExtraField($type); $extra_field_info = $extra_field->get_handler_field_info_by_field_variable($extra_field_variable); - - $extra_field_option = new ExtraFieldOption($type); + + $extra_field_option = new ExtraFieldOption($type); $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)) { - + $info_before = $extra_field_option->get_field_options_by_field($extra_field_info['id']); - + $deleting_option_ids = array(); foreach ($extra_field_option_info as $option) { //@todo Delete all horario in sessions? @@ -1389,7 +1389,7 @@ error_log('Editing extra field: '.print_r($extra_field_option_info,1)); } } $info_after = $extra_field_option->get_field_options_by_field($extra_field_info['id']); - + if (!empty($deleting_option_ids)) { $deleting_option_ids = implode(',', $deleting_option_ids); return array( @@ -1405,7 +1405,7 @@ error_log('Editing extra field: '.print_r($extra_field_option_info,1)); 'status_id' => self::TRANSACTION_STATUS_FAILED ); } - } else { + } else { return array( 'message' => "Extra field option was NOT deleted - Extra field not found in DB. Trying to locate field_variable: '$extra_field_variable' with id: '{$original_data['item_id']}'", 'status_id' => self::TRANSACTION_STATUS_FAILED @@ -1413,33 +1413,33 @@ error_log('Editing extra field: '.print_r($extra_field_option_info,1)); } } - + // Horario - // añadir horario_agregar HID + // añadir horario_agregar HID // const TRANSACTION_TYPE_ADD_SCHED = 13; static function transaction_13($data, $web_service_details) { - return 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) { 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) { 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) { 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) { @@ -1497,7 +1497,7 @@ error_log('Editing extra field: '.print_r($extra_field_option_info,1)); static function transaction_26($data, $web_service_details) { return self::transaction_extra_field_eliminar_generic('intensidad', $data, $web_service_details, 'course'); } - + // editar intfase_editar IID // const TRANSACTION_TYPE_EDIT_INTENS = 27; static function transaction_27($data, $web_service_details) { @@ -1509,42 +1509,42 @@ error_log('Editing extra field: '.print_r($extra_field_option_info,1)); static function transaction_28($data, $web_service_details) { return self::transaction_extra_field_agregar_generic('fase', $data, $web_service_details, 'course'); } - + // eliminar fase_eliminar IID // const TRANSACTION_TYPE_DEL_FASE = 29; static function transaction_29($data, $web_service_details) { return self::transaction_extra_field_eliminar_generic('fase', $data, $web_service_details, 'course'); } - + // editar fase_editar IID // const TRANSACTION_TYPE_EDIT_FASE = 30; static function transaction_30($data, $web_service_details) { return self::transaction_extra_field_editar_generic('fase', $data, $web_service_details, 'course'); } - + //custom class moved here - - static function transacciones($data) { + + static function transacciones($data) { if ($data) { - $xml = $data->transaccionesResult->any; + $xml = $data->transaccionesResult->any; // Cut the invalid XML and extract the valid chunk with the data $stripped_xml = strstr($xml, 'NewDataSet)) { + if (!empty($xml->NewDataSet)) { $transaction_list = array(); foreach ($xml->NewDataSet->Table as $item) { //this is a "Table" object - $item = (array) $item; + $item = (array) $item; $transaction_list[] = $item; } return $transaction_list; } else { error_log('No transactions found'); - } + } } else { error_log('Data is not valid'); } } - + /* object(SimpleXMLElement)#11 (5) { ["idt"]=> string(6) "354913" @@ -1559,19 +1559,19 @@ error_log('Editing extra field: '.print_r($extra_field_option_info,1)); } */ static function process_transactions($params, $web_service_details) { - $transactions = Migration::soap_call($web_service_details, 'transacciones', $params); + $transactions = Migration::soap_call($web_service_details, 'transacciones', $params); $transaction_status_list = self::get_transaction_status_list(); - - if (isset($transactions) && isset($transactions['error']) && $transactions['error'] == true) { + + if (isset($transactions) && isset($transactions['error']) && $transactions['error'] == true) { error_log($transactions['message']); } else { $counter = count($transactions); error_log("Processing ".$counter." transaction(s)"); $count = 1; if (!empty($transactions)) { - foreach ($transactions as $transaction_info) { + foreach ($transactions as $transaction_info) { //Add transactions here - error_log("Processing transaction: ".$count); + error_log("Processing transaction: ".$count); $result = self::process_transaction($transaction_info, $transaction_status_list); $count++; if ($result['error'] == true) { @@ -1585,11 +1585,11 @@ error_log('Editing extra field: '.print_r($extra_field_option_info,1)); } } } - + static function validate_transaction($transaction_info) { if (empty($transaction_info) || empty($transaction_info['transaction_id']) || empty($transaction_info['action']) || empty($transaction_info['branch_id'])) { return array( - 'id' => null, + 'id' => null, 'error' => true, 'message' => "Transaction could not be added there are some missing params: ".print_r($transaction_info, 1) ); @@ -1597,42 +1597,42 @@ error_log('Editing extra field: '.print_r($extra_field_option_info,1)); return true; } } - + /** - * + * * @param array simple return of the webservice transaction * @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(); } - + $params = array( - 'transaction_id' => isset($transaction_info['idt']) ? $transaction_info['idt'] : null, - 'action' => isset($transaction_info['ida']) ? $transaction_info['ida'] : null, + 'transaction_id' => isset($transaction_info['idt']) ? $transaction_info['idt'] : null, + 'action' => isset($transaction_info['ida']) ? $transaction_info['ida'] : null, 'item_id' => isset($transaction_info['id']) ? strtoupper($transaction_info['id']) : null, 'orig_id' => isset($transaction_info['orig']) ? $transaction_info['orig'] : null, 'branch_id' => isset($transaction_info['idsede']) ? $transaction_info['idsede'] : null, 'dest_id' => isset($transaction_info['dest']) ? $transaction_info['dest'] : null, 'status_id' => 0 ); - + $validate = self::validate_transaction($params); - + if (isset($validate['error']) && $validate['error']) { return $validate; - } - + } + if ($forced) { //Delete transaction - Migration::delete_transaction_by_transaction_id($params['transaction_id'], $params['branch_id']); + Migration::delete_transaction_by_transaction_id($params['transaction_id'], $params['branch_id']); } - + //what to do if transaction already exists? $transaction_info = Migration::get_transaction_by_transaction_id($params['transaction_id'], $params['branch_id']); - + if (empty($transaction_info)) { $transaction_id = Migration::add_transaction($params); if ($transaction_id) { @@ -1649,21 +1649,21 @@ error_log('Editing extra field: '.print_r($extra_field_option_info,1)); ); } } else { - //only process transaction if it was failed or to be executed or is 0 registered - if (in_array($transaction_info['status_id'], array(0, MigrationCustom::TRANSACTION_STATUS_FAILED, MigrationCustom::TRANSACTION_STATUS_TO_BE_EXECUTED))) { + //only process transaction if it was failed or to be executed or is 0 registered + if (in_array($transaction_info['status_id'], array(0, MigrationCustom::TRANSACTION_STATUS_FAILED, MigrationCustom::TRANSACTION_STATUS_TO_BE_EXECUTED))) { return array( - 'id' => $transaction_info['id'], + 'id' => $transaction_info['id'], 'error' => false, 'message' => "Third party transaction id #{$params['transaction_id']} was already added to Chamilo with id #{$transaction_info['id']}. Trying to execute because transaction has status: {$transaction_status_list[$transaction_info['status_id']]['title']}" ); } else { return array( - 'id' => null, + 'id' => null, 'error' => true, '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, @@ -1677,31 +1677,31 @@ error_log('Editing extra field: '.print_r($extra_field_option_info,1)); ); } } - + static function genericDetalles($data, $result_name, $params = array()) { error_log("Calling $result_name "); $original_webservice_name = $result_name; - + $result_name = $result_name.'Result'; $xml = $data->$result_name->any; - + // Cut the invalid XML and extract the valid chunk with the data - $stripped_xml = strstr($xml, 'NewDataSet)) { - $item = (array)$xml->NewDataSet->Table; + $item = (array)$xml->NewDataSet->Table; $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 $item; + } else { return array( 'error' => true, 'message' => "No data when calling web service *$original_webservice_name* Result:".print_r($data, 1)." with params: ".print_r($params, 1), @@ -1709,7 +1709,7 @@ error_log('Editing extra field: '.print_r($extra_field_option_info,1)); ); } } - + /* Returns an obj with this params object(SimpleXMLElement)#11 (7) { ["rol"]=> @@ -1734,15 +1734,15 @@ error_log('Editing extra field: '.print_r($extra_field_option_info,1)); if ($result['error'] == true) { return $result; } - - $result['status'] = $result['rol'] == 'profesor' ? COURSEMANAGER : STUDENT; + + $result['status'] = $result['rol'] == 'profesor' ? COURSEMANAGER : STUDENT; $result['phone'] = (string)$result['phone']; $result['active'] = (int)$result['bitvigencia']; $result['extra_uidIdPersona'] = strtoupper($params['uididpersona']); unset($result['rol']); return $result; } - + /* ["uididsede"]=> string(36) "7379a7d3-6dc5-42ca-9ed4-97367519f1d9" @@ -1758,32 +1758,32 @@ error_log('Editing extra field: '.print_r($extra_field_option_info,1)); string(25) "2009-09-30T00:00:00-05:00" ["access_end_date"]=> string(25) "2009-10-26T00:00:00-05:00" - + ["course_code"]=> string(36) "5b7e9b5a-5145-4a42-be48-223a70d9ad52" ["id_coach"]=> string(36) "26dbb1c1-32b7-4cf8-a81f-43d1cb231abe" - * + * */ - static function programaDetalles($data, $params) { + static function programaDetalles($data, $params) { $result = self::genericDetalles($data, __FUNCTION__, $params); if ($result['error'] == true) { return $result; } - + //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_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']; @@ -1791,47 +1791,47 @@ error_log('Editing extra field: '.print_r($extra_field_option_info,1)); $extra_field_info = $extra_field->get_handler_field_info_by_field_variable('aula'); $extra_field_option_info_aula = $extra_field_option->get_field_option_by_field_and_option($extra_field_info['id'], $result['uididaula']); - + $aula_name = null; if (isset($extra_field_option_info_aula[0]) && !empty($extra_field_option_info_sede[0]['option_display_text'])) { $aula_name = $extra_field_option_info_aula[0]['option_display_text']; } - + //Getting horario - $extra_field_info = $extra_field->get_handler_field_info_by_field_variable('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'] = substr($sede_name,13).' - '.$result['chrperiodo']." - ".$course_info['title'].' '.$horario_name.' '.$aula_name; - + $result['extra_uidIdPrograma'] = strtoupper($params['uididprograma']); $result['extra_horario'] = strtoupper($result['uididhorario']); $result['extra_sede'] = strtoupper($result['uididsede']); $result['extra_aula'] = strtoupper($result['uididaula']); $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']); //$result['estado'] = intval($result['estado']); - + //Searching id_coach $result['id_coach'] = MigrationCustom::get_user_id_by_persona_id($result['id_coach']); - + unset($result['uididprograma']); unset($result['uididsede']); unset($result['uididhorario']); unset($result['chrperiodo']); - + return $result; } - + /** ["name"]=> string(42) "(A02SA) Pronunciacion Two Sabado Acelerado" @@ -1844,29 +1844,29 @@ error_log('Editing extra field: '.print_r($extra_field_option_info,1)); ["meses"]=> string(3) "2 " */ - static function cursoDetalles($data, $params) { + static function cursoDetalles($data, $params) { $result = self::genericDetalles($data, __FUNCTION__, $params); if ($result['error'] == true) { return $result; } - + $result['title'] = $result['name']; $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']); unset($result['fase']); unset($result['name']); unset($result['meses']); - + return $result; } - - /*Calling frecuenciaDetalles + + /*Calling frecuenciaDetalles array(1) { ["name"]=> string(8) "Sabatino" @@ -1875,19 +1875,19 @@ error_log('Editing extra field: '.print_r($extra_field_option_info,1)); $result = self::genericDetalles($data, __FUNCTION__, $params); if ($result['error'] == true) { return $result; - } - return $result; + } + return $result; } - + static function frecuenciaDetalles($data, $params) { - $result = self::genericDetalles($data, __FUNCTION__, $params); + $result = self::genericDetalles($data, __FUNCTION__, $params); if ($result['error'] == true) { return $result; - } + } return $result; } - - /*Calling intensidadDetalles + + /*Calling intensidadDetalles array(1) { ["name"]=> string(6) "Normal" @@ -1897,13 +1897,13 @@ error_log('Editing extra field: '.print_r($extra_field_option_info,1)); $result = self::genericDetalles($data, __FUNCTION__, $params); if ($result['error'] == true) { return $result; - } + } //$result['option_value'] = $params['uididintensidad']; return $result; } - + /*Calling mesesDetalles - Calling mesesDetalles + Calling mesesDetalles array(1) { ["name"]=> string(3) "4 " @@ -1912,18 +1912,18 @@ error_log('Editing extra field: '.print_r($extra_field_option_info,1)); $result = self::genericDetalles($data, __FUNCTION__, $params); if ($result['error'] == true) { return $result; - } + } return $result; } - + static function aulaDetalles($data, $params) { $result = self::genericDetalles($data, __FUNCTION__, $params); if ($result['error'] == true) { return $result; - } - return $result; + } + return $result; } - /*Calling sedeDetalles + /*Calling sedeDetalles array(1) { ["name"]=> string(23) "Sede Miraflores" @@ -1933,12 +1933,12 @@ error_log('Editing extra field: '.print_r($extra_field_option_info,1)); $result = self::genericDetalles($data, __FUNCTION__, $params); if ($result['error'] == true) { return $result; - } + } return $result; } - + /* - Calling horarioDetalles + Calling horarioDetalles array(3) { ["start"]=> string(5) "08:45" @@ -1947,14 +1947,14 @@ error_log('Editing extra field: '.print_r($extra_field_option_info,1)); ["id"]=> string(2) "62" }*/ - static function horarioDetalles($data, $params) { - $result = self::genericDetalles($data, __FUNCTION__, $params); + static function horarioDetalles($data, $params) { + $result = self::genericDetalles($data, __FUNCTION__, $params); if ($result['error'] == true) { return $result; } - + $result['name'] = $result['id'].' '.$result['start'].' '.$result['end']; - //$result['option_value'] = $params['uididhorario']; + //$result['option_value'] = $params['uididhorario']; unset($result['id']); unset($result['start']); unset($result['end']); @@ -1967,7 +1967,7 @@ error_log('Editing extra field: '.print_r($extra_field_option_info,1)); * @return bool Always returns true */ static function fix_access_dates(&$data) { - // Check the $data array for access_start_date, access_end_date, + // Check the $data array for access_start_date, access_end_date, // coach_access_start_date and coach_access_end_date. If any is not // defined, reuse the period or other dates to fill it $nt = '0000-00-00 00:00:00'; //declar a "null time" @@ -2036,6 +2036,6 @@ error_log('Editing extra field: '.print_r($extra_field_option_info,1)); $params['access_end_date'] = $aed; $params['coach_access_start_date'] = $casd; $params['coach_access_end_date'] = $caed; - return true; + return true; } }