function um_db_create_update($type, $component_name, $id_package, $update, $db_data = NULL) { global $db; global $config; if ($id_package == 0) { return false; } $component = um_db_get_component($component_name); if (!$component) { return; } $values = array('type' => $type, 'component' => $component_name, 'id_update_package' => $id_package); switch ($type) { case 'code': $filepath = realpath($component->path . '/' . $update->filename); $values['svn_version'] = um_file_get_svn_revision($filepath); case 'binary': $last_update = um_update_get_last_from_filename($component_name, $update->filename); $filepath = realpath($component->path . '/' . $update->filename); $values['checksum'] = md5_file($filepath); if ($last_update && $last_update->checksum == $values['checksum']) { return false; } /* Add relative path if has one */ if ($component->relative_path != '') { $values['filename'] = $component->relative_path . $update->filename; } else { $values['filename'] = $update->filename; } $values['data'] = um_file_uuencode($filepath); if ($last_update && $last_update->checksum != '') { $values['previous_checksum'] = $last_update->checksum; } break; case 'db_data': if ($db_data === NULL) { return false; } $component_db = um_db_get_component_db($update->id_component_db); $field = $component_db->field_name; $values['db_field_value'] = $db_data->{$field}; $values['id_component_db'] = $update->id_component_db; switch ($config["dbtype"]) { case "mysql": $values['data'] = um_data_encode('INSERT INTO `' . $component_db->table_name . '` (`' . implode('`,`', array_keys(get_object_vars($db_data))) . '`) VALUES (\'' . implode('\',\'', get_object_vars($db_data)) . '\')'); break; case "postgresql": $values['data'] = um_data_encode('INSERT INTO "' . $component_db->table_name . '" ("' . implode('", "', array_keys(get_object_vars($db_data))) . '") VALUES (\'' . implode('\',\'', get_object_vars($db_data)) . '\')'); break; case "oracle": $values['data'] = um_data_encode('INSERT INTO ' . $component_db->table_name . ' (' . implode(', ', array_keys(get_object_vars($db_data))) . ') VALUES (\'' . implode('\',\'', get_object_vars($db_data)) . '\')'); break; } break; case 'db_schema': $values['data'] = um_data_encode($update->data); break; default: return false; } $result = process_sql_insert(DB_PREFIX . 'tupdate', $values); if ($result === false) { echo '<strong>Error creating update</strong> <br />'; return false; } return true; }
function um_db_get_package_updates($id_package) { $result = process_sql('SELECT COUNT(*) FROM ' . DB_PREFIX . 'tupdate WHERE id_update_package = ' . $id_package); if ($result === false) { echo '<strong>Error getting all packages ' . $id_package . '</strong><br />' . 'SELECT * FROM ' . DB_PREFIX . 'tupdate WHERE id_update_package = ' . $id_package; return NULL; } $result = process_sql('SELECT * FROM ' . DB_PREFIX . 'tupdate WHERE id_update_package = ' . $id_package); $cont = 0; $updates = array(); while (true) { $update = um_std_from_result($result, $cont); if ($update === false) { break; } $component_db = um_db_get_component_db($update->id_component_db); $update->db_table = $component_db->table_name; $update->db_field = $component_db->field_name; $update->order = $component_db->order; $updates[$update->id] = $update; $cont++; } return $updates; }