|
@@ -1,7 +1,7 @@
|
|
|
<?php
|
|
|
-
|
|
|
/**
|
|
|
* Scipt defining the Migration class
|
|
|
+ * @package chamilo.migration
|
|
|
*/
|
|
|
|
|
|
/**
|
|
@@ -161,7 +161,13 @@ class Migration {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ /**
|
|
|
+ * Call the SOAP web service as detailed in the parameters
|
|
|
+ * @param array Settings for the WS call
|
|
|
+ * @param string Name of the funcion to call
|
|
|
+ * @param 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()) {
|
|
|
// Create the client instance
|
|
|
$url = $web_service_params['url'];
|
|
@@ -199,7 +205,11 @@ class Migration {
|
|
|
}
|
|
|
error_log("\n--End--");
|
|
|
}
|
|
|
-
|
|
|
+ /**
|
|
|
+ * Test a series of hand-crafted transactions
|
|
|
+ * @param array of parameters that would usually get passed to the web service
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
function test_transactions($web_service_params) {
|
|
|
error_log('search_transactions');
|
|
|
//Just for tests
|
|
@@ -536,7 +546,11 @@ class Migration {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+ /**
|
|
|
+ * Adds a given transaction to the transactions table in Chamilo
|
|
|
+ * @param array The transaction details (array('id' => ..., 'action' => '...', ...))
|
|
|
+ * @return int The ID of the transaction row in Chamilo's table
|
|
|
+ */
|
|
|
static function add_transaction($params) {
|
|
|
$table = Database::get_main_table(TABLE_MIGRATION_TRANSACTION);
|
|
|
if (isset($params['id'])) {
|
|
@@ -550,7 +564,10 @@ class Migration {
|
|
|
}
|
|
|
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);
|
|
|
$sql = "SELECT DISTINCT branch_id FROM $table ORDER BY branch_id";
|
|
@@ -558,7 +575,12 @@ class Migration {
|
|
|
return Database::store_result($result, 'ASSOC');
|
|
|
}
|
|
|
|
|
|
- /** Get unprocesses */
|
|
|
+ /**
|
|
|
+ * 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)
|
|
|
+ * @param int Branch ID
|
|
|
+ * @return array Associative array containing the details of the transactions requested
|
|
|
+ */
|
|
|
static function get_transactions($status_id = 0, $branch_id = null) {
|
|
|
$table = Database::get_main_table(TABLE_MIGRATION_TRANSACTION);
|
|
|
$branch_id = intval($branch_id);
|
|
@@ -572,7 +594,11 @@ class Migration {
|
|
|
$result = Database::query($sql);
|
|
|
return Database::store_result($result, 'ASSOC');
|
|
|
}
|
|
|
-
|
|
|
+ /**
|
|
|
+ * 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);
|
|
|
$branch_id = intval($branch_id);
|
|
@@ -584,7 +610,11 @@ class Migration {
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
|
-
|
|
|
+ /**
|
|
|
+ * Gets the latest 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_by_branch($branch_id) {
|
|
|
$table = Database::get_main_table(TABLE_MIGRATION_TRANSACTION);
|
|
|
$branch_id = intval($branch_id);
|
|
@@ -596,12 +626,21 @@ class Migration {
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
|
-
|
|
|
+ /**
|
|
|
+ * Gets a specific transaction using select parameters
|
|
|
+ * @param array Select parameters (associative array)
|
|
|
+ * @param string Type of result set expected
|
|
|
+ * @return array Results as requested
|
|
|
+ */
|
|
|
static function get_transaction_by_params($params, $type_result = 'all') {
|
|
|
$table = Database::get_main_table(TABLE_MIGRATION_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);
|
|
@@ -619,7 +658,11 @@ class Migration {
|
|
|
}
|
|
|
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
|
|
|
+ * @return The operation results
|
|
|
+ */
|
|
|
function search_transactions($web_service_params) {
|
|
|
error_log('search_transactions');
|
|
|
//Testing transactions
|
|
@@ -644,8 +687,11 @@ class Migration {
|
|
|
$web_service_params['class']::process_transactions($web_service_params, array('ultimo' => 354911, 'cantidad' => 2));
|
|
|
}
|
|
|
|
|
|
- /* Load transactions */
|
|
|
-
|
|
|
+ /**
|
|
|
+ * Loads a specific set of transactions from the transactions table and executes them
|
|
|
+ * @param array Transactions filter
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
function load_transactions($matches) {
|
|
|
$actions = $matches['actions'];
|
|
|
|
|
@@ -733,7 +779,11 @@ class Migration {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ /**
|
|
|
+ * 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'=>'...',...)))
|
|
|
+ * @return mixed Modified field
|
|
|
+ */
|
|
|
function prepare_field_match($table) {
|
|
|
$sql_select_fields = array();
|
|
|
if (!empty($table['fields_match'])) {
|
|
@@ -754,7 +804,12 @@ class Migration {
|
|
|
}
|
|
|
return $sql_select_fields;
|
|
|
}
|
|
|
-
|
|
|
+ /**
|
|
|
+ * Executes a fields match
|
|
|
+ * @param array List of fields that must be matched ('fields_match' => array(0=>array('orig'=>'...','dest'=>'...',...)))
|
|
|
+ * @param array Row of data
|
|
|
+ * @param array Extra fields table definition
|
|
|
+ */
|
|
|
function execute_field_match($table, $row, $extra_fields = array()) {
|
|
|
//error_log('execute_field_match');
|
|
|
$dest_row = array();
|
|
@@ -946,5 +1001,4 @@ class Migration {
|
|
|
}
|
|
|
return $extra_fields;
|
|
|
}
|
|
|
-
|
|
|
}
|