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