aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/db/db_tools.php
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/includes/db/db_tools.php')
-rw-r--r--phpBB/includes/db/db_tools.php2477
1 files changed, 0 insertions, 2477 deletions
diff --git a/phpBB/includes/db/db_tools.php b/phpBB/includes/db/db_tools.php
deleted file mode 100644
index f63ff18cbe..0000000000
--- a/phpBB/includes/db/db_tools.php
+++ /dev/null
@@ -1,2477 +0,0 @@
-<?php
-/**
-*
-* @package dbal
-* @version $Id$
-* @copyright (c) 2007 phpBB Group
-* @license http://opensource.org/licenses/gpl-license.php GNU Public License
-*
-*/
-
-/**
-* @ignore
-*/
-if (!defined('IN_PHPBB'))
-{
- exit;
-}
-
-/**
-* Database Tools for handling cross-db actions such as altering columns, etc.
-* Currently not supported is returning SQL for creating tables.
-*
-* @package dbal
-* @note currently not used within phpBB3, but may be utilized later.
-*/
-class phpbb_db_tools
-{
- /**
- * Current sql layer
- */
- var $sql_layer = '';
-
- /**
- * @var object DB object
- */
- var $db = NULL;
-
- /**
- * The Column types for every database we support
- * @var array
- */
- var $dbms_type_map = array(
- 'mysql_41' => array(
- 'INT:' => 'int(%d)',
- 'BINT' => 'bigint(20)',
- 'UINT' => 'mediumint(8) UNSIGNED',
- 'UINT:' => 'int(%d) UNSIGNED',
- 'TINT:' => 'tinyint(%d)',
- 'USINT' => 'smallint(4) UNSIGNED',
- 'BOOL' => 'tinyint(1) UNSIGNED',
- 'VCHAR' => 'varchar(255)',
- 'VCHAR:' => 'varchar(%d)',
- 'CHAR:' => 'char(%d)',
- 'XSTEXT' => 'text',
- 'XSTEXT_UNI'=> 'varchar(100)',
- 'STEXT' => 'text',
- 'STEXT_UNI' => 'varchar(255)',
- 'TEXT' => 'text',
- 'TEXT_UNI' => 'text',
- 'MTEXT' => 'mediumtext',
- 'MTEXT_UNI' => 'mediumtext',
- 'TIMESTAMP' => 'int(11) UNSIGNED',
- 'DECIMAL' => 'decimal(5,2)',
- 'DECIMAL:' => 'decimal(%d,2)',
- 'PDECIMAL' => 'decimal(6,3)',
- 'PDECIMAL:' => 'decimal(%d,3)',
- 'VCHAR_UNI' => 'varchar(255)',
- 'VCHAR_UNI:'=> 'varchar(%d)',
- 'VCHAR_CI' => 'varchar(255)',
- 'VARBINARY' => 'varbinary(255)',
- ),
-
- 'mysql_40' => array(
- 'INT:' => 'int(%d)',
- 'BINT' => 'bigint(20)',
- 'UINT' => 'mediumint(8) UNSIGNED',
- 'UINT:' => 'int(%d) UNSIGNED',
- 'TINT:' => 'tinyint(%d)',
- 'USINT' => 'smallint(4) UNSIGNED',
- 'BOOL' => 'tinyint(1) UNSIGNED',
- 'VCHAR' => 'varbinary(255)',
- 'VCHAR:' => 'varbinary(%d)',
- 'CHAR:' => 'binary(%d)',
- 'XSTEXT' => 'blob',
- 'XSTEXT_UNI'=> 'blob',
- 'STEXT' => 'blob',
- 'STEXT_UNI' => 'blob',
- 'TEXT' => 'blob',
- 'TEXT_UNI' => 'blob',
- 'MTEXT' => 'mediumblob',
- 'MTEXT_UNI' => 'mediumblob',
- 'TIMESTAMP' => 'int(11) UNSIGNED',
- 'DECIMAL' => 'decimal(5,2)',
- 'DECIMAL:' => 'decimal(%d,2)',
- 'PDECIMAL' => 'decimal(6,3)',
- 'PDECIMAL:' => 'decimal(%d,3)',
- 'VCHAR_UNI' => 'blob',
- 'VCHAR_UNI:'=> array('varbinary(%d)', 'limit' => array('mult', 3, 255, 'blob')),
- 'VCHAR_CI' => 'blob',
- 'VARBINARY' => 'varbinary(255)',
- ),
-
- 'firebird' => array(
- 'INT:' => 'INTEGER',
- 'BINT' => 'DOUBLE PRECISION',
- 'UINT' => 'INTEGER',
- 'UINT:' => 'INTEGER',
- 'TINT:' => 'INTEGER',
- 'USINT' => 'INTEGER',
- 'BOOL' => 'INTEGER',
- 'VCHAR' => 'VARCHAR(255) CHARACTER SET NONE',
- 'VCHAR:' => 'VARCHAR(%d) CHARACTER SET NONE',
- 'CHAR:' => 'CHAR(%d) CHARACTER SET NONE',
- 'XSTEXT' => 'BLOB SUB_TYPE TEXT CHARACTER SET NONE',
- 'STEXT' => 'BLOB SUB_TYPE TEXT CHARACTER SET NONE',
- 'TEXT' => 'BLOB SUB_TYPE TEXT CHARACTER SET NONE',
- 'MTEXT' => 'BLOB SUB_TYPE TEXT CHARACTER SET NONE',
- 'XSTEXT_UNI'=> 'VARCHAR(100) CHARACTER SET UTF8',
- 'STEXT_UNI' => 'VARCHAR(255) CHARACTER SET UTF8',
- 'TEXT_UNI' => 'BLOB SUB_TYPE TEXT CHARACTER SET UTF8',
- 'MTEXT_UNI' => 'BLOB SUB_TYPE TEXT CHARACTER SET UTF8',
- 'TIMESTAMP' => 'INTEGER',
- 'DECIMAL' => 'DOUBLE PRECISION',
- 'DECIMAL:' => 'DOUBLE PRECISION',
- 'PDECIMAL' => 'DOUBLE PRECISION',
- 'PDECIMAL:' => 'DOUBLE PRECISION',
- 'VCHAR_UNI' => 'VARCHAR(255) CHARACTER SET UTF8',
- 'VCHAR_UNI:'=> 'VARCHAR(%d) CHARACTER SET UTF8',
- 'VCHAR_CI' => 'VARCHAR(255) CHARACTER SET UTF8',
- 'VARBINARY' => 'CHAR(255) CHARACTER SET NONE',
- ),
-
- 'mssql' => array(
- 'INT:' => '[int]',
- 'BINT' => '[float]',
- 'UINT' => '[int]',
- 'UINT:' => '[int]',
- 'TINT:' => '[int]',
- 'USINT' => '[int]',
- 'BOOL' => '[int]',
- 'VCHAR' => '[varchar] (255)',
- 'VCHAR:' => '[varchar] (%d)',
- 'CHAR:' => '[char] (%d)',
- 'XSTEXT' => '[varchar] (1000)',
- 'STEXT' => '[varchar] (3000)',
- 'TEXT' => '[varchar] (8000)',
- 'MTEXT' => '[text]',
- 'XSTEXT_UNI'=> '[varchar] (100)',
- 'STEXT_UNI' => '[varchar] (255)',
- 'TEXT_UNI' => '[varchar] (4000)',
- 'MTEXT_UNI' => '[text]',
- 'TIMESTAMP' => '[int]',
- 'DECIMAL' => '[float]',
- 'DECIMAL:' => '[float]',
- 'PDECIMAL' => '[float]',
- 'PDECIMAL:' => '[float]',
- 'VCHAR_UNI' => '[varchar] (255)',
- 'VCHAR_UNI:'=> '[varchar] (%d)',
- 'VCHAR_CI' => '[varchar] (255)',
- 'VARBINARY' => '[varchar] (255)',
- ),
-
- 'mssqlnative' => array(
- 'INT:' => '[int]',
- 'BINT' => '[float]',
- 'UINT' => '[int]',
- 'UINT:' => '[int]',
- 'TINT:' => '[int]',
- 'USINT' => '[int]',
- 'BOOL' => '[int]',
- 'VCHAR' => '[varchar] (255)',
- 'VCHAR:' => '[varchar] (%d)',
- 'CHAR:' => '[char] (%d)',
- 'XSTEXT' => '[varchar] (1000)',
- 'STEXT' => '[varchar] (3000)',
- 'TEXT' => '[varchar] (8000)',
- 'MTEXT' => '[text]',
- 'XSTEXT_UNI'=> '[varchar] (100)',
- 'STEXT_UNI' => '[varchar] (255)',
- 'TEXT_UNI' => '[varchar] (4000)',
- 'MTEXT_UNI' => '[text]',
- 'TIMESTAMP' => '[int]',
- 'DECIMAL' => '[float]',
- 'DECIMAL:' => '[float]',
- 'PDECIMAL' => '[float]',
- 'PDECIMAL:' => '[float]',
- 'VCHAR_UNI' => '[varchar] (255)',
- 'VCHAR_UNI:'=> '[varchar] (%d)',
- 'VCHAR_CI' => '[varchar] (255)',
- 'VARBINARY' => '[varchar] (255)',
- ),
-
- 'oracle' => array(
- 'INT:' => 'number(%d)',
- 'BINT' => 'number(20)',
- 'UINT' => 'number(8)',
- 'UINT:' => 'number(%d)',
- 'TINT:' => 'number(%d)',
- 'USINT' => 'number(4)',
- 'BOOL' => 'number(1)',
- 'VCHAR' => 'varchar2(255)',
- 'VCHAR:' => 'varchar2(%d)',
- 'CHAR:' => 'char(%d)',
- 'XSTEXT' => 'varchar2(1000)',
- 'STEXT' => 'varchar2(3000)',
- 'TEXT' => 'clob',
- 'MTEXT' => 'clob',
- 'XSTEXT_UNI'=> 'varchar2(300)',
- 'STEXT_UNI' => 'varchar2(765)',
- 'TEXT_UNI' => 'clob',
- 'MTEXT_UNI' => 'clob',
- 'TIMESTAMP' => 'number(11)',
- 'DECIMAL' => 'number(5, 2)',
- 'DECIMAL:' => 'number(%d, 2)',
- 'PDECIMAL' => 'number(6, 3)',
- 'PDECIMAL:' => 'number(%d, 3)',
- 'VCHAR_UNI' => 'varchar2(765)',
- 'VCHAR_UNI:'=> array('varchar2(%d)', 'limit' => array('mult', 3, 765, 'clob')),
- 'VCHAR_CI' => 'varchar2(255)',
- 'VARBINARY' => 'raw(255)',
- ),
-
- 'sqlite' => array(
- 'INT:' => 'int(%d)',
- 'BINT' => 'bigint(20)',
- 'UINT' => 'INTEGER UNSIGNED', //'mediumint(8) UNSIGNED',
- 'UINT:' => 'INTEGER UNSIGNED', // 'int(%d) UNSIGNED',
- 'TINT:' => 'tinyint(%d)',
- 'USINT' => 'INTEGER UNSIGNED', //'mediumint(4) UNSIGNED',
- 'BOOL' => 'INTEGER UNSIGNED', //'tinyint(1) UNSIGNED',
- 'VCHAR' => 'varchar(255)',
- 'VCHAR:' => 'varchar(%d)',
- 'CHAR:' => 'char(%d)',
- 'XSTEXT' => 'text(65535)',
- 'STEXT' => 'text(65535)',
- 'TEXT' => 'text(65535)',
- 'MTEXT' => 'mediumtext(16777215)',
- 'XSTEXT_UNI'=> 'text(65535)',
- 'STEXT_UNI' => 'text(65535)',
- 'TEXT_UNI' => 'text(65535)',
- 'MTEXT_UNI' => 'mediumtext(16777215)',
- 'TIMESTAMP' => 'INTEGER UNSIGNED', //'int(11) UNSIGNED',
- 'DECIMAL' => 'decimal(5,2)',
- 'DECIMAL:' => 'decimal(%d,2)',
- 'PDECIMAL' => 'decimal(6,3)',
- 'PDECIMAL:' => 'decimal(%d,3)',
- 'VCHAR_UNI' => 'varchar(255)',
- 'VCHAR_UNI:'=> 'varchar(%d)',
- 'VCHAR_CI' => 'varchar(255)',
- 'VARBINARY' => 'blob',
- ),
-
- 'postgres' => array(
- 'INT:' => 'INT4',
- 'BINT' => 'INT8',
- 'UINT' => 'INT4', // unsigned
- 'UINT:' => 'INT4', // unsigned
- 'USINT' => 'INT2', // unsigned
- 'BOOL' => 'INT2', // unsigned
- 'TINT:' => 'INT2',
- 'VCHAR' => 'varchar(255)',
- 'VCHAR:' => 'varchar(%d)',
- 'CHAR:' => 'char(%d)',
- 'XSTEXT' => 'varchar(1000)',
- 'STEXT' => 'varchar(3000)',
- 'TEXT' => 'varchar(8000)',
- 'MTEXT' => 'TEXT',
- 'XSTEXT_UNI'=> 'varchar(100)',
- 'STEXT_UNI' => 'varchar(255)',
- 'TEXT_UNI' => 'varchar(4000)',
- 'MTEXT_UNI' => 'TEXT',
- 'TIMESTAMP' => 'INT4', // unsigned
- 'DECIMAL' => 'decimal(5,2)',
- 'DECIMAL:' => 'decimal(%d,2)',
- 'PDECIMAL' => 'decimal(6,3)',
- 'PDECIMAL:' => 'decimal(%d,3)',
- 'VCHAR_UNI' => 'varchar(255)',
- 'VCHAR_UNI:'=> 'varchar(%d)',
- 'VCHAR_CI' => 'varchar_ci',
- 'VARBINARY' => 'bytea',
- ),
- );
-
- /**
- * A list of types being unsigned for better reference in some db's
- * @var array
- */
- var $unsigned_types = array('UINT', 'UINT:', 'USINT', 'BOOL', 'TIMESTAMP');
-
- /**
- * A list of supported DBMS. We change this class to support more DBMS, the DBMS itself only need to follow some rules.
- * @var array
- */
- var $supported_dbms = array('firebird', 'mssql', 'mssqlnative', 'mysql_40', 'mysql_41', 'oracle', 'postgres', 'sqlite');
-
- /**
- * This is set to true if user only wants to return the 'to-be-executed' SQL statement(s) (as an array).
- * This mode has no effect on some methods (inserting of data for example). This is expressed within the methods command.
- */
- var $return_statements = false;
-
- /**
- * Constructor. Set DB Object and set {@link $return_statements return_statements}.
- *
- * @param phpbb_dbal $db DBAL object
- * @param bool $return_statements True if only statements should be returned and no SQL being executed
- */
- function phpbb_db_tools(&$db, $return_statements = false)
- {
- $this->db = $db;
- $this->return_statements = $return_statements;
-
- // Determine mapping database type
- switch ($this->db->sql_layer)
- {
- case 'mysql':
- $this->sql_layer = 'mysql_40';
- break;
-
- case 'mysql4':
- if (version_compare($this->db->sql_server_info(true), '4.1.3', '>='))
- {
- $this->sql_layer = 'mysql_41';
- }
- else
- {
- $this->sql_layer = 'mysql_40';
- }
- break;
-
- case 'mysqli':
- $this->sql_layer = 'mysql_41';
- break;
-
- case 'mssql':
- case 'mssql_odbc':
- $this->sql_layer = 'mssql';
- break;
-
- case 'mssqlnative':
- $this->sql_layer = 'mssqlnative';
- break;
-
- default:
- $this->sql_layer = $this->db->sql_layer;
- break;
- }
- }
-
- /**
- * Gets a list of tables in the database.
- *
- * @return array Array of table names (all lower case)
- */
- function sql_list_tables()
- {
- switch ($this->db->sql_layer)
- {
- case 'mysql':
- case 'mysql4':
- case 'mysqli':
- $sql = 'SHOW TABLES';
- break;
-
- case 'sqlite':
- $sql = 'SELECT name
- FROM sqlite_master
- WHERE type = "table"';
- break;
-
- case 'mssql':
- case 'mssql_odbc':
- case 'mssqlnative':
- $sql = "SELECT name
- FROM sysobjects
- WHERE type='U'";
- break;
-
- case 'postgres':
- $sql = 'SELECT relname
- FROM pg_stat_user_tables';
- break;
-
- case 'firebird':
- $sql = 'SELECT rdb$relation_name
- FROM rdb$relations
- WHERE rdb$view_source is null
- AND rdb$system_flag = 0';
- break;
-
- case 'oracle':
- $sql = 'SELECT table_name
- FROM USER_TABLES';
- break;
- }
-
- $result = $this->db->sql_query($sql);
-
- $tables = array();
- while ($row = $this->db->sql_fetchrow($result))
- {
- $name = current($row);
- $tables[$name] = $name;
- }
- $this->db->sql_freeresult($result);
-
- return $tables;
- }
-
- /**
- * Check if table exists
- *
- *
- * @param string $table_name The table name to check for
- * @return bool true if table exists, else false
- */
- function sql_table_exists($table_name)
- {
- $this->db->sql_return_on_error(true);
- $result = $this->db->sql_query_limit('SELECT * FROM ' . $table_name, 1);
- $this->db->sql_return_on_error(false);
-
- if ($result)
- {
- $this->db->sql_freeresult($result);
- return true;
- }
-
- return false;
- }
-
- /**
- * Create SQL Table
- *
- * @param string $table_name The table name to create
- * @param array $table_data Array containing table data.
- * @return array Statements if $return_statements is true.
- */
- function sql_create_table($table_name, $table_data)
- {
- // holds the DDL for a column
- $columns = $statements = array();
-
- if ($this->sql_table_exists($table_name))
- {
- return $this->_sql_run_sql($statements);
- }
-
- // Begin transaction
- $statements[] = 'begin';
-
- // Determine if we have created a PRIMARY KEY in the earliest
- $primary_key_gen = false;
-
- // Determine if the table must be created with TEXTIMAGE
- $create_textimage = false;
-
- // Determine if the table requires a sequence
- $create_sequence = false;
-
- // Begin table sql statement
- switch ($this->sql_layer)
- {
- case 'mssql':
- case 'mssqlnative':
- $table_sql = 'CREATE TABLE [' . $table_name . '] (' . "\n";
- break;
-
- default:
- $table_sql = 'CREATE TABLE ' . $table_name . ' (' . "\n";
- break;
- }
-
- // Iterate through the columns to create a table
- foreach ($table_data['COLUMNS'] as $column_name => $column_data)
- {
- // here lies an array, filled with information compiled on the column's data
- $prepared_column = $this->sql_prepare_column_data($table_name, $column_name, $column_data);
-
- if (isset($prepared_column['auto_increment']) && strlen($column_name) > 26) // "${column_name}_gen"
- {
- trigger_error("Index name '${column_name}_gen' on table '$table_name' is too long. The maximum auto increment column length is 26 characters.", E_USER_ERROR);
- }
-
- // here we add the definition of the new column to the list of columns
- switch ($this->sql_layer)
- {
- case 'mssql':
- case 'mssqlnative':
- $columns[] = "\t [{$column_name}] " . $prepared_column['column_type_sql_default'];
- break;
-
- default:
- $columns[] = "\t {$column_name} " . $prepared_column['column_type_sql'];
- break;
- }
-
- // see if we have found a primary key set due to a column definition if we have found it, we can stop looking
- if (!$primary_key_gen)
- {
- $primary_key_gen = isset($prepared_column['primary_key_set']) && $prepared_column['primary_key_set'];
- }
-
- // create textimage DDL based off of the existance of certain column types
- if (!$create_textimage)
- {
- $create_textimage = isset($prepared_column['textimage']) && $prepared_column['textimage'];
- }
-
- // create sequence DDL based off of the existance of auto incrementing columns
- if (!$create_sequence && isset($prepared_column['auto_increment']) && $prepared_column['auto_increment'])
- {
- $create_sequence = $column_name;
- }
- }
-
- // this makes up all the columns in the create table statement
- $table_sql .= implode(",\n", $columns);
-
- // Close the table for two DBMS and add to the statements
- switch ($this->sql_layer)
- {
- case 'firebird':
- $table_sql .= "\n);";
- $statements[] = $table_sql;
- break;
-
- case 'mssql':
- case 'mssqlnative':
- $table_sql .= "\n) ON [PRIMARY]" . (($create_textimage) ? ' TEXTIMAGE_ON [PRIMARY]' : '');
- $statements[] = $table_sql;
- break;
- }
-
- // we have yet to create a primary key for this table,
- // this means that we can add the one we really wanted instead
- if (!$primary_key_gen)
- {
- // Write primary key
- if (isset($table_data['PRIMARY_KEY']))
- {
- if (!is_array($table_data['PRIMARY_KEY']))
- {
- $table_data['PRIMARY_KEY'] = array($table_data['PRIMARY_KEY']);
- }
-
- switch ($this->sql_layer)
- {
- case 'mysql_40':
- case 'mysql_41':
- case 'postgres':
- case 'sqlite':
- $table_sql .= ",\n\t PRIMARY KEY (" . implode(', ', $table_data['PRIMARY_KEY']) . ')';
- break;
-
- case 'firebird':
- case 'mssql':
- case 'mssqlnative':
- // We need the data here
- $old_return_statements = $this->return_statements;
- $this->return_statements = true;
-
- $primary_key_stmts = $this->sql_create_primary_key($table_name, $table_data['PRIMARY_KEY']);
- foreach ($primary_key_stmts as $pk_stmt)
- {
- $statements[] = $pk_stmt;
- }
-
- $this->return_statements = $old_return_statements;
- break;
-
- case 'oracle':
- $table_sql .= ",\n\t CONSTRAINT pk_{$table_name} PRIMARY KEY (" . implode(', ', $table_data['PRIMARY_KEY']) . ')';
- break;
- }
- }
- }
-
- // close the table
- switch ($this->sql_layer)
- {
- case 'mysql_41':
- // make sure the table is in UTF-8 mode
- $table_sql .= "\n) CHARACTER SET `utf8` COLLATE `utf8_bin`;";
- $statements[] = $table_sql;
- break;
-
- case 'mysql_40':
- case 'sqlite':
- $table_sql .= "\n);";
- $statements[] = $table_sql;
- break;
-
- case 'postgres':
- // do we need to add a sequence for auto incrementing columns?
- if ($create_sequence)
- {
- $statements[] = "CREATE SEQUENCE {$table_name}_seq;";
- }
-
- $table_sql .= "\n);";
- $statements[] = $table_sql;
- break;
-
- case 'oracle':
- $table_sql .= "\n)";
- $statements[] = $table_sql;
-
- // do we need to add a sequence and a tigger for auto incrementing columns?
- if ($create_sequence)
- {
- // create the actual sequence
- $statements[] = "CREATE SEQUENCE {$table_name}_seq";
-
- // the trigger is the mechanism by which we increment the counter
- $trigger = "CREATE OR REPLACE TRIGGER t_{$table_name}\n";
- $trigger .= "BEFORE INSERT ON {$table_name}\n";
- $trigger .= "FOR EACH ROW WHEN (\n";
- $trigger .= "\tnew.{$create_sequence} IS NULL OR new.{$create_sequence} = 0\n";
- $trigger .= ")\n";
- $trigger .= "BEGIN\n";
- $trigger .= "\tSELECT {$table_name}_seq.nextval\n";
- $trigger .= "\tINTO :new.{$create_sequence}\n";
- $trigger .= "\tFROM dual;\n";
- $trigger .= "END;";
-
- $statements[] = $trigger;
- }
- break;
-
- case 'firebird':
- if ($create_sequence)
- {
- $statements[] = "CREATE GENERATOR {$table_name}_gen;";
- $statements[] = "SET GENERATOR {$table_name}_gen TO 0;";
-
- $trigger = "CREATE TRIGGER t_$table_name FOR $table_name\n";
- $trigger .= "BEFORE INSERT\nAS\nBEGIN\n";
- $trigger .= "\tNEW.{$create_sequence} = GEN_ID({$table_name}_gen, 1);\nEND;";
- $statements[] = $trigger;
- }
- break;
- }
-
- // Write Keys
- if (isset($table_data['KEYS']))
- {
- foreach ($table_data['KEYS'] as $key_name => $key_data)
- {
- if (!is_array($key_data[1]))
- {
- $key_data[1] = array($key_data[1]);
- }
-
- $old_return_statements = $this->return_statements;
- $this->return_statements = true;
-
- $key_stmts = ($key_data[0] == 'UNIQUE') ? $this->sql_create_unique_index($table_name, $key_name, $key_data[1]) : $this->sql_create_index($table_name, $key_name, $key_data[1]);
-
- foreach ($key_stmts as $key_stmt)
- {
- $statements[] = $key_stmt;
- }
-
- $this->return_statements = $old_return_statements;
- }
- }
-
- // Commit Transaction
- $statements[] = 'commit';
-
- return $this->_sql_run_sql($statements);
- }
-
- /**
- * Handle passed database update array.
- * Expected structure...
- * Key being one of the following
- * change_columns: Column changes (only type, not name)
- * add_columns: Add columns to a table
- * drop_keys: Dropping keys
- * drop_columns: Removing/Dropping columns
- * add_primary_keys: adding primary keys
- * add_unique_index: adding an unique index
- * add_index: adding an index (can be column:index_size if you need to provide size)
- *
- * The values are in this format:
- * {TABLE NAME} => array(
- * {COLUMN NAME} => array({COLUMN TYPE}, {DEFAULT VALUE}, {OPTIONAL VARIABLES}),
- * {KEY/INDEX NAME} => array({COLUMN NAMES}),
- * )
- *
- * For more information have a look at /develop/create_schema_files.php (only available through SVN)
- */
- function perform_schema_changes($schema_changes)
- {
- if (empty($schema_changes))
- {
- return;
- }
-
- $statements = array();
- $sqlite = false;
-
- // For SQLite we need to perform the schema changes in a much more different way
- if ($this->db->sql_layer == 'sqlite' && $this->return_statements)
- {
- $sqlite_data = array();
- $sqlite = true;
- }
-
- // Drop tables?
- if (!empty($schema_changes['drop_tables']))
- {
- foreach ($schema_changes['drop_tables'] as $table)
- {
- // only drop table if it exists
- if ($this->sql_table_exists($table))
- {
- $result = $this->sql_table_drop($table);
- if ($this->return_statements)
- {
- $statements = array_merge($statements, $result);
- }
- }
- }
- }
-
- // Add tables?
- if (!empty($schema_changes['add_tables']))
- {
- foreach ($schema_changes['add_tables'] as $table => $table_data)
- {
- $result = $this->sql_create_table($table, $table_data);
- if ($this->return_statements)
- {
- $statements = array_merge($statements, $result);
- }
- }
- }
-
- // Change columns?
- if (!empty($schema_changes['change_columns']))
- {
- foreach ($schema_changes['change_columns'] as $table => $columns)
- {
- foreach ($columns as $column_name => $column_data)
- {
- // If the column exists we change it, else we add it ;)
- if ($column_exists = $this->sql_column_exists($table, $column_name))
- {
- $result = $this->sql_column_change($table, $column_name, $column_data, true);
- }
- else
- {
- $result = $this->sql_column_add($table, $column_name, $column_data, true);
- }
-
- if ($sqlite)
- {
- if ($column_exists)
- {
- $sqlite_data[$table]['change_columns'][] = $result;
- }
- else
- {
- $sqlite_data[$table]['add_columns'][] = $result;
- }
- }
- else if ($this->return_statements)
- {
- $statements = array_merge($statements, $result);
- }
- }
- }
- }
-
- // Add columns?
- if (!empty($schema_changes['add_columns']))
- {
- foreach ($schema_changes['add_columns'] as $table => $columns)
- {
- foreach ($columns as $column_name => $column_data)
- {
- // Only add the column if it does not exist yet
- if ($column_exists = $this->sql_column_exists($table, $column_name))
- {
- continue;
- // This is commented out here because it can take tremendous time on updates
-// $result = $this->sql_column_change($table, $column_name, $column_data, true);
- }
- else
- {
- $result = $this->sql_column_add($table, $column_name, $column_data, true);
- }
-
- if ($sqlite)
- {
- if ($column_exists)
- {
- continue;
-// $sqlite_data[$table]['change_columns'][] = $result;
- }
- else
- {
- $sqlite_data[$table]['add_columns'][] = $result;
- }
- }
- else if ($this->return_statements)
- {
- $statements = array_merge($statements, $result);
- }
- }
- }
- }
-
- // Remove keys?
- if (!empty($schema_changes['drop_keys']))
- {
- foreach ($schema_changes['drop_keys'] as $table => $indexes)
- {
- foreach ($indexes as $index_name)
- {
- if (!$this->sql_index_exists($table, $index_name))
- {
- continue;
- }
-
- $result = $this->sql_index_drop($table, $index_name);
-
- if ($this->return_statements)
- {
- $statements = array_merge($statements, $result);
- }
- }
- }
- }
-
- // Drop columns?
- if (!empty($schema_changes['drop_columns']))
- {
- foreach ($schema_changes['drop_columns'] as $table => $columns)
- {
- foreach ($columns as $column)
- {
- // Only remove the column if it exists...
- if ($this->sql_column_exists($table, $column))
- {
- $result = $this->sql_column_remove($table, $column, true);
-
- if ($sqlite)
- {
- $sqlite_data[$table]['drop_columns'][] = $result;
- }
- else if ($this->return_statements)
- {
- $statements = array_merge($statements, $result);
- }
- }
- }
- }
- }
-
- // Add primary keys?
- if (!empty($schema_changes['add_primary_keys']))
- {
- foreach ($schema_changes['add_primary_keys'] as $table => $columns)
- {
- $result = $this->sql_create_primary_key($table, $columns, true);
-
- if ($sqlite)
- {
- $sqlite_data[$table]['primary_key'] = $result;
- }
- else if ($this->return_statements)
- {
- $statements = array_merge($statements, $result);
- }
- }
- }
-
- // Add unqiue indexes?
- if (!empty($schema_changes['add_unique_index']))
- {
- foreach ($schema_changes['add_unique_index'] as $table => $index_array)
- {
- foreach ($index_array as $index_name => $column)
- {
- if ($this->sql_unique_index_exists($table, $index_name))
- {
- continue;
- }
-
- $result = $this->sql_create_unique_index($table, $index_name, $column);
-
- if ($this->return_statements)
- {
- $statements = array_merge($statements, $result);
- }
- }
- }
- }
-
- // Add indexes?
- if (!empty($schema_changes['add_index']))
- {
- foreach ($schema_changes['add_index'] as $table => $index_array)
- {
- foreach ($index_array as $index_name => $column)
- {
- if ($this->sql_index_exists($table, $index_name))
- {
- continue;
- }
-
- $result = $this->sql_create_index($table, $index_name, $column);
-
- if ($this->return_statements)
- {
- $statements = array_merge($statements, $result);
- }
- }
- }
- }
-
- if ($sqlite)
- {
- foreach ($sqlite_data as $table_name => $sql_schema_changes)
- {
- // Create temporary table with original data
- $statements[] = 'begin';
-
- $sql = "SELECT sql
- FROM sqlite_master
- WHERE type = 'table'
- AND name = '{$table_name}'
- ORDER BY type DESC, name;";
- $result = $this->db->sql_query($sql);
-
- if (!$result)
- {
- continue;
- }
-
- $row = $this->db->sql_fetchrow($result);
- $this->db->sql_freeresult($result);
-
- // Create a backup table and populate it, destroy the existing one
- $statements[] = preg_replace('#CREATE\s+TABLE\s+"?' . $table_name . '"?#i', 'CREATE TEMPORARY TABLE ' . $table_name . '_temp', $row['sql']);
- $statements[] = 'INSERT INTO ' . $table_name . '_temp SELECT * FROM ' . $table_name;
- $statements[] = 'DROP TABLE ' . $table_name;
-
- // Get the columns...
- preg_match('#\((.*)\)#s', $row['sql'], $matches);
-
- $plain_table_cols = trim($matches[1]);
- $new_table_cols = preg_split('/,(?![\s\w]+\))/m', $plain_table_cols);
- $column_list = array();
-
- foreach ($new_table_cols as $declaration)
- {
- $entities = preg_split('#\s+#', trim($declaration));
- if ($entities[0] == 'PRIMARY')
- {
- continue;
- }
- $column_list[] = $entities[0];
- }
-
- // note down the primary key notation because sqlite only supports adding it to the end for the new table
- $primary_key = false;
- $_new_cols = array();
-
- foreach ($new_table_cols as $key => $declaration)
- {
- $entities = preg_split('#\s+#', trim($declaration));
- if ($entities[0] == 'PRIMARY')
- {
- $primary_key = $declaration;
- continue;
- }
- $_new_cols[] = $declaration;
- }
-
- $new_table_cols = $_new_cols;
-
- // First of all... change columns
- if (!empty($sql_schema_changes['change_columns']))
- {
- foreach ($sql_schema_changes['change_columns'] as $column_sql)
- {
- foreach ($new_table_cols as $key => $declaration)
- {
- $entities = preg_split('#\s+#', trim($declaration));
- if (strpos($column_sql, $entities[0] . ' ') === 0)
- {
- $new_table_cols[$key] = $column_sql;
- }
- }
- }
- }
-
- if (!empty($sql_schema_changes['add_columns']))
- {
- foreach ($sql_schema_changes['add_columns'] as $column_sql)
- {
- $new_table_cols[] = $column_sql;
- }
- }
-
- // Now drop them...
- if (!empty($sql_schema_changes['drop_columns']))
- {
- foreach ($sql_schema_changes['drop_columns'] as $column_name)
- {
- // Remove from column list...
- $new_column_list = array();
- foreach ($column_list as $key => $value)
- {
- if ($value === $column_name)
- {
- continue;
- }
-
- $new_column_list[] = $value;
- }
-
- $column_list = $new_column_list;
-
- // Remove from table...
- $_new_cols = array();
- foreach ($new_table_cols as $key => $declaration)
- {
- $entities = preg_split('#\s+#', trim($declaration));
- if (strpos($column_name . ' ', $entities[0] . ' ') === 0)
- {
- continue;
- }
- $_new_cols[] = $declaration;
- }
- $new_table_cols = $_new_cols;
- }
- }
-
- // Primary key...
- if (!empty($sql_schema_changes['primary_key']))
- {
- $new_table_cols[] = 'PRIMARY KEY (' . implode(', ', $sql_schema_changes['primary_key']) . ')';
- }
- // Add a new one or the old primary key
- else if ($primary_key !== false)
- {
- $new_table_cols[] = $primary_key;
- }
-
- $columns = implode(',', $column_list);
-
- // create a new table and fill it up. destroy the temp one
- $statements[] = 'CREATE TABLE ' . $table_name . ' (' . implode(',', $new_table_cols) . ');';
- $statements[] = 'INSERT INTO ' . $table_name . ' (' . $columns . ') SELECT ' . $columns . ' FROM ' . $table_name . '_temp;';
- $statements[] = 'DROP TABLE ' . $table_name . '_temp';
-
- $statements[] = 'commit';
- }
- }
-
- if ($this->return_statements)
- {
- return $statements;
- }
- }
-
- /**
- * Gets a list of columns of a table.
- *
- * @param string $table Table name
- *
- * @return array Array of column names (all lower case)
- */
- function sql_list_columns($table)
- {
- $columns = array();
-
- switch ($this->sql_layer)
- {
- case 'mysql_40':
- case 'mysql_41':
- $sql = "SHOW COLUMNS FROM $table";
- break;
-
- // PostgreSQL has a way of doing this in a much simpler way but would
- // not allow us to support all versions of PostgreSQL
- case 'postgres':
- $sql = "SELECT a.attname
- FROM pg_class c, pg_attribute a
- WHERE c.relname = '{$table}'
- AND a.attnum > 0
- AND a.attrelid = c.oid";
- break;
-
- // same deal with PostgreSQL, we must perform more complex operations than
- // we technically could
- case 'mssql':
- case 'mssqlnative':
- $sql = "SELECT c.name
- FROM syscolumns c
- LEFT JOIN sysobjects o ON c.id = o.id
- WHERE o.name = '{$table}'";
- break;
-
- case 'oracle':
- $sql = "SELECT column_name
- FROM user_tab_columns
- WHERE LOWER(table_name) = '" . strtolower($table) . "'";
- break;
-
- case 'firebird':
- $sql = "SELECT RDB\$FIELD_NAME as FNAME
- FROM RDB\$RELATION_FIELDS
- WHERE RDB\$RELATION_NAME = '" . strtoupper($table) . "'";
- break;
-
- case 'sqlite':
- $sql = "SELECT sql
- FROM sqlite_master
- WHERE type = 'table'
- AND name = '{$table}'";
-
- $result = $this->db->sql_query($sql);
-
- if (!$result)
- {
- return false;
- }
-
- $row = $this->db->sql_fetchrow($result);
- $this->db->sql_freeresult($result);
-
- preg_match('#\((.*)\)#s', $row['sql'], $matches);
-
- $cols = trim($matches[1]);
- $col_array = preg_split('/,(?![\s\w]+\))/m', $cols);
-
- foreach ($col_array as $declaration)
- {
- $entities = preg_split('#\s+#', trim($declaration));
- if ($entities[0] == 'PRIMARY')
- {
- continue;
- }
-
- $column = strtolower($entities[0]);
- $columns[$column] = $column;
- }
-
- return $columns;
- break;
- }
-
- $result = $this->db->sql_query($sql);
-
- while ($row = $this->db->sql_fetchrow($result))
- {
- $column = strtolower(current($row));
- $columns[$column] = $column;
- }
- $this->db->sql_freeresult($result);
-
- return $columns;
- }
-
- /**
- * Check whether a specified column exist in a table
- *
- * @param string $table Table to check
- * @param string $column_name Column to check
- *
- * @return bool True if column exists, false otherwise
- */
- function sql_column_exists($table, $column_name)
- {
- $columns = $this->sql_list_columns($table);
-
- return isset($columns[$column_name]);
- }
-
- /**
- * Check if a specified index exists in table. Does not return PRIMARY KEY and UNIQUE indexes.
- *
- * @param string $table_name Table to check the index at
- * @param string $index_name The index name to check
- *
- * @return bool True if index exists, else false
- */
- function sql_index_exists($table_name, $index_name)
- {
- if ($this->sql_layer == 'mssql' || $this->sql_layer == 'mssqlnative')
- {
- $sql = "EXEC sp_statistics '$table_name'";
- $result = $this->db->sql_query($sql);
-
- while ($row = $this->db->sql_fetchrow($result))
- {
- if ($row['TYPE'] == 3)
- {
- if (strtolower($row['INDEX_NAME']) == strtolower($index_name))
- {
- $this->db->sql_freeresult($result);
- return true;
- }
- }
- }
- $this->db->sql_freeresult($result);
-
- return false;
- }
-
- switch ($this->sql_layer)
- {
- case 'firebird':
- $sql = "SELECT LOWER(RDB\$INDEX_NAME) as index_name
- FROM RDB\$INDICES
- WHERE RDB\$RELATION_NAME = '" . strtoupper($table_name) . "'
- AND RDB\$UNIQUE_FLAG IS NULL
- AND RDB\$FOREIGN_KEY IS NULL";
- $col = 'index_name';
- break;
-
- case 'postgres':
- $sql = "SELECT ic.relname as index_name
- FROM pg_class bc, pg_class ic, pg_index i
- WHERE (bc.oid = i.indrelid)
- AND (ic.oid = i.indexrelid)
- AND (bc.relname = '" . $table_name . "')
- AND (i.indisunique != 't')
- AND (i.indisprimary != 't')";
- $col = 'index_name';
- break;
-
- case 'mysql_40':
- case 'mysql_41':
- $sql = 'SHOW KEYS
- FROM ' . $table_name;
- $col = 'Key_name';
- break;
-
- case 'oracle':
- $sql = "SELECT index_name
- FROM user_indexes
- WHERE table_name = '" . strtoupper($table_name) . "'
- AND generated = 'N'
- AND uniqueness = 'NONUNIQUE'";
- $col = 'index_name';
- break;
-
- case 'sqlite':
- $sql = "PRAGMA index_list('" . $table_name . "');";
- $col = 'name';
- break;
- }
-
- $result = $this->db->sql_query($sql);
- while ($row = $this->db->sql_fetchrow($result))
- {
- if (($this->sql_layer == 'mysql_40' || $this->sql_layer == 'mysql_41') && !$row['Non_unique'])
- {
- continue;
- }
-
- // These DBMS prefix index name with the table name
- switch ($this->sql_layer)
- {
- case 'firebird':
- case 'oracle':
- case 'postgres':
- case 'sqlite':
- $row[$col] = substr($row[$col], strlen($table_name) + 1);
- break;
- }
-
- if (strtolower($row[$col]) == strtolower($index_name))
- {
- $this->db->sql_freeresult($result);
- return true;
- }
- }
- $this->db->sql_freeresult($result);
-
- return false;
- }
-
- /**
- * Check if a specified index exists in table. Does not return PRIMARY KEY and UNIQUE indexes.
- *
- * @param string $table_name Table to check the index at
- * @param string $index_name The index name to check
- *
- * @return bool True if index exists, else false
- */
- function sql_unique_index_exists($table_name, $index_name)
- {
- if ($this->sql_layer == 'mssql' || $this->sql_layer == 'mssqlnative')
- {
- $sql = "EXEC sp_statistics '$table_name'";
- $result = $this->db->sql_query($sql);
-
- while ($row = $this->db->sql_fetchrow($result))
- {
- // Usually NON_UNIQUE is the column we want to check, but we allow for both
- if ($row['TYPE'] == 3)
- {
- if (strtolower($row['INDEX_NAME']) == strtolower($index_name))
- {
- $this->db->sql_freeresult($result);
- return true;
- }
- }
- }
- $this->db->sql_freeresult($result);
- return false;
- }
-
- switch ($this->sql_layer)
- {
- case 'firebird':
- $sql = "SELECT LOWER(RDB\$INDEX_NAME) as index_name
- FROM RDB\$INDICES
- WHERE RDB\$RELATION_NAME = '" . strtoupper($table_name) . "'
- AND RDB\$UNIQUE_FLAG IS NOT NULL
- AND RDB\$FOREIGN_KEY IS NULL";
- $col = 'index_name';
- break;
-
- case 'postgres':
- $sql = "SELECT ic.relname as index_name, i.indisunique
- FROM pg_class bc, pg_class ic, pg_index i
- WHERE (bc.oid = i.indrelid)
- AND (ic.oid = i.indexrelid)
- AND (bc.relname = '" . $table_name . "')
- AND (i.indisprimary != 't')";
- $col = 'index_name';
- break;
-
- case 'mysql_40':
- case 'mysql_41':
- $sql = 'SHOW KEYS
- FROM ' . $table_name;
- $col = 'Key_name';
- break;
-
- case 'oracle':
- $sql = "SELECT index_name, table_owner
- FROM user_indexes
- WHERE table_name = '" . strtoupper($table_name) . "'
- AND generated = 'N'
- AND uniqueness = 'UNIQUE'";
- $col = 'index_name';
- break;
-
- case 'sqlite':
- $sql = "PRAGMA index_list('" . $table_name . "');";
- $col = 'name';
- break;
- }
-
- $result = $this->db->sql_query($sql);
- while ($row = $this->db->sql_fetchrow($result))
- {
- if (($this->sql_layer == 'mysql_40' || $this->sql_layer == 'mysql_41') && ($row['Non_unique'] || $row[$col] == 'PRIMARY'))
- {
- continue;
- }
-
- if ($this->sql_layer == 'sqlite' && !$row['unique'])
- {
- continue;
- }
-
- if ($this->sql_layer == 'postgres' && $row['indisunique'] != 't')
- {
- continue;
- }
-
- // These DBMS prefix index name with the table name
- switch ($this->sql_layer)
- {
- case 'oracle':
- // Two cases here... prefixed with U_[table_owner] and not prefixed with table_name
- if (strpos($row[$col], 'U_') === 0)
- {
- $row[$col] = substr($row[$col], strlen('U_' . $row['table_owner']) + 1);
- }
- else if (strpos($row[$col], strtoupper($table_name)) === 0)
- {
- $row[$col] = substr($row[$col], strlen($table_name) + 1);
- }
- break;
-
- case 'firebird':
- case 'postgres':
- case 'sqlite':
- $row[$col] = substr($row[$col], strlen($table_name) + 1);
- break;
- }
-
- if (strtolower($row[$col]) == strtolower($index_name))
- {
- $this->db->sql_freeresult($result);
- return true;
- }
- }
- $this->db->sql_freeresult($result);
-
- return false;
- }
-
- /**
- * Private method for performing sql statements (either execute them or return them)
- * @access private
- */
- function _sql_run_sql($statements)
- {
- if ($this->return_statements)
- {
- return $statements;
- }
-
- // We could add error handling here...
- foreach ($statements as $sql)
- {
- if ($sql === 'begin')
- {
- $this->db->sql_transaction('begin');
- }
- else if ($sql === 'commit')
- {
- $this->db->sql_transaction('commit');
- }
- else
- {
- $this->db->sql_query($sql);
- }
- }
-
- return true;
- }
-
- /**
- * Function to prepare some column information for better usage
- * @access private
- */
- function sql_prepare_column_data($table_name, $column_name, $column_data)
- {
- if (strlen($column_name) > 30)
- {
- trigger_error("Column name '$column_name' on table '$table_name' is too long. The maximum is 30 characters.", E_USER_ERROR);
- }
-
- // Get type
- if (strpos($column_data[0], ':') !== false)
- {
- list($orig_column_type, $column_length) = explode(':', $column_data[0]);
- if (!is_array($this->dbms_type_map[$this->sql_layer][$orig_column_type . ':']))
- {
- $column_type = sprintf($this->dbms_type_map[$this->sql_layer][$orig_column_type . ':'], $column_length);
- }
- else
- {
- if (isset($this->dbms_type_map[$this->sql_layer][$orig_column_type . ':']['rule']))
- {
- switch ($this->dbms_type_map[$this->sql_layer][$orig_column_type . ':']['rule'][0])
- {
- case 'div':
- $column_length /= $this->dbms_type_map[$this->sql_layer][$orig_column_type . ':']['rule'][1];
- $column_length = ceil($column_length);
- $column_type = sprintf($this->dbms_type_map[$this->sql_layer][$orig_column_type . ':'][0], $column_length);
- break;
- }
- }
-
- if (isset($this->dbms_type_map[$this->sql_layer][$orig_column_type . ':']['limit']))
- {
- switch ($this->dbms_type_map[$this->sql_layer][$orig_column_type . ':']['limit'][0])
- {
- case 'mult':
- $column_length *= $this->dbms_type_map[$this->sql_layer][$orig_column_type . ':']['limit'][1];
- if ($column_length > $this->dbms_type_map[$this->sql_layer][$orig_column_type . ':']['limit'][2])
- {
- $column_type = $this->dbms_type_map[$this->sql_layer][$orig_column_type . ':']['limit'][3];
- }
- else
- {
- $column_type = sprintf($this->dbms_type_map[$this->sql_layer][$orig_column_type . ':'][0], $column_length);
- }
- break;
- }
- }
- }
- $orig_column_type .= ':';
- }
- else
- {
- $orig_column_type = $column_data[0];
- $column_type = $this->dbms_type_map[$this->sql_layer][$column_data[0]];
- }
-
- // Adjust default value if db-dependant specified
- if (is_array($column_data[1]))
- {
- $column_data[1] = (isset($column_data[1][$this->sql_layer])) ? $column_data[1][$this->sql_layer] : $column_data[1]['default'];
- }
-
- $sql = '';
-
- $return_array = array();
-
- switch ($this->sql_layer)
- {
- case 'firebird':
- $sql .= " {$column_type} ";
- $return_array['column_type_sql_type'] = " {$column_type} ";
-
- if (!is_null($column_data[1]))
- {
- $sql .= 'DEFAULT ' . ((is_numeric($column_data[1])) ? $column_data[1] : "'{$column_data[1]}'") . ' ';
- $return_array['column_type_sql_default'] = ((is_numeric($column_data[1])) ? $column_data[1] : "'{$column_data[1]}'") . ' ';
- }
-
- $sql .= 'NOT NULL';
-
- // This is a UNICODE column and thus should be given it's fair share
- if (preg_match('/^X?STEXT_UNI|VCHAR_(CI|UNI:?)/', $column_data[0]))
- {
- $sql .= ' COLLATE UNICODE';
- }
-
- $return_array['auto_increment'] = false;
- if (isset($column_data[2]) && $column_data[2] == 'auto_increment')
- {
- $return_array['auto_increment'] = true;
- }
-
- break;
-
- case 'mssql':
- case 'mssqlnative':
- $sql .= " {$column_type} ";
- $sql_default = " {$column_type} ";
-
- // For adding columns we need the default definition
- if (!is_null($column_data[1]))
- {
- // For hexadecimal values do not use single quotes
- if (strpos($column_data[1], '0x') === 0)
- {
- $return_array['default'] = 'DEFAULT (' . $column_data[1] . ') ';
- $sql_default .= $return_array['default'];
- }
- else
- {
- $return_array['default'] = 'DEFAULT (' . ((is_numeric($column_data[1])) ? $column_data[1] : "'{$column_data[1]}'") . ') ';
- $sql_default .= $return_array['default'];
- }
- }
-
- if (isset($column_data[2]) && $column_data[2] == 'auto_increment')
- {
-// $sql .= 'IDENTITY (1, 1) ';
- $sql_default .= 'IDENTITY (1, 1) ';
- }
-
- $return_array['textimage'] = $column_type === '[text]';
-
- $sql .= 'NOT NULL';
- $sql_default .= 'NOT NULL';
-
- $return_array['column_type_sql_default'] = $sql_default;
-
- break;
-
- case 'mysql_40':
- case 'mysql_41':
- $sql .= " {$column_type} ";
-
- // For hexadecimal values do not use single quotes
- if (!is_null($column_data[1]) && substr($column_type, -4) !== 'text' && substr($column_type, -4) !== 'blob')
- {
- $sql .= (strpos($column_data[1], '0x') === 0) ? "DEFAULT {$column_data[1]} " : "DEFAULT '{$column_data[1]}' ";
- }
- $sql .= 'NOT NULL';
-
- if (isset($column_data[2]))
- {
- if ($column_data[2] == 'auto_increment')
- {
- $sql .= ' auto_increment';
- }
- else if ($this->sql_layer === 'mysql_41' && $column_data[2] == 'true_sort')
- {
- $sql .= ' COLLATE utf8_unicode_ci';
- }
- }
-
- break;
-
- case 'oracle':
- $sql .= " {$column_type} ";
- $sql .= (!is_null($column_data[1])) ? "DEFAULT '{$column_data[1]}' " : '';
-
- // In Oracle empty strings ('') are treated as NULL.
- // Therefore in oracle we allow NULL's for all DEFAULT '' entries
- // Oracle does not like setting NOT NULL on a column that is already NOT NULL (this happens only on number fields)
- if (!preg_match('/number/i', $column_type))
- {
- $sql .= ($column_data[1] === '') ? '' : 'NOT NULL';
- }
-
- $return_array['auto_increment'] = false;
- if (isset($column_data[2]) && $column_data[2] == 'auto_increment')
- {
- $return_array['auto_increment'] = true;
- }
-
- break;
-
- case 'postgres':
- $return_array['column_type'] = $column_type;
-
- $sql .= " {$column_type} ";
-
- $return_array['auto_increment'] = false;
- if (isset($column_data[2]) && $column_data[2] == 'auto_increment')
- {
- $default_val = "nextval('{$table_name}_seq')";
- $return_array['auto_increment'] = true;
- }
- else if (!is_null($column_data[1]))
- {
- $default_val = "'" . $column_data[1] . "'";
- $return_array['null'] = 'NOT NULL';
- $sql .= 'NOT NULL ';
- }
-
- $return_array['default'] = $default_val;
-
- $sql .= "DEFAULT {$default_val}";
-
- // Unsigned? Then add a CHECK contraint
- if (in_array($orig_column_type, $this->unsigned_types))
- {
- $return_array['constraint'] = "CHECK ({$column_name} >= 0)";
- $sql .= " CHECK ({$column_name} >= 0)";
- }
-
- break;
-
- case 'sqlite':
- $return_array['primary_key_set'] = false;
- if (isset($column_data[2]) && $column_data[2] == 'auto_increment')
- {
- $sql .= ' INTEGER PRIMARY KEY';
- $return_array['primary_key_set'] = true;
- }
- else
- {
- $sql .= ' ' . $column_type;
- }
-
- $sql .= ' NOT NULL ';
- $sql .= (!is_null($column_data[1])) ? "DEFAULT '{$column_data[1]}'" : '';
-
- break;
- }
-
- $return_array['column_type_sql'] = $sql;
-
- return $return_array;
- }
-
- /**
- * Add new column
- */
- function sql_column_add($table_name, $column_name, $column_data, $inline = false)
- {
- $column_data = $this->sql_prepare_column_data($table_name, $column_name, $column_data);
- $statements = array();
-
- switch ($this->sql_layer)
- {
- case 'firebird':
- // Does not support AFTER statement, only POSITION (and there you need the column position)
- $statements[] = 'ALTER TABLE ' . $table_name . ' ADD "' . strtoupper($column_name) . '" ' . $column_data['column_type_sql'];
- break;
-
- case 'mssql':
- case 'mssqlnative':
- // Does not support AFTER, only through temporary table
- $statements[] = 'ALTER TABLE [' . $table_name . '] ADD [' . $column_name . '] ' . $column_data['column_type_sql_default'];
- break;
-
- case 'mysql_40':
- case 'mysql_41':
- $after = (!empty($column_data['after'])) ? ' AFTER ' . $column_data['after'] : '';
- $statements[] = 'ALTER TABLE `' . $table_name . '` ADD COLUMN `' . $column_name . '` ' . $column_data['column_type_sql'] . $after;
- break;
-
- case 'oracle':
- // Does not support AFTER, only through temporary table
- $statements[] = 'ALTER TABLE ' . $table_name . ' ADD ' . $column_name . ' ' . $column_data['column_type_sql'];
- break;
-
- case 'postgres':
- // Does not support AFTER, only through temporary table
- if (version_compare($this->db->sql_server_info(true), '8.0', '>='))
- {
- $statements[] = 'ALTER TABLE ' . $table_name . ' ADD COLUMN "' . $column_name . '" ' . $column_data['column_type_sql'];
- }
- else
- {
- // old versions cannot add columns with default and null information
- $statements[] = 'ALTER TABLE ' . $table_name . ' ADD COLUMN "' . $column_name . '" ' . $column_data['column_type'] . ' ' . $column_data['constraint'];
-
- if (isset($column_data['null']))
- {
- if ($column_data['null'] == 'NOT NULL')
- {
- $statements[] = 'ALTER TABLE ' . $table_name . ' ALTER COLUMN ' . $column_name . ' SET NOT NULL';
- }
- }
-
- if (isset($column_data['default']))
- {
- $statements[] = 'ALTER TABLE ' . $table_name . ' ALTER COLUMN ' . $column_name . ' SET DEFAULT ' . $column_data['default'];
- }
- }
-
- break;
-
- case 'sqlite':
-
- if ($inline && $this->return_statements)
- {
- return $column_name . ' ' . $column_data['column_type_sql'];
- }
-
- if (version_compare(sqlite_libversion(), '3.0') == -1)
- {
- $sql = "SELECT sql
- FROM sqlite_master
- WHERE type = 'table'
- AND name = '{$table_name}'
- ORDER BY type DESC, name;";
- $result = $this->db->sql_query($sql);
-
- if (!$result)
- {
- break;
- }
-
- $row = $this->db->sql_fetchrow($result);
- $this->db->sql_freeresult($result);
-
- $statements[] = 'begin';
-
- // Create a backup table and populate it, destroy the existing one
- $statements[] = preg_replace('#CREATE\s+TABLE\s+"?' . $table_name . '"?#i', 'CREATE TEMPORARY TABLE ' . $table_name . '_temp', $row['sql']);
- $statements[] = 'INSERT INTO ' . $table_name . '_temp SELECT * FROM ' . $table_name;
- $statements[] = 'DROP TABLE ' . $table_name;
-
- preg_match('#\((.*)\)#s', $row['sql'], $matches);
-
- $new_table_cols = trim($matches[1]);
- $old_table_cols = preg_split('/,(?![\s\w]+\))/m', $new_table_cols);
- $column_list = array();
-
- foreach ($old_table_cols as $declaration)
- {
- $entities = preg_split('#\s+#', trim($declaration));
- if ($entities[0] == 'PRIMARY')
- {
- continue;
- }
- $column_list[] = $entities[0];
- }
-
- $columns = implode(',', $column_list);
-
- $new_table_cols = $column_name . ' ' . $column_data['column_type_sql'] . ',' . $new_table_cols;
-
- // create a new table and fill it up. destroy the temp one
- $statements[] = 'CREATE TABLE ' . $table_name . ' (' . $new_table_cols . ');';
- $statements[] = 'INSERT INTO ' . $table_name . ' (' . $columns . ') SELECT ' . $columns . ' FROM ' . $table_name . '_temp;';
- $statements[] = 'DROP TABLE ' . $table_name . '_temp';
-
- $statements[] = 'commit';
- }
- else
- {
- $statements[] = 'ALTER TABLE ' . $table_name . ' ADD ' . $column_name . ' [' . $column_data['column_type_sql'] . ']';
- }
- break;
- }
-
- return $this->_sql_run_sql($statements);
- }
-
- /**
- * Drop column
- */
- function sql_column_remove($table_name, $column_name, $inline = false)
- {
- $statements = array();
-
- switch ($this->sql_layer)
- {
- case 'firebird':
- $statements[] = 'ALTER TABLE ' . $table_name . ' DROP "' . strtoupper($column_name) . '"';
- break;
-
- case 'mssql':
- case 'mssqlnative':
- // remove default cosntraints first
- // http://msdn.microsoft.com/en-us/library/aa175912%28v=sql.80%29.aspx
- $statements[] = "DECLARE @drop_default_name VARCHAR(100), @cmd VARCHAR(1000)
- SET @drop_default_name =
- (SELECT so.name FROM sysobjects so
- JOIN sysconstraints sc ON so.id = sc.constid
- WHERE object_name(so.parent_obj) = '{$table_name}'
- AND so.xtype = 'D'
- AND sc.colid = (SELECT colid FROM syscolumns
- WHERE id = object_id('{$table_name}')
- AND name = '{$column_name}'))
- IF @drop_default_name <> ''
- BEGIN
- SET @cmd = 'ALTER TABLE [{$table_name}] DROP CONSTRAINT [' + @drop_default_name + ']'
- EXEC(@cmd)
- END";
- $statements[] = 'ALTER TABLE [' . $table_name . '] DROP COLUMN [' . $column_name . ']';
- break;
-
- case 'mysql_40':
- case 'mysql_41':
- $statements[] = 'ALTER TABLE `' . $table_name . '` DROP COLUMN `' . $column_name . '`';
- break;
-
- case 'oracle':
- $statements[] = 'ALTER TABLE ' . $table_name . ' DROP COLUMN ' . $column_name;
- break;
-
- case 'postgres':
- $statements[] = 'ALTER TABLE ' . $table_name . ' DROP COLUMN "' . $column_name . '"';
- break;
-
- case 'sqlite':
-
- if ($inline && $this->return_statements)
- {
- return $column_name;
- }
-
- if (version_compare(sqlite_libversion(), '3.0') == -1)
- {
- $sql = "SELECT sql
- FROM sqlite_master
- WHERE type = 'table'
- AND name = '{$table_name}'
- ORDER BY type DESC, name;";
- $result = $this->db->sql_query($sql);
-
- if (!$result)
- {
- break;
- }
-
- $row = $this->db->sql_fetchrow($result);
- $this->db->sql_freeresult($result);
-
- $statements[] = 'begin';
-
- // Create a backup table and populate it, destroy the existing one
- $statements[] = preg_replace('#CREATE\s+TABLE\s+"?' . $table_name . '"?#i', 'CREATE TEMPORARY TABLE ' . $table_name . '_temp', $row['sql']);
- $statements[] = 'INSERT INTO ' . $table_name . '_temp SELECT * FROM ' . $table_name;
- $statements[] = 'DROP TABLE ' . $table_name;
-
- preg_match('#\((.*)\)#s', $row['sql'], $matches);
-
- $new_table_cols = trim($matches[1]);
- $old_table_cols = preg_split('/,(?![\s\w]+\))/m', $new_table_cols);
- $column_list = array();
-
- foreach ($old_table_cols as $declaration)
- {
- $entities = preg_split('#\s+#', trim($declaration));
- if ($entities[0] == 'PRIMARY' || $entities[0] === $column_name)
- {
- continue;
- }
- $column_list[] = $entities[0];
- }
-
- $columns = implode(',', $column_list);
-
- $new_table_cols = preg_replace('/' . $column_name . '[^,]+(?:,|$)/m', '', $new_table_cols);
-
- // create a new table and fill it up. destroy the temp one
- $statements[] = 'CREATE TABLE ' . $table_name . ' (' . $new_table_cols . ');';
- $statements[] = 'INSERT INTO ' . $table_name . ' (' . $columns . ') SELECT ' . $columns . ' FROM ' . $table_name . '_temp;';
- $statements[] = 'DROP TABLE ' . $table_name . '_temp';
-
- $statements[] = 'commit';
- }
- else
- {
- $statements[] = 'ALTER TABLE ' . $table_name . ' DROP COLUMN ' . $column_name;
- }
- break;
- }
-
- return $this->_sql_run_sql($statements);
- }
-
- /**
- * Drop Index
- */
- function sql_index_drop($table_name, $index_name)
- {
- $statements = array();
-
- switch ($this->sql_layer)
- {
- case 'mssql':
- case 'mssqlnative':
- $statements[] = 'DROP INDEX ' . $table_name . '.' . $index_name;
- break;
-
- case 'mysql_40':
- case 'mysql_41':
- $statements[] = 'DROP INDEX ' . $index_name . ' ON ' . $table_name;
- break;
-
- case 'firebird':
- case 'oracle':
- case 'postgres':
- case 'sqlite':
- $statements[] = 'DROP INDEX ' . $table_name . '_' . $index_name;
- break;
- }
-
- return $this->_sql_run_sql($statements);
- }
-
- /**
- * Drop Table
- */
- function sql_table_drop($table_name)
- {
- $statements = array();
-
- if (!$this->sql_table_exists($table_name))
- {
- return $this->_sql_run_sql($statements);
- }
-
- // the most basic operation, get rid of the table
- $statements[] = 'DROP TABLE ' . $table_name;
-
- switch ($this->sql_layer)
- {
- case 'firebird':
- $sql = 'SELECT RDB$GENERATOR_NAME as gen
- FROM RDB$GENERATORS
- WHERE RDB$SYSTEM_FLAG = 0
- AND RDB$GENERATOR_NAME = \'' . strtoupper($table_name) . "_GEN'";
- $result = $this->db->sql_query($sql);
-
- // does a generator exist?
- if ($row = $this->db->sql_fetchrow($result))
- {
- $statements[] = "DROP GENERATOR {$row['gen']};";
- }
- $this->db->sql_freeresult($result);
- break;
-
- case 'oracle':
- $sql = 'SELECT A.REFERENCED_NAME
- FROM USER_DEPENDENCIES A, USER_TRIGGERS B
- WHERE A.REFERENCED_TYPE = \'SEQUENCE\'
- AND A.NAME = B.TRIGGER_NAME
- AND B.TABLE_NAME = \'' . strtoupper($table_name) . "'";
- $result = $this->db->sql_query($sql);
-
- // any sequences ref'd to this table's triggers?
- while ($row = $this->db->sql_fetchrow($result))
- {
- $statements[] = "DROP SEQUENCE {$row['referenced_name']}";
- }
- $this->db->sql_freeresult($result);
- break;
-
- case 'postgres':
- // PGSQL does not "tightly" bind sequences and tables, we must guess...
- $sql = "SELECT relname
- FROM pg_class
- WHERE relkind = 'S'
- AND relname = '{$table_name}_seq'";
- $result = $this->db->sql_query($sql);
-
- // We don't even care about storing the results. We already know the answer if we get rows back.
- if ($this->db->sql_fetchrow($result))
- {
- $statements[] = "DROP SEQUENCE {$table_name}_seq;\n";
- }
- $this->db->sql_freeresult($result);
- break;
- }
-
- return $this->_sql_run_sql($statements);
- }
-
- /**
- * Add primary key
- */
- function sql_create_primary_key($table_name, $column, $inline = false)
- {
- $statements = array();
-
- switch ($this->sql_layer)
- {
- case 'firebird':
- case 'postgres':
- case 'mysql_40':
- case 'mysql_41':
- $statements[] = 'ALTER TABLE ' . $table_name . ' ADD PRIMARY KEY (' . implode(', ', $column) . ')';
- break;
-
- case 'mssql':
- case 'mssqlnative':
- $sql = "ALTER TABLE [{$table_name}] WITH NOCHECK ADD ";
- $sql .= "CONSTRAINT [PK_{$table_name}] PRIMARY KEY CLUSTERED (";
- $sql .= '[' . implode("],\n\t\t[", $column) . ']';
- $sql .= ') ON [PRIMARY]';
-
- $statements[] = $sql;
- break;
-
- case 'oracle':
- $statements[] = 'ALTER TABLE ' . $table_name . 'add CONSTRAINT pk_' . $table_name . ' PRIMARY KEY (' . implode(', ', $column) . ')';
- break;
-
- case 'sqlite':
-
- if ($inline && $this->return_statements)
- {
- return $column;
- }
-
- $sql = "SELECT sql
- FROM sqlite_master
- WHERE type = 'table'
- AND name = '{$table_name}'
- ORDER BY type DESC, name;";
- $result = $this->db->sql_query($sql);
-
- if (!$result)
- {
- break;
- }
-
- $row = $this->db->sql_fetchrow($result);
- $this->db->sql_freeresult($result);
-
- $statements[] = 'begin';
-
- // Create a backup table and populate it, destroy the existing one
- $statements[] = preg_replace('#CREATE\s+TABLE\s+"?' . $table_name . '"?#i', 'CREATE TEMPORARY TABLE ' . $table_name . '_temp', $row['sql']);
- $statements[] = 'INSERT INTO ' . $table_name . '_temp SELECT * FROM ' . $table_name;
- $statements[] = 'DROP TABLE ' . $table_name;
-
- preg_match('#\((.*)\)#s', $row['sql'], $matches);
-
- $new_table_cols = trim($matches[1]);
- $old_table_cols = preg_split('/,(?![\s\w]+\))/m', $new_table_cols);
- $column_list = array();
-
- foreach ($old_table_cols as $declaration)
- {
- $entities = preg_split('#\s+#', trim($declaration));
- if ($entities[0] == 'PRIMARY')
- {
- continue;
- }
- $column_list[] = $entities[0];
- }
-
- $columns = implode(',', $column_list);
-
- // create a new table and fill it up. destroy the temp one
- $statements[] = 'CREATE TABLE ' . $table_name . ' (' . $new_table_cols . ', PRIMARY KEY (' . implode(', ', $column) . '));';
- $statements[] = 'INSERT INTO ' . $table_name . ' (' . $columns . ') SELECT ' . $columns . ' FROM ' . $table_name . '_temp;';
- $statements[] = 'DROP TABLE ' . $table_name . '_temp';
-
- $statements[] = 'commit';
- break;
- }
-
- return $this->_sql_run_sql($statements);
- }
-
- /**
- * Add unique index
- */
- function sql_create_unique_index($table_name, $index_name, $column)
- {
- $statements = array();
-
- $table_prefix = substr(CONFIG_TABLE, 0, -6); // strlen(config)
- if (strlen($table_name . $index_name) - strlen($table_prefix) > 24)
- {
- $max_length = strlen($table_prefix) + 24;
- trigger_error("Index name '{$table_name}_$index_name' on table '$table_name' is too long. The maximum is $max_length characters.", E_USER_ERROR);
- }
-
- switch ($this->sql_layer)
- {
- case 'firebird':
- case 'postgres':
- case 'oracle':
- case 'sqlite':
- $statements[] = 'CREATE UNIQUE INDEX ' . $table_name . '_' . $index_name . ' ON ' . $table_name . '(' . implode(', ', $column) . ')';
- break;
-
- case 'mysql_40':
- case 'mysql_41':
- $statements[] = 'ALTER TABLE ' . $table_name . ' ADD UNIQUE INDEX ' . $index_name . '(' . implode(', ', $column) . ')';
- break;
-
- case 'mssql':
- case 'mssqlnative':
- $statements[] = 'CREATE UNIQUE INDEX ' . $index_name . ' ON ' . $table_name . '(' . implode(', ', $column) . ') ON [PRIMARY]';
- break;
- }
-
- return $this->_sql_run_sql($statements);
- }
-
- /**
- * Add index
- */
- function sql_create_index($table_name, $index_name, $column)
- {
- $statements = array();
-
- $table_prefix = substr(CONFIG_TABLE, 0, -6); // strlen(config)
- if (strlen($table_name . $index_name) - strlen($table_prefix) > 24)
- {
- $max_length = strlen($table_prefix) + 24;
- trigger_error("Index name '{$table_name}_$index_name' on table '$table_name' is too long. The maximum is $max_length characters.", E_USER_ERROR);
- }
-
- // remove index length unless MySQL4
- if ('mysql_40' != $this->sql_layer)
- {
- $column = preg_replace('#:.*$#', '', $column);
- }
-
- switch ($this->sql_layer)
- {
- case 'firebird':
- case 'postgres':
- case 'oracle':
- case 'sqlite':
- $statements[] = 'CREATE INDEX ' . $table_name . '_' . $index_name . ' ON ' . $table_name . '(' . implode(', ', $column) . ')';
- break;
-
- case 'mysql_40':
- // add index size to definition as required by MySQL4
- foreach ($column as $i => $col)
- {
- if (false !== strpos($col, ':'))
- {
- list($col, $index_size) = explode(':', $col);
- $column[$i] = "$col($index_size)";
- }
- }
- // no break
- case 'mysql_41':
- $statements[] = 'ALTER TABLE ' . $table_name . ' ADD INDEX ' . $index_name . '(' . implode(', ', $column) . ')';
- break;
-
- case 'mssql':
- case 'mssqlnative':
- $statements[] = 'CREATE INDEX ' . $index_name . ' ON ' . $table_name . '(' . implode(', ', $column) . ') ON [PRIMARY]';
- break;
- }
-
- return $this->_sql_run_sql($statements);
- }
-
- /**
- * List all of the indices that belong to a table,
- * does not count:
- * * UNIQUE indices
- * * PRIMARY keys
- */
- function sql_list_index($table_name)
- {
- $index_array = array();
-
- if ($this->sql_layer == 'mssql' || $this->sql_layer == 'mssqlnative')
- {
- $sql = "EXEC sp_statistics '$table_name'";
- $result = $this->db->sql_query($sql);
- while ($row = $this->db->sql_fetchrow($result))
- {
- if ($row['TYPE'] == 3)
- {
- $index_array[] = $row['INDEX_NAME'];
- }
- }
- $this->db->sql_freeresult($result);
- }
- else
- {
- switch ($this->sql_layer)
- {
- case 'firebird':
- $sql = "SELECT LOWER(RDB\$INDEX_NAME) as index_name
- FROM RDB\$INDICES
- WHERE RDB\$RELATION_NAME = '" . strtoupper($table_name) . "'
- AND RDB\$UNIQUE_FLAG IS NULL
- AND RDB\$FOREIGN_KEY IS NULL";
- $col = 'index_name';
- break;
-
- case 'postgres':
- $sql = "SELECT ic.relname as index_name
- FROM pg_class bc, pg_class ic, pg_index i
- WHERE (bc.oid = i.indrelid)
- AND (ic.oid = i.indexrelid)
- AND (bc.relname = '" . $table_name . "')
- AND (i.indisunique != 't')
- AND (i.indisprimary != 't')";
- $col = 'index_name';
- break;
-
- case 'mysql_40':
- case 'mysql_41':
- $sql = 'SHOW KEYS
- FROM ' . $table_name;
- $col = 'Key_name';
- break;
-
- case 'oracle':
- $sql = "SELECT index_name
- FROM user_indexes
- WHERE table_name = '" . strtoupper($table_name) . "'
- AND generated = 'N'
- AND uniqueness = 'NONUNIQUE'";
- $col = 'index_name';
- break;
-
- case 'sqlite':
- $sql = "PRAGMA index_info('" . $table_name . "');";
- $col = 'name';
- break;
- }
-
- $result = $this->db->sql_query($sql);
- while ($row = $this->db->sql_fetchrow($result))
- {
- if (($this->sql_layer == 'mysql_40' || $this->sql_layer == 'mysql_41') && !$row['Non_unique'])
- {
- continue;
- }
-
- switch ($this->sql_layer)
- {
- case 'firebird':
- case 'oracle':
- case 'postgres':
- case 'sqlite':
- $row[$col] = substr($row[$col], strlen($table_name) + 1);
- break;
- }
-
- $index_array[] = $row[$col];
- }
- $this->db->sql_freeresult($result);
- }
-
- return array_map('strtolower', $index_array);
- }
-
- /**
- * Change column type (not name!)
- */
- function sql_column_change($table_name, $column_name, $column_data, $inline = false)
- {
- $column_data = $this->sql_prepare_column_data($table_name, $column_name, $column_data);
- $statements = array();
-
- switch ($this->sql_layer)
- {
- case 'firebird':
- // Change type...
- if (!empty($column_data['column_type_sql_default']))
- {
- $statements[] = 'ALTER TABLE ' . $table_name . ' ALTER COLUMN "' . strtoupper($column_name) . '" TYPE ' . ' ' . $column_data['column_type_sql_type'];
- $statements[] = 'ALTER TABLE ' . $table_name . ' ALTER COLUMN "' . strtoupper($column_name) . '" SET DEFAULT ' . ' ' . $column_data['column_type_sql_default'];
- }
- else
- {
- // TODO: try to change pkey without removing trigger, generator or constraints. ATM this query may fail.
- $statements[] = 'ALTER TABLE ' . $table_name . ' ALTER COLUMN "' . strtoupper($column_name) . '" TYPE ' . ' ' . $column_data['column_type_sql_type'];
- }
- break;
-
- case 'mssql':
- case 'mssqlnative':
- $statements[] = 'ALTER TABLE [' . $table_name . '] ALTER COLUMN [' . $column_name . '] ' . $column_data['column_type_sql'];
-
- if (!empty($column_data['default']))
- {
- // Using TRANSACT-SQL for this statement because we do not want to have colliding data if statements are executed at a later stage
- $statements[] = "DECLARE @drop_default_name VARCHAR(100), @cmd VARCHAR(1000)
- SET @drop_default_name =
- (SELECT so.name FROM sysobjects so
- JOIN sysconstraints sc ON so.id = sc.constid
- WHERE object_name(so.parent_obj) = '{$table_name}'
- AND so.xtype = 'D'
- AND sc.colid = (SELECT colid FROM syscolumns
- WHERE id = object_id('{$table_name}')
- AND name = '{$column_name}'))
- IF @drop_default_name <> ''
- BEGIN
- SET @cmd = 'ALTER TABLE [{$table_name}] DROP CONSTRAINT [' + @drop_default_name + ']'
- EXEC(@cmd)
- END
- SET @cmd = 'ALTER TABLE [{$table_name}] ADD CONSTRAINT [DF_{$table_name}_{$column_name}_1] {$column_data['default']} FOR [{$column_name}]'
- EXEC(@cmd)";
- }
- break;
-
- case 'mysql_40':
- case 'mysql_41':
- $statements[] = 'ALTER TABLE `' . $table_name . '` CHANGE `' . $column_name . '` `' . $column_name . '` ' . $column_data['column_type_sql'];
- break;
-
- case 'oracle':
- $statements[] = 'ALTER TABLE ' . $table_name . ' MODIFY ' . $column_name . ' ' . $column_data['column_type_sql'];
- break;
-
- case 'postgres':
- $sql = 'ALTER TABLE ' . $table_name . ' ';
-
- $sql_array = array();
- $sql_array[] = 'ALTER COLUMN ' . $column_name . ' TYPE ' . $column_data['column_type'];
-
- if (isset($column_data['null']))
- {
- if ($column_data['null'] == 'NOT NULL')
- {
- $sql_array[] = 'ALTER COLUMN ' . $column_name . ' SET NOT NULL';
- }
- else if ($column_data['null'] == 'NULL')
- {
- $sql_array[] = 'ALTER COLUMN ' . $column_name . ' DROP NOT NULL';
- }
- }
-
- if (isset($column_data['default']))
- {
- $sql_array[] = 'ALTER COLUMN ' . $column_name . ' SET DEFAULT ' . $column_data['default'];
- }
-
- // we don't want to double up on constraints if we change different number data types
- if (isset($column_data['constraint']))
- {
- $constraint_sql = "SELECT consrc as constraint_data
- FROM pg_constraint, pg_class bc
- WHERE conrelid = bc.oid
- AND bc.relname = '{$table_name}'
- AND NOT EXISTS (
- SELECT *
- FROM pg_constraint as c, pg_inherits as i
- WHERE i.inhrelid = pg_constraint.conrelid
- AND c.conname = pg_constraint.conname
- AND c.consrc = pg_constraint.consrc
- AND c.conrelid = i.inhparent
- )";
-
- $constraint_exists = false;
-
- $result = $this->db->sql_query($constraint_sql);
- while ($row = $this->db->sql_fetchrow($result))
- {
- if (trim($row['constraint_data']) == trim($column_data['constraint']))
- {
- $constraint_exists = true;
- break;
- }
- }
- $this->db->sql_freeresult($result);
-
- if (!$constraint_exists)
- {
- $sql_array[] = 'ADD ' . $column_data['constraint'];
- }
- }
-
- $sql .= implode(', ', $sql_array);
-
- $statements[] = $sql;
- break;
-
- case 'sqlite':
-
- if ($inline && $this->return_statements)
- {
- return $column_name . ' ' . $column_data['column_type_sql'];
- }
-
- $sql = "SELECT sql
- FROM sqlite_master
- WHERE type = 'table'
- AND name = '{$table_name}'
- ORDER BY type DESC, name;";
- $result = $this->db->sql_query($sql);
-
- if (!$result)
- {
- break;
- }
-
- $row = $this->db->sql_fetchrow($result);
- $this->db->sql_freeresult($result);
-
- $statements[] = 'begin';
-
- // Create a temp table and populate it, destroy the existing one
- $statements[] = preg_replace('#CREATE\s+TABLE\s+"?' . $table_name . '"?#i', 'CREATE TEMPORARY TABLE ' . $table_name . '_temp', $row['sql']);
- $statements[] = 'INSERT INTO ' . $table_name . '_temp SELECT * FROM ' . $table_name;
- $statements[] = 'DROP TABLE ' . $table_name;
-
- preg_match('#\((.*)\)#s', $row['sql'], $matches);
-
- $new_table_cols = trim($matches[1]);
- $old_table_cols = preg_split('/,(?![\s\w]+\))/m', $new_table_cols);
- $column_list = array();
-
- foreach ($old_table_cols as $key => $declaration)
- {
- $entities = preg_split('#\s+#', trim($declaration));
- $column_list[] = $entities[0];
- if ($entities[0] == $column_name)
- {
- $old_table_cols[$key] = $column_name . ' ' . $column_data['column_type_sql'];
- }
- }
-
- $columns = implode(',', $column_list);
-
- // create a new table and fill it up. destroy the temp one
- $statements[] = 'CREATE TABLE ' . $table_name . ' (' . implode(',', $old_table_cols) . ');';
- $statements[] = 'INSERT INTO ' . $table_name . ' (' . $columns . ') SELECT ' . $columns . ' FROM ' . $table_name . '_temp;';
- $statements[] = 'DROP TABLE ' . $table_name . '_temp';
-
- $statements[] = 'commit';
-
- break;
- }
-
- return $this->_sql_run_sql($statements);
- }
-}
-
-?> \ No newline at end of file
e.pm:772
-#: printer/printerdrake.pm:1555 printer/printerdrake.pm:1603
-#: printer/printerdrake.pm:1640 printer/printerdrake.pm:1685
-#: printer/printerdrake.pm:1689 printer/printerdrake.pm:1703
-#: printer/printerdrake.pm:1795 printer/printerdrake.pm:1876
-#: printer/printerdrake.pm:1880 printer/printerdrake.pm:1884
-#: printer/printerdrake.pm:1933 printer/printerdrake.pm:1991
-#: printer/printerdrake.pm:1995 printer/printerdrake.pm:2009
-#: printer/printerdrake.pm:2129 printer/printerdrake.pm:2133
-#: printer/printerdrake.pm:2176 printer/printerdrake.pm:2249
-#: printer/printerdrake.pm:2267 printer/printerdrake.pm:2276
-#: printer/printerdrake.pm:2285 printer/printerdrake.pm:2296
-#: printer/printerdrake.pm:2360 printer/printerdrake.pm:2511
-#: printer/printerdrake.pm:2924 printer/printerdrake.pm:3208
-#: printer/printerdrake.pm:3214 printer/printerdrake.pm:3779
-#: printer/printerdrake.pm:3783 printer/printerdrake.pm:3787
-#: printer/printerdrake.pm:4183 printer/printerdrake.pm:4424
-#: printer/printerdrake.pm:4452 printer/printerdrake.pm:4529
-#: printer/printerdrake.pm:4595 printer/printerdrake.pm:4715
-#: standalone/drakTermServ:394 standalone/drakTermServ:464
-#: standalone/drakTermServ:473 standalone/drakTermServ:774
-#: standalone/drakTermServ:781 standalone/drakTermServ:802
-#: standalone/drakTermServ:849 standalone/drakTermServ:1095
-#: standalone/drakTermServ:1572 standalone/drakTermServ:1581
-#: standalone/drakTermServ:1589 standalone/drakTermServ:1594
-#: standalone/drakTermServ:1602 standalone/drakTermServ:1618
-#: standalone/drakTermServ:1638 standalone/drakauth:36
-#: standalone/drakbackup:511 standalone/drakbackup:625
+#: network/netconnect.pm:833 network/netconnect.pm:862
+#: network/netconnect.pm:962 network/netconnect.pm:966
+#: network/netconnect.pm:970 network/netconnect.pm:975
+#: network/netconnect.pm:1120 network/netconnect.pm:1124
+#: network/netconnect.pm:1243 network/netconnect.pm:1248
+#: network/netconnect.pm:1268 network/netconnect.pm:1427
+#: network/thirdparty.pm:319 network/thirdparty.pm:326
+#: network/thirdparty.pm:370 network/thirdparty.pm:372
+#: network/thirdparty.pm:393 network/thirdparty.pm:417
+#: printer/printerdrake.pm:244 printer/printerdrake.pm:251
+#: printer/printerdrake.pm:276 printer/printerdrake.pm:422
+#: printer/printerdrake.pm:427 printer/printerdrake.pm:440
+#: printer/printerdrake.pm:450 printer/printerdrake.pm:514
+#: printer/printerdrake.pm:686 printer/printerdrake.pm:690
+#: printer/printerdrake.pm:772 printer/printerdrake.pm:1555
+#: printer/printerdrake.pm:1603 printer/printerdrake.pm:1640
+#: printer/printerdrake.pm:1685 printer/printerdrake.pm:1689
+#: printer/printerdrake.pm:1703 printer/printerdrake.pm:1795
+#: printer/printerdrake.pm:1876 printer/printerdrake.pm:1880
+#: printer/printerdrake.pm:1884 printer/printerdrake.pm:1933
+#: printer/printerdrake.pm:1991 printer/printerdrake.pm:1995
+#: printer/printerdrake.pm:2009 printer/printerdrake.pm:2129
+#: printer/printerdrake.pm:2133 printer/printerdrake.pm:2176
+#: printer/printerdrake.pm:2249 printer/printerdrake.pm:2267
+#: printer/printerdrake.pm:2276 printer/printerdrake.pm:2285
+#: printer/printerdrake.pm:2296 printer/printerdrake.pm:2360
+#: printer/printerdrake.pm:2511 printer/printerdrake.pm:2924
+#: printer/printerdrake.pm:3208 printer/printerdrake.pm:3214
+#: printer/printerdrake.pm:3779 printer/printerdrake.pm:3783
+#: printer/printerdrake.pm:3787 printer/printerdrake.pm:4183
+#: printer/printerdrake.pm:4424 printer/printerdrake.pm:4452
+#: printer/printerdrake.pm:4529 printer/printerdrake.pm:4595
+#: printer/printerdrake.pm:4715 standalone/drakTermServ:394
+#: standalone/drakTermServ:464 standalone/drakTermServ:473
+#: standalone/drakTermServ:774 standalone/drakTermServ:781
+#: standalone/drakTermServ:802 standalone/drakTermServ:849
+#: standalone/drakTermServ:1095 standalone/drakTermServ:1572
+#: standalone/drakTermServ:1581 standalone/drakTermServ:1589
+#: standalone/drakTermServ:1594 standalone/drakTermServ:1602
+#: standalone/drakTermServ:1618 standalone/drakTermServ:1638
+#: standalone/drakauth:36 standalone/drakbackup:511 standalone/drakbackup:625
#: standalone/drakbackup:1105 standalone/drakbackup:1136
#: standalone/drakbackup:1321 standalone/drakbackup:1653
#: standalone/drakbackup:1809 standalone/drakbackup:2525
@@ -1274,7 +1274,7 @@ msgid "Input method:"
msgstr "የX ዘገባ የማስትገባት ዘዴ"
#: any.pm:856 install_any.pm:423 network/netconnect.pm:318
-#: network/netconnect.pm:323 network/netconnect.pm:1229 network/wireless.pm:7
+#: network/netconnect.pm:323 network/netconnect.pm:1234 network/wireless.pm:7
#: printer/printerdrake.pm:105
#, c-format
msgid "None"
@@ -2751,7 +2751,7 @@ msgstr ""
msgid "The encryption keys do not match"
msgstr ""
-#: diskdrake/interactive.pm:1329 network/netconnect.pm:1065
+#: diskdrake/interactive.pm:1329 network/netconnect.pm:1070
#: standalone/drakconnect:419 standalone/drakroam:120
#, c-format
msgid "Encryption key"
@@ -3423,7 +3423,7 @@ msgstr "(ስለ ቃላት አጻጻፍ አስተያየት የለም)"
msgid "There's no known driver for your sound card (%s)"
msgstr ""
-#: harddrake/sound.pm:291
+#: harddrake/sound.pm:291 network/netconnect.pm:98 network/netconnect.pm:833
#, fuzzy, c-format
msgid "Unknown driver"
msgstr "ያልታወቀ የሆሄያት ኮድ፦ "
@@ -4877,7 +4877,7 @@ msgstr ""
msgid "Insert the CD 1 again"
msgstr ""
-#: install_any.pm:479 network/netconnect.pm:857 standalone/drakbackup:114
+#: install_any.pm:479 network/netconnect.pm:862 standalone/drakbackup:114
#, fuzzy, c-format
msgid "No device found"
msgstr "ምንም ጽሑፍ አልተገኘም"
@@ -9157,7 +9157,7 @@ msgid "Use BPALogin (needed for Telstra)"
msgstr ""
#: network/netconnect.pm:349 network/netconnect.pm:671
-#: network/netconnect.pm:822 network/netconnect.pm:1162
+#: network/netconnect.pm:822 network/netconnect.pm:1167
#, c-format
msgid "Select the network interface to configure:"
msgstr "ለማስተካከል የመረብ እይታ ይምረጡ:"
@@ -9307,7 +9307,7 @@ msgstr ""
msgid "IP parameters"
msgstr "IP መለኪያዎች"
-#: network/netconnect.pm:603 network/netconnect.pm:933
+#: network/netconnect.pm:603 network/netconnect.pm:938
#: printer/printerdrake.pm:460 standalone/drakconnect:109
#: standalone/drakconnect:316 standalone/drakconnect:882
#: standalone/drakhosts:197 standalone/drakroam:122 standalone/drakups:286
@@ -9409,24 +9409,24 @@ msgstr ""
msgid "Use a Windows driver (with ndiswrapper)"
msgstr ""
-#: network/netconnect.pm:888
+#: network/netconnect.pm:893
#, c-format
msgid "Zeroconf hostname resolution"
msgstr ""
-#: network/netconnect.pm:889 network/netconnect.pm:920
+#: network/netconnect.pm:894 network/netconnect.pm:925
#, c-format
msgid "Configuring network device %s (driver %s)"
msgstr ""
-#: network/netconnect.pm:890
+#: network/netconnect.pm:895
#, c-format
msgid ""
"The following protocols can be used to configure a LAN connection. Please "
"choose the one you want to use"
msgstr ""
-#: network/netconnect.pm:921
+#: network/netconnect.pm:926
#, c-format
msgid ""
"Please enter the IP configuration for this machine.\n"
@@ -9434,198 +9434,198 @@ msgid ""
"notation (for example, 1.2.3.4)."
msgstr ""
-#: network/netconnect.pm:928 standalone/drakconnect:373
+#: network/netconnect.pm:933 standalone/drakconnect:373
#, c-format
msgid "Assign host name from DHCP address"
msgstr ""
-#: network/netconnect.pm:929 standalone/drakconnect:375
+#: network/netconnect.pm:934 standalone/drakconnect:375
#, fuzzy, c-format
msgid "DHCP host name"
msgstr "ህገ ወጥ የዶሴ ስም"
-#: network/netconnect.pm:934 standalone/drakconnect:321
+#: network/netconnect.pm:939 standalone/drakconnect:321
#: standalone/drakconnect:883 standalone/drakgw:181
#, c-format
msgid "Netmask"
msgstr "Netmask"
-#: network/netconnect.pm:936 standalone/drakconnect:437
+#: network/netconnect.pm:941 standalone/drakconnect:437
#, c-format
msgid "Track network card id (useful for laptops)"
msgstr ""
-#: network/netconnect.pm:937 standalone/drakconnect:438
+#: network/netconnect.pm:942 standalone/drakconnect:438
#, fuzzy, c-format
msgid "Network Hotplugging"
msgstr "Name=መረብ"
-#: network/netconnect.pm:939 standalone/drakconnect:432
+#: network/netconnect.pm:944 standalone/drakconnect:432
#, fuzzy, c-format
msgid "Start at boot"
msgstr "ቍጥር አሰጣጡን እንደገና በ...ላይ ጀምር፦"
-#: network/netconnect.pm:941 standalone/drakconnect:460
+#: network/netconnect.pm:946 standalone/drakconnect:460
#, fuzzy, c-format
msgid "Metric"
msgstr "ሜክሲኮ"
-#: network/netconnect.pm:942
+#: network/netconnect.pm:947
#, c-format
msgid "Enable IPv6 to IPv4 tunnel"
msgstr ""
-#: network/netconnect.pm:944 standalone/drakconnect:369
+#: network/netconnect.pm:949 standalone/drakconnect:369
#: standalone/drakconnect:886
#, c-format
msgid "DHCP client"
msgstr ""
-#: network/netconnect.pm:946 standalone/drakconnect:379
+#: network/netconnect.pm:951 standalone/drakconnect:379
#, c-format
msgid "DHCP timeout (in seconds)"
msgstr ""
-#: network/netconnect.pm:947 standalone/drakconnect:382
+#: network/netconnect.pm:952 standalone/drakconnect:382
#, fuzzy, c-format
msgid "Get DNS servers from DHCP"
msgstr "ቀዳሚ ተጠሪ ይጠቀም"
-#: network/netconnect.pm:948 standalone/drakconnect:383
+#: network/netconnect.pm:953 standalone/drakconnect:383
#, c-format
msgid "Get YP servers from DHCP"
msgstr ""
-#: network/netconnect.pm:949 standalone/drakconnect:384
+#: network/netconnect.pm:954 standalone/drakconnect:384
#, c-format
msgid "Get NTPD servers from DHCP"
msgstr ""
-#: network/netconnect.pm:957 printer/printerdrake.pm:1876
+#: network/netconnect.pm:962 printer/printerdrake.pm:1876
#: standalone/drakconnect:676
#, c-format
msgid "IP address should be in format 1.2.3.4"
msgstr ""
-#: network/netconnect.pm:961 standalone/drakconnect:680
+#: network/netconnect.pm:966 standalone/drakconnect:680
#, c-format
msgid "Netmask should be in format 255.255.224.0"
msgstr ""
-#: network/netconnect.pm:965
+#: network/netconnect.pm:970
#, c-format
msgid "Warning: IP address %s is usually reserved!"
msgstr ""
-#: network/netconnect.pm:970 standalone/drakTermServ:1856
+#: network/netconnect.pm:975 standalone/drakTermServ:1856
#: standalone/drakTermServ:1857 standalone/drakTermServ:1858
#, c-format
msgid "%s already in use\n"
msgstr "%s አስቀድሞ ጥቅም ላይ ነው\n"
-#: network/netconnect.pm:1010
+#: network/netconnect.pm:1015
#, fuzzy, c-format
msgid "Choose an ndiswrapper driver"
msgstr "የነሲብ URLን አታስችል"
-#: network/netconnect.pm:1012
+#: network/netconnect.pm:1017
#, c-format
msgid "Use the ndiswrapper driver %s"
msgstr ""
-#: network/netconnect.pm:1012
+#: network/netconnect.pm:1017
#, fuzzy, c-format
msgid "Install a new driver"
msgstr "ሲስተም ትከል"
-#: network/netconnect.pm:1024
+#: network/netconnect.pm:1029
#, c-format
msgid "Select a device:"
msgstr ""
-#: network/netconnect.pm:1053
+#: network/netconnect.pm:1058
#, c-format
msgid "Please enter the wireless parameters for this card:"
msgstr ""
-#: network/netconnect.pm:1056 standalone/drakconnect:404
+#: network/netconnect.pm:1061 standalone/drakconnect:404
#: standalone/drakroam:52
#, fuzzy, c-format
msgid "Operating Mode"
msgstr "የመሸፈኛ ዘዴ"
-#: network/netconnect.pm:1057
+#: network/netconnect.pm:1062
#, c-format
msgid "Ad-hoc"
msgstr "Ad-hoc"
-#: network/netconnect.pm:1057
+#: network/netconnect.pm:1062
#, c-format
msgid "Managed"
msgstr ""
-#: network/netconnect.pm:1057
+#: network/netconnect.pm:1062
#, c-format
msgid "Master"
msgstr "ገዢ"
-#: network/netconnect.pm:1057
+#: network/netconnect.pm:1062
#, c-format
msgid "Repeater"
msgstr "ደጋሚ"
-#: network/netconnect.pm:1057
+#: network/netconnect.pm:1062
#, c-format
msgid "Secondary"
msgstr "ሁለተኛ"
-#: network/netconnect.pm:1057
+#: network/netconnect.pm:1062
#, c-format
msgid "Auto"
msgstr "ራስ-ገዝ"
-#: network/netconnect.pm:1060 standalone/drakconnect:405
+#: network/netconnect.pm:1065 standalone/drakconnect:405
#: standalone/drakroam:115
#, c-format
msgid "Network name (ESSID)"
msgstr "የመረብ ስም (ESSID)"
-#: network/netconnect.pm:1061 standalone/drakroam:116
+#: network/netconnect.pm:1066 standalone/drakroam:116
#, c-format
msgid "Encryption mode"
msgstr ""
-#: network/netconnect.pm:1066
+#: network/netconnect.pm:1071
#, c-format
msgid "Allow access point roaming"
msgstr ""
-#: network/netconnect.pm:1068 standalone/drakconnect:406
+#: network/netconnect.pm:1073 standalone/drakconnect:406
#, c-format
msgid "Network ID"
msgstr "የመረብ መለያ"
-#: network/netconnect.pm:1069 standalone/drakconnect:407
+#: network/netconnect.pm:1074 standalone/drakconnect:407
#, c-format
msgid "Operating frequency"
msgstr ""
-#: network/netconnect.pm:1070 standalone/drakconnect:408
+#: network/netconnect.pm:1075 standalone/drakconnect:408
#, c-format
msgid "Sensitivity threshold"
msgstr ""
-#: network/netconnect.pm:1071 standalone/drakconnect:409
+#: network/netconnect.pm:1076 standalone/drakconnect:409
#, fuzzy, c-format
msgid "Bitrate (in b/s)"
msgstr "በጥቅም ላይ ያለ"
-#: network/netconnect.pm:1072 standalone/drakconnect:420
+#: network/netconnect.pm:1077 standalone/drakconnect:420
#, c-format
msgid "RTS/CTS"
msgstr "RTS/CTS"
-#: network/netconnect.pm:1073
+#: network/netconnect.pm:1078
#, c-format
msgid ""
"RTS/CTS adds a handshake before each packet transmission to make sure that "
@@ -9639,17 +9639,17 @@ msgid ""
"or off."
msgstr ""
-#: network/netconnect.pm:1080 standalone/drakconnect:421
+#: network/netconnect.pm:1085 standalone/drakconnect:421
#, c-format
msgid "Fragmentation"
msgstr ""
-#: network/netconnect.pm:1081 standalone/drakconnect:422
+#: network/netconnect.pm:1086 standalone/drakconnect:422
#, c-format
msgid "iwconfig command extra arguments"
msgstr ""
-#: network/netconnect.pm:1082
+#: network/netconnect.pm:1087
#, c-format
msgid ""
"Here, one can configure some extra wireless parameters such as:\n"
@@ -9660,12 +9660,12 @@ msgid ""
msgstr ""
#. -PO: split the "xyz command extra argument" translated string into two lines if it's bigger than the english one
-#: network/netconnect.pm:1089 standalone/drakconnect:423
+#: network/netconnect.pm:1094 standalone/drakconnect:423
#, c-format
msgid "iwspy command extra arguments"
msgstr ""
-#: network/netconnect.pm:1090
+#: network/netconnect.pm:1095
#, c-format
msgid ""
"iwspy is used to set a list of addresses in a wireless network\n"
@@ -9677,12 +9677,12 @@ msgid ""
"See iwpspy(8) man page for further information."
msgstr ""
-#: network/netconnect.pm:1099 standalone/drakconnect:424
+#: network/netconnect.pm:1104 standalone/drakconnect:424
#, c-format
msgid "iwpriv command extra arguments"
msgstr ""
-#: network/netconnect.pm:1100
+#: network/netconnect.pm:1105
#, c-format
msgid ""
"iwpriv enable to set up optionals (private) parameters of a wireless "
@@ -9700,51 +9700,51 @@ msgid ""
"See iwpriv(8) man page for further information."
msgstr ""
-#: network/netconnect.pm:1115
+#: network/netconnect.pm:1120
#, c-format
msgid ""
"Freq should have the suffix k, M or G (for example, \"2.46G\" for 2.46 GHz "
"frequency), or add enough '0' (zeroes)."
msgstr ""
-#: network/netconnect.pm:1119
+#: network/netconnect.pm:1124
#, c-format
msgid ""
"Rate should have the suffix k, M or G (for example, \"11M\" for 11M), or add "
"enough '0' (zeroes)."
msgstr ""
-#: network/netconnect.pm:1162
+#: network/netconnect.pm:1167
#, c-format
msgid "DVB configuration"
msgstr ""
-#: network/netconnect.pm:1163
+#: network/netconnect.pm:1168
#, c-format
msgid "DVB Adapter"
msgstr ""
-#: network/netconnect.pm:1180
+#: network/netconnect.pm:1185
#, c-format
msgid "DVB adapter settings"
msgstr ""
-#: network/netconnect.pm:1183
+#: network/netconnect.pm:1188
#, c-format
msgid "Adapter card"
msgstr ""
-#: network/netconnect.pm:1184
+#: network/netconnect.pm:1189
#, c-format
msgid "Net demux"
msgstr ""
-#: network/netconnect.pm:1185
+#: network/netconnect.pm:1190
#, c-format
msgid "PID"
msgstr ""
-#: network/netconnect.pm:1213
+#: network/netconnect.pm:1218
#, c-format
msgid ""
"Please enter your host name.\n"
@@ -9753,67 +9753,67 @@ msgid ""
"You may also enter the IP address of the gateway if you have one."
msgstr ""
-#: network/netconnect.pm:1218
+#: network/netconnect.pm:1223
#, c-format
msgid "Last but not least you can also type in your DNS server IP addresses."
msgstr ""
-#: network/netconnect.pm:1220 standalone/drakconnect:991
+#: network/netconnect.pm:1225 standalone/drakconnect:991
#, fuzzy, c-format
msgid "Host name (optional)"
msgstr "ህገ ወጥ የዶሴ ስም"
-#: network/netconnect.pm:1220 standalone/drakhosts:197
+#: network/netconnect.pm:1225 standalone/drakhosts:197
#, c-format
msgid "Host name"
msgstr "የእንግዳ ተቀባይ ስም"
-#: network/netconnect.pm:1222
+#: network/netconnect.pm:1227
#, c-format
msgid "DNS server 1"
msgstr "DNS ሰርቨር 1"
-#: network/netconnect.pm:1223
+#: network/netconnect.pm:1228
#, c-format
msgid "DNS server 2"
msgstr "DNS ሰርቨር 2"
-#: network/netconnect.pm:1224
+#: network/netconnect.pm:1229
#, c-format
msgid "DNS server 3"
msgstr "DNS ሰርቨር 3"
-#: network/netconnect.pm:1225
+#: network/netconnect.pm:1230
#, fuzzy, c-format
msgid "Search domain"
msgstr "የObjectDirectory ዶሜን"
-#: network/netconnect.pm:1226
+#: network/netconnect.pm:1231
#, c-format
msgid "By default search domain will be set from the fully-qualified host name"
msgstr ""
-#: network/netconnect.pm:1227
+#: network/netconnect.pm:1232
#, c-format
msgid "Gateway (e.g. %s)"
msgstr "Gateway (ለምሳሌ: %s)"
-#: network/netconnect.pm:1229
+#: network/netconnect.pm:1234
#, c-format
msgid "Gateway device"
msgstr "የGateway መሳሪያ"
-#: network/netconnect.pm:1238
+#: network/netconnect.pm:1243
#, c-format
msgid "DNS server address should be in format 1.2.3.4"
msgstr ""
-#: network/netconnect.pm:1243 standalone/drakconnect:685
+#: network/netconnect.pm:1248 standalone/drakconnect:685
#, c-format
msgid "Gateway address should be in format 1.2.3.4"
msgstr ""
-#: network/netconnect.pm:1256
+#: network/netconnect.pm:1261
#, c-format
msgid ""
"If desired, enter a Zeroconf hostname.\n"
@@ -9822,88 +9822,88 @@ msgid ""
"It is not necessary on most networks."
msgstr ""
-#: network/netconnect.pm:1260
+#: network/netconnect.pm:1265
#, fuzzy, c-format
msgid "Zeroconf Host name"
msgstr "ህገ ወጥ የዶሴ ስም"
-#: network/netconnect.pm:1263
+#: network/netconnect.pm:1268
#, c-format
msgid "Zeroconf host name must not contain a ."
msgstr ""
-#: network/netconnect.pm:1273
+#: network/netconnect.pm:1278
#, fuzzy, c-format
msgid "Do you want to allow users to start the connection?"
msgstr "ምርጫውን መሞከር ይፈልጋሉ?"
-#: network/netconnect.pm:1286
+#: network/netconnect.pm:1291
#, c-format
msgid "Do you want to start the connection at boot?"
msgstr ""
-#: network/netconnect.pm:1302
+#: network/netconnect.pm:1307
#, fuzzy, c-format
msgid "Automatically at boot"
msgstr "ቍጥር አሰጣጡን እንደገና በ...ላይ ጀምር፦"
-#: network/netconnect.pm:1304
+#: network/netconnect.pm:1309
#, c-format
msgid "By using Net Applet in the system tray"
msgstr ""
-#: network/netconnect.pm:1306
+#: network/netconnect.pm:1311
#, c-format
msgid "Manually (the interface would still be activated at boot)"
msgstr ""
-#: network/netconnect.pm:1315
+#: network/netconnect.pm:1320
#, fuzzy, c-format
msgid "How do you want to dial this connection?"
msgstr "ምርጫውን መሞከር ይፈልጋሉ?"
-#: network/netconnect.pm:1328
+#: network/netconnect.pm:1333
#, c-format
msgid "Do you want to try to connect to the Internet now?"
msgstr ""
-#: network/netconnect.pm:1336 standalone/drakconnect:1023
+#: network/netconnect.pm:1341 standalone/drakconnect:1023
#, c-format
msgid "Testing your connection..."
msgstr "ግንኙነትዎን በመሞከር ላይ..."
-#: network/netconnect.pm:1361
+#: network/netconnect.pm:1366
#, c-format
msgid "The system is now connected to the Internet."
msgstr "ሲስተሙ አሁን ከኢንተርኔት ጋር ተገናኝቷል።"
-#: network/netconnect.pm:1362
+#: network/netconnect.pm:1367
#, c-format
msgid "For security reasons, it will be disconnected now."
msgstr "ለድህንነት ሲባል፣ ግንኙነቱ አሁን ይቋረጣል።"
-#: network/netconnect.pm:1363
+#: network/netconnect.pm:1368
#, c-format
msgid ""
"The system does not seem to be connected to the Internet.\n"
"Try to reconfigure your connection."
msgstr ""
-#: network/netconnect.pm:1378
+#: network/netconnect.pm:1383
#, c-format
msgid ""
"Congratulations, the network and Internet configuration is finished.\n"
"\n"
msgstr ""
-#: network/netconnect.pm:1381
+#: network/netconnect.pm:1386
#, c-format
msgid ""
"After this is done, we recommend that you restart your X environment to "
"avoid any hostname-related problems."
msgstr ""
-#: network/netconnect.pm:1382
+#: network/netconnect.pm:1387
#, c-format
msgid ""
"Problems occurred during configuration.\n"
@@ -9911,29 +9911,29 @@ msgid ""
"work, you might want to relaunch the configuration."
msgstr ""
-#: network/netconnect.pm:1393
+#: network/netconnect.pm:1398
#, fuzzy, c-format
msgid "(detected on port %s)"
msgstr "መረጃ በ%s መጠቀሚያ ፕሮግራም ላይ"
# -PO: here, "(detected)" string will be appended to eg "ADSL connection"
#. -PO: here, "(detected)" string will be appended to eg "ADSL connection"
-#: network/netconnect.pm:1395
+#: network/netconnect.pm:1400
#, fuzzy, c-format
msgid "(detected %s)"
msgstr "አውቶማቲካሊ ተፈልጎ የተገኘ"
-#: network/netconnect.pm:1395
+#: network/netconnect.pm:1400
#, c-format
msgid "(detected)"
msgstr "(ተገኝቷል)"
-#: network/netconnect.pm:1396
+#: network/netconnect.pm:1401
#, c-format
msgid "Network Configuration"
msgstr "የመረብ ምርጫ"
-#: network/netconnect.pm:1397
+#: network/netconnect.pm:1402
#, c-format
msgid ""
"Because you are doing a network installation, your network is already "
@@ -9942,12 +9942,12 @@ msgid ""
"Internet & Network connection.\n"
msgstr ""
-#: network/netconnect.pm:1400
+#: network/netconnect.pm:1405
#, c-format
msgid "The network needs to be restarted. Do you want to restart it?"
msgstr ""
-#: network/netconnect.pm:1401
+#: network/netconnect.pm:1406
#, c-format
msgid ""
"A problem occurred while restarting the network: \n"
@@ -9955,7 +9955,7 @@ msgid ""
"%s"
msgstr ""
-#: network/netconnect.pm:1402
+#: network/netconnect.pm:1407
#, c-format
msgid ""
"We are now going to configure the %s connection.\n"
@@ -9964,12 +9964,12 @@ msgid ""
"Press \"%s\" to continue."
msgstr ""
-#: network/netconnect.pm:1403
+#: network/netconnect.pm:1408
#, c-format
msgid "Configuration is complete, do you want to apply settings?"
msgstr ""
-#: network/netconnect.pm:1404
+#: network/netconnect.pm:1409
#, c-format
msgid ""
"You have configured multiple ways to connect to the Internet.\n"
@@ -9977,12 +9977,12 @@ msgid ""
"\n"
msgstr ""
-#: network/netconnect.pm:1405
+#: network/netconnect.pm:1410
#, c-format
msgid "Internet connection"
msgstr "የኢንተርኔት ግንኙነት"
-#: network/netconnect.pm:1422
+#: network/netconnect.pm:1427
#, c-format
msgid ""
"An unexpected error has happened:\n"
diff --git a/perl-install/share/po/ar.po b/perl-install/share/po/ar.po
index 294d56b76..593a9483a 100644
--- a/perl-install/share/po/ar.po
+++ b/perl-install/share/po/ar.po
@@ -9,7 +9,7 @@
msgid ""
msgstr ""
"Project-Id-Version: DrakX\n"
-"POT-Creation-Date: 2005-10-22 19:23+0800\n"
+"POT-Creation-Date: 2005-10-28 23:26+0800\n"
"PO-Revision-Date: 2005-03-03 01:06+0300\n"
"Last-Translator: Ossama M. Khayat <okhayat@yahoo.com>\n"
"Language-Team: Arabic <support@arabeyes.org>\n"
@@ -180,47 +180,47 @@ msgstr "الرجاء الانتظار، جاري اكتشاف وتهيئة ال
#: interactive/http.pm:117 interactive/http.pm:118 modules/interactive.pm:19
#: network/ndiswrapper.pm:27 network/ndiswrapper.pm:42
#: network/ndiswrapper.pm:89 network/ndiswrapper.pm:101
-#: network/netconnect.pm:857 network/netconnect.pm:957
-#: network/netconnect.pm:961 network/netconnect.pm:965
-#: network/netconnect.pm:970 network/netconnect.pm:1115
-#: network/netconnect.pm:1119 network/netconnect.pm:1238
-#: network/netconnect.pm:1243 network/netconnect.pm:1263
-#: network/netconnect.pm:1422 network/thirdparty.pm:319
-#: network/thirdparty.pm:326 network/thirdparty.pm:370
-#: network/thirdparty.pm:372 network/thirdparty.pm:393
-#: network/thirdparty.pm:417 printer/printerdrake.pm:244
-#: printer/printerdrake.pm:251 printer/printerdrake.pm:276
-#: printer/printerdrake.pm:422 printer/printerdrake.pm:427
-#: printer/printerdrake.pm:440 printer/printerdrake.pm:450
-#: printer/printerdrake.pm:514 printer/printerdrake.pm:686
-#: printer/printerdrake.pm:690 printer/printerdrake.pm:772
-#: printer/printerdrake.pm:1555 printer/printerdrake.pm:1603
-#: printer/printerdrake.pm:1640 printer/printerdrake.pm:1685
-#: printer/printerdrake.pm:1689 printer/printerdrake.pm:1703
-#: printer/printerdrake.pm:1795 printer/printerdrake.pm:1876
-#: printer/printerdrake.pm:1880 printer/printerdrake.pm:1884
-#: printer/printerdrake.pm:1933 printer/printerdrake.pm:1991
-#: printer/printerdrake.pm:1995 printer/printerdrake.pm:2009
-#: printer/printerdrake.pm:2129 printer/printerdrake.pm:2133
-#: printer/printerdrake.pm:2176 printer/printerdrake.pm:2249
-#: printer/printerdrake.pm:2267 printer/printerdrake.pm:2276
-#: printer/printerdrake.pm:2285 printer/printerdrake.pm:2296
-#: printer/printerdrake.pm:2360 printer/printerdrake.pm:2511
-#: printer/printerdrake.pm:2924 printer/printerdrake.pm:3208
-#: printer/printerdrake.pm:3214 printer/printerdrake.pm:3779
-#: printer/printerdrake.pm:3783 printer/printerdrake.pm:3787
-#: printer/printerdrake.pm:4183 printer/printerdrake.pm:4424
-#: printer/printerdrake.pm:4452 printer/printerdrake.pm:4529
-#: printer/printerdrake.pm:4595 printer/printerdrake.pm:4715
-#: standalone/drakTermServ:394 standalone/drakTermServ:464
-#: standalone/drakTermServ:473 standalone/drakTermServ:774
-#: standalone/drakTermServ:781 standalone/drakTermServ:802
-#: standalone/drakTermServ:849 standalone/drakTermServ:1095
-#: standalone/drakTermServ:1572 standalone/drakTermServ:1581
-#: standalone/drakTermServ:1589 standalone/drakTermServ:1594
-#: standalone/drakTermServ:1602 standalone/drakTermServ:1618
-#: standalone/drakTermServ:1638 standalone/drakauth:36
-#: standalone/drakbackup:511 standalone/drakbackup:625
+#: network/netconnect.pm:833 network/netconnect.pm:862
+#: network/netconnect.pm:962 network/netconnect.pm:966
+#: network/netconnect.pm:970 network/netconnect.pm:975
+#: network/netconnect.pm:1120 network/netconnect.pm:1124
+#: network/netconnect.pm:1243 network/netconnect.pm:1248
+#: network/netconnect.pm:1268 network/netconnect.pm:1427
+#: network/thirdparty.pm:319 network/thirdparty.pm:326
+#: network/thirdparty.pm:370 network/thirdparty.pm:372
+#: network/thirdparty.pm:393 network/thirdparty.pm:417
+#: printer/printerdrake.pm:244 printer/printerdrake.pm:251
+#: printer/printerdrake.pm:276 printer/printerdrake.pm:422
+#: printer/printerdrake.pm:427 printer/printerdrake.pm:440
+#: printer/printerdrake.pm:450 printer/printerdrake.pm:514
+#: printer/printerdrake.pm:686 printer/printerdrake.pm:690
+#: printer/printerdrake.pm:772 printer/printerdrake.pm:1555
+#: printer/printerdrake.pm:1603 printer/printerdrake.pm:1640
+#: printer/printerdrake.pm:1685 printer/printerdrake.pm:1689
+#: printer/printerdrake.pm:1703 printer/printerdrake.pm:1795
+#: printer/printerdrake.pm:1876 printer/printerdrake.pm:1880
+#: printer/printerdrake.pm:1884 printer/printerdrake.pm:1933
+#: printer/printerdrake.pm:1991 printer/printerdrake.pm:1995
+#: printer/printerdrake.pm:2009 printer/printerdrake.pm:2129
+#: printer/printerdrake.pm:2133 printer/printerdrake.pm:2176
+#: printer/printerdrake.pm:2249 printer/printerdrake.pm:2267
+#: printer/printerdrake.pm:2276 printer/printerdrake.pm:2285
+#: printer/printerdrake.pm:2296 printer/printerdrake.pm:2360
+#: printer/printerdrake.pm:2511 printer/printerdrake.pm:2924
+#: printer/printerdrake.pm:3208 printer/printerdrake.pm:3214
+#: printer/printerdrake.pm:3779 printer/printerdrake.pm:3783
+#: printer/printerdrake.pm:3787 printer/printerdrake.pm:4183
+#: printer/printerdrake.pm:4424 printer/printerdrake.pm:4452
+#: printer/printerdrake.pm:4529 printer/printerdrake.pm:4595
+#: printer/printerdrake.pm:4715 standalone/drakTermServ:394
+#: standalone/drakTermServ:464 standalone/drakTermServ:473
+#: standalone/drakTermServ:774 standalone/drakTermServ:781
+#: standalone/drakTermServ:802 standalone/drakTermServ:849
+#: standalone/drakTermServ:1095 standalone/drakTermServ:1572
+#: standalone/drakTermServ:1581 standalone/drakTermServ:1589
+#: standalone/drakTermServ:1594 standalone/drakTermServ:1602
+#: standalone/drakTermServ:1618 standalone/drakTermServ:1638
+#: standalone/drakauth:36 standalone/drakbackup:511 standalone/drakbackup:625
#: standalone/drakbackup:1105 standalone/drakbackup:1136
#: standalone/drakbackup:1321 standalone/drakbackup:1653
#: standalone/drakbackup:1809 standalone/drakbackup:2525
@@ -1380,7 +1380,7 @@ msgid "Input method:"
msgstr "طريقة الإدخال:"
#: any.pm:856 install_any.pm:423 network/netconnect.pm:318
-#: network/netconnect.pm:323 network/netconnect.pm:1229 network/wireless.pm:7
+#: network/netconnect.pm:323 network/netconnect.pm:1234 network/wireless.pm:7
#: printer/printerdrake.pm:105
#, c-format
msgid "None"
@@ -2924,7 +2924,7 @@ msgstr "مفتاح التشفير هذا بسيط جدا (يجب أن يكون %
msgid "The encryption keys do not match"
msgstr "مفاتيح التشفير غير متطابقة"
-#: diskdrake/interactive.pm:1329 network/netconnect.pm:1065
+#: diskdrake/interactive.pm:1329 network/netconnect.pm:1070
#: standalone/drakconnect:419 standalone/drakroam:120
#, c-format
msgid "Encryption key"
@@ -3651,7 +3651,7 @@ msgstr "لا يوجد مشغل معروف"
msgid "There's no known driver for your sound card (%s)"
msgstr "لا يوجد مشغل معروف لبطاقة الصوت (%s)"
-#: harddrake/sound.pm:291
+#: harddrake/sound.pm:291 network/netconnect.pm:98 network/netconnect.pm:833
#, c-format
msgid "Unknown driver"
msgstr "مشغل غير معروف"
@@ -5944,7 +5944,7 @@ msgid "Insert the CD 1 again"
msgstr "أدخل القرص المدمج 1 مجدّدا"
#
-#: install_any.pm:479 network/netconnect.pm:857 standalone/drakbackup:114
+#: install_any.pm:479 network/netconnect.pm:862 standalone/drakbackup:114
#, c-format
msgid "No device found"
msgstr "لم يُعثر على أي جهاز"
@@ -10517,7 +10517,7 @@ msgid "Use BPALogin (needed for Telstra)"
msgstr "استخدام BPALogin )مطلوبة لـTelstra)"
#: network/netconnect.pm:349 network/netconnect.pm:671
-#: network/netconnect.pm:822 network/netconnect.pm:1162
+#: network/netconnect.pm:822 network/netconnect.pm:1167
#, c-format
msgid "Select the network interface to configure:"
msgstr "اختيار واجهة الشبكة لتهيئتها:"
@@ -10679,7 +10679,7 @@ msgstr "الاتصال الهاتفي: مُعطيات IP"
msgid "IP parameters"
msgstr "مُعطيات IP"
-#: network/netconnect.pm:603 network/netconnect.pm:933
+#: network/netconnect.pm:603 network/netconnect.pm:938
#: printer/printerdrake.pm:460 standalone/drakconnect:109
#: standalone/drakconnect:316 standalone/drakconnect:882
#: standalone/drakhosts:197 standalone/drakroam:122 standalone/drakups:286
@@ -10781,17 +10781,17 @@ msgstr "تحميل المُشغّل يدوياً"
msgid "Use a Windows driver (with ndiswrapper)"
msgstr "استخدام مشغّل ويندوز (مع ndiswrapper("
-#: network/netconnect.pm:888
+#: network/netconnect.pm:893
#, c-format
msgid "Zeroconf hostname resolution"
msgstr "ترجمة اسم مضيف Zeroconf"
-#: network/netconnect.pm:889 network/netconnect.pm:920
+#: network/netconnect.pm:894 network/netconnect.pm:925
#, c-format
msgid "Configuring network device %s (driver %s)"
msgstr "جاري تهيئة جهاز الشبكة %s (مشغّل %s)"
-#: network/netconnect.pm:890
+#: network/netconnect.pm:895
#, c-format
msgid ""
"The following protocols can be used to configure a LAN connection. Please "
@@ -10800,7 +10800,7 @@ msgstr ""
"البروتوكولات التّالية يمكن استخدامها لتهيئة اتصال LAN. الرجاء اختيار "
"البروتوكول الذي تريد استخدامه"
-#: network/netconnect.pm:921
+#: network/netconnect.pm:926
#, c-format
msgid ""
"Please enter the IP configuration for this machine.\n"
@@ -10811,198 +10811,198 @@ msgstr ""
"كل مادة يجب إدخالها كعنوان IP بشكل منقوط\n"
"(مثلاً، 1.2.3.4(."
-#: network/netconnect.pm:928 standalone/drakconnect:373
+#: network/netconnect.pm:933 standalone/drakconnect:373
#, c-format
msgid "Assign host name from DHCP address"
msgstr "تعيين اسم المضيف من عنوان DHCP"
-#: network/netconnect.pm:929 standalone/drakconnect:375
+#: network/netconnect.pm:934 standalone/drakconnect:375
#, c-format
msgid "DHCP host name"
msgstr "اسم مضيف DHCP"
-#: network/netconnect.pm:934 standalone/drakconnect:321
+#: network/netconnect.pm:939 standalone/drakconnect:321
#: standalone/drakconnect:883 standalone/drakgw:181
#, c-format
msgid "Netmask"
msgstr "قناع الشبكة"
-#: network/netconnect.pm:936 standalone/drakconnect:437
+#: network/netconnect.pm:941 standalone/drakconnect:437
#, c-format
msgid "Track network card id (useful for laptops)"
msgstr "تتبع هوية بطاقة الشبكة (مفيد للحاسبات الدفترية)"
-#: network/netconnect.pm:937 standalone/drakconnect:438
+#: network/netconnect.pm:942 standalone/drakconnect:438
#, c-format
msgid "Network Hotplugging"
msgstr "القبْس السريع للشبكة"
-#: network/netconnect.pm:939 standalone/drakconnect:432
+#: network/netconnect.pm:944 standalone/drakconnect:432
#, c-format
msgid "Start at boot"
msgstr "البدء عند الإقلاع"
-#: network/netconnect.pm:941 standalone/drakconnect:460
+#: network/netconnect.pm:946 standalone/drakconnect:460
#, c-format
msgid "Metric"
msgstr "متري"
-#: network/netconnect.pm:942
+#: network/netconnect.pm:947
#, c-format
msgid "Enable IPv6 to IPv4 tunnel"
msgstr ""
-#: network/netconnect.pm:944 standalone/drakconnect:369
+#: network/netconnect.pm:949 standalone/drakconnect:369
#: standalone/drakconnect:886
#, c-format
msgid "DHCP client"
msgstr "عميل DHCP"
-#: network/netconnect.pm:946 standalone/drakconnect:379
+#: network/netconnect.pm:951 standalone/drakconnect:379
#, fuzzy, c-format
msgid "DHCP timeout (in seconds)"
msgstr "الوقت الأقصى للاتصال (بالثواني)"
-#: network/netconnect.pm:947 standalone/drakconnect:382
+#: network/netconnect.pm:952 standalone/drakconnect:382
#, fuzzy, c-format
msgid "Get DNS servers from DHCP"
msgstr "عنوان IP لخادم DNS"
-#: network/netconnect.pm:948 standalone/drakconnect:383
+#: network/netconnect.pm:953 standalone/drakconnect:383
#, c-format
msgid "Get YP servers from DHCP"
msgstr ""
-#: network/netconnect.pm:949 standalone/drakconnect:384
+#: network/netconnect.pm:954 standalone/drakconnect:384
#, c-format
msgid "Get NTPD servers from DHCP"
msgstr ""
-#: network/netconnect.pm:957 printer/printerdrake.pm:1876
+#: network/netconnect.pm:962 printer/printerdrake.pm:1876
#: standalone/drakconnect:676
#, c-format
msgid "IP address should be in format 1.2.3.4"
msgstr "عنوان IP يجب أن يكون بنسق 1.2.3.4"
-#: network/netconnect.pm:961 standalone/drakconnect:680
+#: network/netconnect.pm:966 standalone/drakconnect:680
#, fuzzy, c-format
msgid "Netmask should be in format 255.255.224.0"
msgstr "عنوان البوابات يجب أن تكون على النسق 1.2.3.4"
-#: network/netconnect.pm:965
+#: network/netconnect.pm:970
#, c-format
msgid "Warning: IP address %s is usually reserved!"
msgstr "تحذير: عنوان الـ IP %s عادة ما يكون محفوظاً!"
-#: network/netconnect.pm:970 standalone/drakTermServ:1856
+#: network/netconnect.pm:975 standalone/drakTermServ:1856
#: standalone/drakTermServ:1857 standalone/drakTermServ:1858
#, c-format
msgid "%s already in use\n"
msgstr "%s قيد الاستخدام مسبقاً\n"
-#: network/netconnect.pm:1010
+#: network/netconnect.pm:1015
#, c-format
msgid "Choose an ndiswrapper driver"
msgstr "اختيار مشغّل ndiswrapper"
-#: network/netconnect.pm:1012
+#: network/netconnect.pm:1017
#, c-format
msgid "Use the ndiswrapper driver %s"
msgstr ""
-#: network/netconnect.pm:1012
+#: network/netconnect.pm:1017
#, c-format
msgid "Install a new driver"
msgstr "تثبيت مشغّل جديد"
-#: network/netconnect.pm:1024
+#: network/netconnect.pm:1029
#, c-format
msgid "Select a device:"
msgstr ""
-#: network/netconnect.pm:1053
+#: network/netconnect.pm:1058
#, c-format
msgid "Please enter the wireless parameters for this card:"
msgstr "الرجاء إدخال مُعطيات اللاسلكيّة لهذه البطاقة:"
-#: network/netconnect.pm:1056 standalone/drakconnect:404
+#: network/netconnect.pm:1061 standalone/drakconnect:404
#: standalone/drakroam:52
#, c-format
msgid "Operating Mode"
msgstr "وضعية التّشغيل"
-#: network/netconnect.pm:1057
+#: network/netconnect.pm:1062
#, c-format
msgid "Ad-hoc"
msgstr "مُصطنع"
-#: network/netconnect.pm:1057
+#: network/netconnect.pm:1062
#, c-format
msgid "Managed"
msgstr "مُدار"
-#: network/netconnect.pm:1057
+#: network/netconnect.pm:1062
#, c-format
msgid "Master"
msgstr "رئيسي"
-#: network/netconnect.pm:1057
+#: network/netconnect.pm:1062
#, c-format
msgid "Repeater"
msgstr "مُكرّر"
-#: network/netconnect.pm:1057
+#: network/netconnect.pm:1062
#, c-format
msgid "Secondary"
msgstr "ثانوي"
-#: network/netconnect.pm:1057
+#: network/netconnect.pm:1062
#, c-format
msgid "Auto"
msgstr "آلي"
-#: network/netconnect.pm:1060 standalone/drakconnect:405
+#: network/netconnect.pm:1065 standalone/drakconnect:405
#: standalone/drakroam:115
#, c-format
msgid "Network name (ESSID)"
msgstr "إسم الشّبكة (ESSID)"
-#: network/netconnect.pm:1061 standalone/drakroam:116
+#: network/netconnect.pm:1066 standalone/drakroam:116
#, c-format
msgid "Encryption mode"
msgstr ""
-#: network/netconnect.pm:1066
+#: network/netconnect.pm:1071
#, c-format
msgid "Allow access point roaming"
msgstr ""
-#: network/netconnect.pm:1068 standalone/drakconnect:406
+#: network/netconnect.pm:1073 standalone/drakconnect:406
#, c-format
msgid "Network ID"
msgstr "رقم مُعرّف الشّبكة"
-#: network/netconnect.pm:1069 standalone/drakconnect:407
+#: network/netconnect.pm:1074 standalone/drakconnect:407
#, c-format
msgid "Operating frequency"
msgstr "تردّد التّشغيل"
-#: network/netconnect.pm:1070 standalone/drakconnect:408
+#: network/netconnect.pm:1075 standalone/drakconnect:408
#, c-format
msgid "Sensitivity threshold"
msgstr "عتبة الحساسية"
-#: network/netconnect.pm:1071 standalone/drakconnect:409
+#: network/netconnect.pm:1076 standalone/drakconnect:409
#, c-format
msgid "Bitrate (in b/s)"
msgstr "معدّل البث (بِتْ/ث)"
-#: network/netconnect.pm:1072 standalone/drakconnect:420
+#: network/netconnect.pm:1077 standalone/drakconnect:420
#, c-format
msgid "RTS/CTS"
msgstr "RTS/CTS"
-#: network/netconnect.pm:1073
+#: network/netconnect.pm:1078
#, c-format
msgid ""
"RTS/CTS adds a handshake before each packet transmission to make sure that "
@@ -11022,17 +11022,17 @@ msgstr ""
"حجم رزمة تُعطّل المخطّط. يمكنك أيضاً تحديد هذا المُعطى بتلقائي،\n"
"ثابت أو معطّل."
-#: network/netconnect.pm:1080 standalone/drakconnect:421
+#: network/netconnect.pm:1085 standalone/drakconnect:421
#, c-format
msgid "Fragmentation"
msgstr "مستوى التّجزّء"
-#: network/netconnect.pm:1081 standalone/drakconnect:422
+#: network/netconnect.pm:1086 standalone/drakconnect:422
#, c-format
msgid "iwconfig command extra arguments"
msgstr "المُعطيات الإضافية لأمر iwconfig"
-#: network/netconnect.pm:1082
+#: network/netconnect.pm:1087
#, c-format
msgid ""
"Here, one can configure some extra wireless parameters such as:\n"
@@ -11048,12 +11048,12 @@ msgstr ""
"راجع صفحة الدّليل iwconfig(8) للمزيد من المعلومات."
#. -PO: split the "xyz command extra argument" translated string into two lines if it's bigger than the english one
-#: network/netconnect.pm:1089 standalone/drakconnect:423
+#: network/netconnect.pm:1094 standalone/drakconnect:423
#, c-format
msgid "iwspy command extra arguments"
msgstr "المُعطيات الإضافيّة لأمر iwspy"
-#: network/netconnect.pm:1090
+#: network/netconnect.pm:1095
#, c-format
msgid ""
"iwspy is used to set a list of addresses in a wireless network\n"
@@ -11072,12 +11072,12 @@ msgstr ""
"\n"
"رجاع صفحة دليل iwpspy)8( للمزيد من المعلومات."
-#: network/netconnect.pm:1099 standalone/drakconnect:424
+#: network/netconnect.pm:1104 standalone/drakconnect:424
#, c-format
msgid "iwpriv command extra arguments"
msgstr "المُعطيات الإضافيّة لأمر iwpriv"
-#: network/netconnect.pm:1100
+#: network/netconnect.pm:1105
#, c-format
msgid ""
"iwpriv enable to set up optionals (private) parameters of a wireless "
@@ -11105,7 +11105,7 @@ msgstr ""
"\n"
"راجع صفحة دليل iwpriv(8) للمزيد من المعلومات."
-#: network/netconnect.pm:1115
+#: network/netconnect.pm:1120
#, c-format
msgid ""
"Freq should have the suffix k, M or G (for example, \"2.46G\" for 2.46 GHz "
@@ -11114,7 +11114,7 @@ msgstr ""
"يجب أن يكون للتردّد اللاحقة k، أو M أو G (مثلاً، \"2.46G\" للتردّد 2.46 GHz(، "
"أو إضافة أصفار كافية."
-#: network/netconnect.pm:1119
+#: network/netconnect.pm:1124
#, c-format
msgid ""
"Rate should have the suffix k, M or G (for example, \"11M\" for 11M), or add "
@@ -11123,37 +11123,37 @@ msgstr ""
"يجب أن يكون للمعدّل اللاحقة k، أو M أو G (مثلاً، \"11M\" للمعدّل 11M)، أو إضافة "
"أصفار كافية."
-#: network/netconnect.pm:1162
+#: network/netconnect.pm:1167
#, c-format
msgid "DVB configuration"
msgstr ""
-#: network/netconnect.pm:1163
+#: network/netconnect.pm:1168
#, c-format
msgid "DVB Adapter"
msgstr ""
-#: network/netconnect.pm:1180
+#: network/netconnect.pm:1185
#, c-format
msgid "DVB adapter settings"
msgstr ""
-#: network/netconnect.pm:1183
+#: network/netconnect.pm:1188
#, c-format
msgid "Adapter card"
msgstr ""
-#: network/netconnect.pm:1184
+#: network/netconnect.pm:1189
#, c-format
msgid "Net demux"
msgstr ""
-#: network/netconnect.pm:1185
+#: network/netconnect.pm:1190
#, c-format
msgid "PID"
msgstr "رمز المهمة"
-#: network/netconnect.pm:1213
+#: network/netconnect.pm:1218
#, c-format
msgid ""
"Please enter your host name.\n"
@@ -11166,67 +11166,67 @@ msgstr ""
"مثل ``mybox.mylab.myco.com''.\n"
"يمكنك أيضاً إدخال عنوان IP الخاص بالبوابة ان وُجدت."
-#: network/netconnect.pm:1218
+#: network/netconnect.pm:1223
#, c-format
msgid "Last but not least you can also type in your DNS server IP addresses."
msgstr "أخيراً وليس آخراً يمكنك أيضاً أن تدخل عناوين IP لخادمات DNS."
-#: network/netconnect.pm:1220 standalone/drakconnect:991
+#: network/netconnect.pm:1225 standalone/drakconnect:991
#, c-format
msgid "Host name (optional)"
msgstr "اسم المضيف (اختياري)"
-#: network/netconnect.pm:1220 standalone/drakhosts:197
+#: network/netconnect.pm:1225 standalone/drakhosts:197
#, c-format
msgid "Host name"
msgstr "اسم المضيف"
-#: network/netconnect.pm:1222
+#: network/netconnect.pm:1227
#, c-format
msgid "DNS server 1"
msgstr "خادم DNS 1"
-#: network/netconnect.pm:1223
+#: network/netconnect.pm:1228
#, c-format
msgid "DNS server 2"
msgstr "خادم DNS 2"
-#: network/netconnect.pm:1224
+#: network/netconnect.pm:1229
#, c-format
msgid "DNS server 3"
msgstr "خادم DNS 3"
-#: network/netconnect.pm:1225
+#: network/netconnect.pm:1230
#, c-format
msgid "Search domain"
msgstr "نطاق البحث"
-#: network/netconnect.pm:1226
+#: network/netconnect.pm:1231
#, c-format
msgid "By default search domain will be set from the fully-qualified host name"
msgstr "بشكل افتراضي سيتمّ تحديد نطاق البحث من اسم المضيف المهيّء بالكامل"
-#: network/netconnect.pm:1227
+#: network/netconnect.pm:1232
#, c-format
msgid "Gateway (e.g. %s)"
msgstr "البوابة (مثلاً %s)"
-#: network/netconnect.pm:1229
+#: network/netconnect.pm:1234
#, c-format
msgid "Gateway device"
msgstr "جهاز البوابة"
-#: network/netconnect.pm:1238
+#: network/netconnect.pm:1243
#, c-format
msgid "DNS server address should be in format 1.2.3.4"
msgstr "عنوان خادم DNS يجب أن يكون على النسق 1.2.3.4"
-#: network/netconnect.pm:1243 standalone/drakconnect:685
+#: network/netconnect.pm:1248 standalone/drakconnect:685
#, c-format
msgid "Gateway address should be in format 1.2.3.4"
msgstr "عنوان البوابات يجب أن تكون على النسق 1.2.3.4"
-#: network/netconnect.pm:1256
+#: network/netconnect.pm:1261
#, c-format
msgid ""
"If desired, enter a Zeroconf hostname.\n"
@@ -11239,67 +11239,67 @@ msgstr ""
"بأيّة من خدماته المشتركة و الّتي لا تديرها الشّبكة.\n"
"غير ضروري على معظم الشّبكات."
-#: network/netconnect.pm:1260
+#: network/netconnect.pm:1265
#, c-format
msgid "Zeroconf Host name"
msgstr "اسم مضيف Zeroconf"
-#: network/netconnect.pm:1263
+#: network/netconnect.pm:1268
#, c-format
msgid "Zeroconf host name must not contain a ."
msgstr "يجب أن يحتوي اسم مضيف Zeroconf على . (نقطة("
-#: network/netconnect.pm:1273
+#: network/netconnect.pm:1278
#, fuzzy, c-format
msgid "Do you want to allow users to start the connection?"
msgstr "هل تريد بدء الاتصال عند الإقلاع؟"
-#: network/netconnect.pm:1286
+#: network/netconnect.pm:1291
#, c-format
msgid "Do you want to start the connection at boot?"
msgstr "هل تريد بدء الاتصال عند الإقلاع؟"
-#: network/netconnect.pm:1302
+#: network/netconnect.pm:1307
#, c-format
msgid "Automatically at boot"
msgstr "آليا عند الإقلاع"
-#: network/netconnect.pm:1304
+#: network/netconnect.pm:1309
#, c-format
msgid "By using Net Applet in the system tray"
msgstr "باستعمال بريمج الشّبكة (Net Applet( في درج النّظام"
-#: network/netconnect.pm:1306
+#: network/netconnect.pm:1311
#, c-format
msgid "Manually (the interface would still be activated at boot)"
msgstr "يدويا (ستمكّن الواجهة عند الإقلاع رغم هذا)"
-#: network/netconnect.pm:1315
+#: network/netconnect.pm:1320
#, c-format
msgid "How do you want to dial this connection?"
msgstr "كيف تريد طلب هذا الاتصال؟"
-#: network/netconnect.pm:1328
+#: network/netconnect.pm:1333
#, c-format
msgid "Do you want to try to connect to the Internet now?"
msgstr "هل تريد أن تحاول أن تتصل بالإنترنت الآن؟"
-#: network/netconnect.pm:1336 standalone/drakconnect:1023
+#: network/netconnect.pm:1341 standalone/drakconnect:1023
#, c-format
msgid "Testing your connection..."
msgstr "اختبار الوصلة..."
-#: network/netconnect.pm:1361
+#: network/netconnect.pm:1366
#, c-format
msgid "The system is now connected to the Internet."
msgstr "النظام الآن متصل بالإنترنت"
-#: network/netconnect.pm:1362
+#: network/netconnect.pm:1367
#, c-format
msgid "For security reasons, it will be disconnected now."
msgstr "لأسباب أمنية، سيتم قطع الإتصال الآن."
-#: network/netconnect.pm:1363
+#: network/netconnect.pm:1368
#, c-format
msgid ""
"The system does not seem to be connected to the Internet.\n"
@@ -11308,7 +11308,7 @@ msgstr ""
"لا يبدو أن النظام متصل بالإنترنت.\n"
"حاول إعادة تهيئة الوصلة."
-#: network/netconnect.pm:1378
+#: network/netconnect.pm:1383
#, c-format
msgid ""
"Congratulations, the network and Internet configuration is finished.\n"
@@ -11317,7 +11317,7 @@ msgstr ""
"تهانينا، انتهت تهيئة الشبكة و الإنترنت.\n"
"\n"
-#: network/netconnect.pm:1381
+#: network/netconnect.pm:1386
#, c-format
msgid ""
"After this is done, we recommend that you restart your X environment to "
@@ -11325,7 +11325,7 @@ msgid ""
msgstr ""
"بعد عمل ذلك، ننصح بإعادة تشغيل بيئة X لديك لتفادي أي مشاكل تتعلق بإسم المضيف."
-#: network/netconnect.pm:1382
+#: network/netconnect.pm:1387
#, c-format
msgid ""
"Problems occurred during configuration.\n"
@@ -11336,28 +11336,28 @@ msgstr ""
"اختبر الوصلة باستخدام net_monitor أو mcc. إذا لم تعمل الوصلة، فقد تريد إعادة "
"التهيئة."
-#: network/netconnect.pm:1393
+#: network/netconnect.pm:1398
#, c-format
msgid "(detected on port %s)"
msgstr "(اكتشاف على المنفذ %s)"
#. -PO: here, "(detected)" string will be appended to eg "ADSL connection"
-#: network/netconnect.pm:1395
+#: network/netconnect.pm:1400
#, c-format
msgid "(detected %s)"
msgstr "(اكتشف %s)"
-#: network/netconnect.pm:1395
+#: network/netconnect.pm:1400
#, c-format
msgid "(detected)"
msgstr "(تم اكتشافه)"
-#: network/netconnect.pm:1396
+#: network/netconnect.pm:1401
#, c-format
msgid "Network Configuration"
msgstr "تهيئة الشبكة"
-#: network/netconnect.pm:1397
+#: network/netconnect.pm:1402
#, c-format
msgid ""
"Because you are doing a network installation, your network is already "
@@ -11369,12 +11369,12 @@ msgstr ""
"اضغط موافق لحفظ التهيئة الخاصة بك، أو اضغط إلغاء لإعادة تهيئة وصلات الإنترنت "
"و الشبكة.\n"
-#: network/netconnect.pm:1400
+#: network/netconnect.pm:1405
#, c-format
msgid "The network needs to be restarted. Do you want to restart it?"
msgstr "يجب إعادة تشغيل الشبكة. هل تريد إعادة تشغيلها؟"
-#: network/netconnect.pm:1401
+#: network/netconnect.pm:1406
#, c-format
msgid ""
"A problem occurred while restarting the network: \n"
@@ -11385,7 +11385,7 @@ msgstr ""
"\n"
"%s"
-#: network/netconnect.pm:1402
+#: network/netconnect.pm:1407
#, c-format
msgid ""
"We are now going to configure the %s connection.\n"
@@ -11398,12 +11398,12 @@ msgstr ""
"\n"
"اضغط \"%s\" لتستمرّ."
-#: network/netconnect.pm:1403
+#: network/netconnect.pm:1408
#, c-format
msgid "Configuration is complete, do you want to apply settings?"
msgstr "تم الانتهاء من التهيئة، هل تريد تطبيق الإعدادات ؟"
-#: network/netconnect.pm:1404
+#: network/netconnect.pm:1409
#, c-format
msgid ""
"You have configured multiple ways to connect to the Internet.\n"
@@ -11414,12 +11414,12 @@ msgstr ""
"اختر الطريقة التي تريد استخدامها.\n"
"\n"
-#: network/netconnect.pm:1405
+#: network/netconnect.pm:1410
#, c-format
msgid "Internet connection"
msgstr "وصلة انترنت"
-#: network/netconnect.pm:1422
+#: network/netconnect.pm:1427
#, c-format
msgid ""
"An unexpected error has happened:\n"
diff --git a/perl-install/share/po/az.po b/perl-install/share/po/az.po
index 6e0f6ac73..66d36e0b0 100644
--- a/perl-install/share/po/az.po
+++ b/perl-install/share/po/az.po
@@ -9,7 +9,7 @@
msgid ""
msgstr ""
"Project-Id-Version: DrakX-az\n"
-"POT-Creation-Date: 2005-10-22 19:23+0800\n"
+"POT-Creation-Date: 2005-10-28 23:26+0800\n"
"PO-Revision-Date: 2005-03-31 14:21+0200\n"
"Last-Translator: Mətin Əmirov <metin@karegen.com>\n"
"Language-Team: Azerbaijani <translation-team-az@lists.sourceforge.net>\n"
@@ -149,47 +149,47 @@ msgstr "Xahiş edirik gözləyin, avadanlıqlar tapılır və quraşdırılır..
#: interactive/http.pm:117 interactive/http.pm:118 modules/interactive.pm:19
#: network/ndiswrapper.pm:27 network/ndiswrapper.pm:42
#: network/ndiswrapper.pm:89 network/ndiswrapper.pm:101
-#: network/netconnect.pm:857 network/netconnect.pm:957
-#: network/netconnect.pm:961 network/netconnect.pm:965
-#: network/netconnect.pm:970 network/netconnect.pm:1115
-#: network/netconnect.pm:1119 network/netconnect.pm:1238
-#: network/netconnect.pm:1243 network/netconnect.pm:1263
-#: network/netconnect.pm:1422 network/thirdparty.pm:319
-#: network/thirdparty.pm:326 network/thirdparty.pm:370
-#: network/thirdparty.pm:372 network/thirdparty.pm:393
-#: network/thirdparty.pm:417 printer/printerdrake.pm:244
-#: printer/printerdrake.pm:251 printer/printerdrake.pm:276
-#: printer/printerdrake.pm:422 printer/printerdrake.pm:427
-#: printer/printerdrake.pm:440 printer/printerdrake.pm:450
-#: printer/printerdrake.pm:514 printer/printerdrake.pm:686
-#: printer/printerdrake.pm:690 printer/printerdrake.pm:772
-#: printer/printerdrake.pm:1555 printer/printerdrake.pm:1603
-#: printer/printerdrake.pm:1640 printer/printerdrake.pm:1685
-#: printer/printerdrake.pm:1689 printer/printerdrake.pm:1703
-#: printer/printerdrake.pm:1795 printer/printerdrake.pm:1876
-#: printer/printerdrake.pm:1880 printer/printerdrake.pm:1884
-#: printer/printerdrake.pm:1933 printer/printerdrake.pm:1991
-#: printer/printerdrake.pm:1995 printer/printerdrake.pm:2009
-#: printer/printerdrake.pm:2129 printer/printerdrake.pm:2133
-#: printer/printerdrake.pm:2176 printer/printerdrake.pm:2249
-#: printer/printerdrake.pm:2267 printer/printerdrake.pm:2276
-#: printer/printerdrake.pm:2285 printer/printerdrake.pm:2296
-#: printer/printerdrake.pm:2360 printer/printerdrake.pm:2511
-#: printer/printerdrake.pm:2924 printer/printerdrake.pm:3208
-#: printer/printerdrake.pm:3214 printer/printerdrake.pm:3779
-#: printer/printerdrake.pm:3783 printer/printerdrake.pm:3787
-#: printer/printerdrake.pm:4183 printer/printerdrake.pm:4424
-#: printer/printerdrake.pm:4452 printer/printerdrake.pm:4529
-#: printer/printerdrake.pm:4595 printer/printerdrake.pm:4715
-#: standalone/drakTermServ:394 standalone/drakTermServ:464
-#: standalone/drakTermServ:473 standalone/drakTermServ:774
-#: standalone/drakTermServ:781 standalone/drakTermServ:802
-#: standalone/drakTermServ:849 standalone/drakTermServ:1095
-#: standalone/drakTermServ:1572 standalone/drakTermServ:1581
-#: standalone/drakTermServ:1589 standalone/drakTermServ:1594
-#: standalone/drakTermServ:1602 standalone/drakTermServ:1618
-#: standalone/drakTermServ:1638 standalone/drakauth:36
-#: standalone/drakbackup:511 standalone/drakbackup:625
+#: network/netconnect.pm:833 network/netconnect.pm:862
+#: network/netconnect.pm:962 network/netconnect.pm:966
+#: network/netconnect.pm:970 network/netconnect.pm:975
+#: network/netconnect.pm:1120 network/netconnect.pm:1124
+#: network/netconnect.pm:1243 network/netconnect.pm:1248
+#: network/netconnect.pm:1268 network/netconnect.pm:1427
+#: network/thirdparty.pm:319 network/thirdparty.pm:326
+#: network/thirdparty.pm:370 network/thirdparty.pm:372
+#: network/thirdparty.pm:393 network/thirdparty.pm:417
+#: printer/printerdrake.pm:244 printer/printerdrake.pm:251
+#: printer/printerdrake.pm:276 printer/printerdrake.pm:422
+#: printer/printerdrake.pm:427 printer/printerdrake.pm:440
+#: printer/printerdrake.pm:450 printer/printerdrake.pm:514
+#: printer/printerdrake.pm:686 printer/printerdrake.pm:690
+#: printer/printerdrake.pm:772 printer/printerdrake.pm:1555
+#: printer/printerdrake.pm:1603 printer/printerdrake.pm:1640
+#: printer/printerdrake.pm:1685 printer/printerdrake.pm:1689
+#: printer/printerdrake.pm:1703 printer/printerdrake.pm:1795
+#: printer/printerdrake.pm:1876 printer/printerdrake.pm:1880
+#: printer/printerdrake.pm:1884 printer/printerdrake.pm:1933
+#: printer/printerdrake.pm:1991 printer/printerdrake.pm:1995
+#: printer/printerdrake.pm:2009 printer/printerdrake.pm:2129
+#: printer/printerdrake.pm:2133 printer/printerdrake.pm:2176
+#: printer/printerdrake.pm:2249 printer/printerdrake.pm:2267
+#: printer/printerdrake.pm:2276 printer/printerdrake.pm:2285
+#: printer/printerdrake.pm:2296 printer/printerdrake.pm:2360
+#: printer/printerdrake.pm:2511 printer/printerdrake.pm:2924
+#: printer/printerdrake.pm:3208 printer/printerdrake.pm:3214
+#: printer/printerdrake.pm:3779 printer/printerdrake.pm:3783
+#: printer/printerdrake.pm:3787 printer/printerdrake.pm:4183
+#: printer/printerdrake.pm:4424 printer/printerdrake.pm:4452
+#: printer/printerdrake.pm:4529 printer/printerdrake.pm:4595
+#: printer/printerdrake.pm:4715 standalone/drakTermServ:394
+#: standalone/drakTermServ:464 standalone/drakTermServ:473
+#: standalone/drakTermServ:774 standalone/drakTermServ:781
+#: standalone/drakTermServ:802 standalone/drakTermServ:849
+#: standalone/drakTermServ:1095 standalone/drakTermServ:1572
+#: standalone/drakTermServ:1581 standalone/drakTermServ:1589
+#: standalone/drakTermServ:1594 standalone/drakTermServ:1602
+#: standalone/drakTermServ:1618 standalone/drakTermServ:1638
+#: standalone/drakauth:36 standalone/drakbackup:511 standalone/drakbackup:625
#: standalone/drakbackup:1105 standalone/drakbackup:1136
#: standalone/drakbackup:1321 standalone/drakbackup:1653
#: standalone/drakbackup:1809 standalone/drakbackup:2525
@@ -1331,7 +1331,7 @@ msgid "Input method:"
msgstr "Giriş yöntəmi:"
#: any.pm:856 install_any.pm:423 network/netconnect.pm:318
-#: network/netconnect.pm:323 network/netconnect.pm:1229 network/wireless.pm:7
+#: network/netconnect.pm:323 network/netconnect.pm:1234 network/wireless.pm:7
#: printer/printerdrake.pm:105
#, c-format
msgid "None"
@@ -2875,7 +2875,7 @@ msgstr "Bu şifrələmə açarı çox sadədir (ən az %d hərf böyüklüyünd
msgid "The encryption keys do not match"
msgstr "Şifrələmə açarları uyğun gəlmir"
-#: diskdrake/interactive.pm:1329 network/netconnect.pm:1065
+#: diskdrake/interactive.pm:1329 network/netconnect.pm:1070
#: standalone/drakconnect:419 standalone/drakroam:120
#, c-format
msgid "Encryption key"
@@ -3610,7 +3610,7 @@ msgstr "Bilinən sürücü yoxdur"
msgid "There's no known driver for your sound card (%s)"
msgstr "Sizin (%s) səs kartınız üçün sürücü mövcud deyil"
-#: harddrake/sound.pm:291
+#: harddrake/sound.pm:291 network/netconnect.pm:98 network/netconnect.pm:833
#, c-format
msgid "Unknown driver"
msgstr "Namə'lum sürücü"
@@ -5907,7 +5907,7 @@ msgstr ""
msgid "Insert the CD 1 again"
msgstr ""
-#: install_any.pm:479 network/netconnect.pm:857 standalone/drakbackup:114
+#: install_any.pm:479 network/netconnect.pm:862 standalone/drakbackup:114
#, c-format
msgid "No device found"
msgstr "Heç bir avadanlıq tapıla bilmədi"
@@ -10498,7 +10498,7 @@ msgid "Use BPALogin (needed for Telstra)"
msgstr ""
#: network/netconnect.pm:349 network/netconnect.pm:671
-#: network/netconnect.pm:822 network/netconnect.pm:1162
+#: network/netconnect.pm:822 network/netconnect.pm:1167
#, c-format
msgid "Select the network interface to configure:"
msgstr "Quraşdırılacaq şəbəkə ara üzünü seç:"
@@ -10656,7 +10656,7 @@ msgstr "Dialup: IP parametrləri"
msgid "IP parameters"
msgstr "IP parametrləri"
-#: network/netconnect.pm:603 network/netconnect.pm:933
+#: network/netconnect.pm:603 network/netconnect.pm:938
#: printer/printerdrake.pm:460 standalone/drakconnect:109
#: standalone/drakconnect:316 standalone/drakconnect:882
#: standalone/drakhosts:197 standalone/drakroam:122 standalone/drakups:286
@@ -10758,24 +10758,24 @@ msgstr ""
msgid "Use a Windows driver (with ndiswrapper)"
msgstr ""
-#: network/netconnect.pm:888
+#: network/netconnect.pm:893
#, c-format
msgid "Zeroconf hostname resolution"
msgstr "Zeroconf qovşaq adı həlli"
-#: network/netconnect.pm:889 network/netconnect.pm:920
+#: network/netconnect.pm:894 network/netconnect.pm:925
#, c-format
msgid "Configuring network device %s (driver %s)"
msgstr "%s şəbəkə avadanlığı qurulur (sürücü %s) "
-#: network/netconnect.pm:890
+#: network/netconnect.pm:895
#, c-format
msgid ""
"The following protocols can be used to configure a LAN connection. Please "
"choose the one you want to use"
msgstr ""
-#: network/netconnect.pm:921
+#: network/netconnect.pm:926
#, c-format
msgid ""
"Please enter the IP configuration for this machine.\n"
@@ -10786,198 +10786,198 @@ msgstr ""
"Hər üzv nöqtəli onluq IP şəklində girilməlidir,\n"
"(misal üçün 1.2.3.4)."
-#: network/netconnect.pm:928 standalone/drakconnect:373
+#: network/netconnect.pm:933 standalone/drakconnect:373
#, c-format
msgid "Assign host name from DHCP address"
msgstr "DHCP ünvanı üçün qovşaq adı tə'yin edin"
-#: network/netconnect.pm:929 standalone/drakconnect:375
+#: network/netconnect.pm:934 standalone/drakconnect:375
#, c-format
msgid "DHCP host name"
msgstr "DHCP qovşaq adı"
-#: network/netconnect.pm:934 standalone/drakconnect:321
+#: network/netconnect.pm:939 standalone/drakconnect:321
#: standalone/drakconnect:883 standalone/drakgw:181
#, c-format
msgid "Netmask"
msgstr "Netmask"
-#: network/netconnect.pm:936 standalone/drakconnect:437
+#: network/netconnect.pm:941 standalone/drakconnect:437
#, c-format
msgid "Track network card id (useful for laptops)"
msgstr "Şəbəkə kartının id'sini izlə (laptoplar üçün faydalıdır)"
-#: network/netconnect.pm:937 standalone/drakconnect:438
+#: network/netconnect.pm:942 standalone/drakconnect:438
#, c-format
msgid "Network Hotplugging"
msgstr "Ani Şəbəkə Fəallaşdırılması (Network Hotplugging)"
-#: network/netconnect.pm:939 standalone/drakconnect:432
+#: network/netconnect.pm:944 standalone/drakconnect:432
#, c-format
msgid "Start at boot"
msgstr "Açılışda başlat"
-#: network/netconnect.pm:941 standalone/drakconnect:460
+#: network/netconnect.pm:946 standalone/drakconnect:460
#, fuzzy, c-format
msgid "Metric"
msgstr "məhdudlaşdır"
-#: network/netconnect.pm:942
+#: network/netconnect.pm:947
#, c-format
msgid "Enable IPv6 to IPv4 tunnel"
msgstr ""
-#: network/netconnect.pm:944 standalone/drakconnect:369
+#: network/netconnect.pm:949 standalone/drakconnect:369
#: standalone/drakconnect:886
#, c-format
msgid "DHCP client"
msgstr "DHCP alıcısı"
-#: network/netconnect.pm:946 standalone/drakconnect:379
+#: network/netconnect.pm:951 standalone/drakconnect:379
#, fuzzy, c-format
msgid "DHCP timeout (in seconds)"
msgstr "Bağlantı vaxt dolması (saniyə sonra)"
-#: network/netconnect.pm:947 standalone/drakconnect:382
+#: network/netconnect.pm:952 standalone/drakconnect:382
#, fuzzy, c-format
msgid "Get DNS servers from DHCP"
msgstr "DNS Verici IP'si"
-#: network/netconnect.pm:948 standalone/drakconnect:383
+#: network/netconnect.pm:953 standalone/drakconnect:383
#, c-format
msgid "Get YP servers from DHCP"
msgstr ""
-#: network/netconnect.pm:949 standalone/drakconnect:384
+#: network/netconnect.pm:954 standalone/drakconnect:384
#, c-format
msgid "Get NTPD servers from DHCP"
msgstr ""
-#: network/netconnect.pm:957 printer/printerdrake.pm:1876
+#: network/netconnect.pm:962 printer/printerdrake.pm:1876
#: standalone/drakconnect:676
#, c-format
msgid "IP address should be in format 1.2.3.4"
msgstr "IP ünvanı 1.2.3.4 şəklində olmalıdır"
-#: network/netconnect.pm:961 standalone/drakconnect:680
+#: network/netconnect.pm:966 standalone/drakconnect:680
#, fuzzy, c-format
msgid "Netmask should be in format 255.255.224.0"
msgstr "Şəbəkə keçişi ünvanı 1.2.3.4 şəklində olmalıdır"
-#: network/netconnect.pm:965
+#: network/netconnect.pm:970
#, c-format
msgid "Warning: IP address %s is usually reserved!"
msgstr "Xəbərdarlıq : %s IP ünvanı çox vaxt tutulmuş olur !"
-#: network/netconnect.pm:970 standalone/drakTermServ:1856
+#: network/netconnect.pm:975 standalone/drakTermServ:1856
#: standalone/drakTermServ:1857 standalone/drakTermServ:1858
#, c-format
msgid "%s already in use\n"
msgstr "%s onsuzda istifadədədir\n"
-#: network/netconnect.pm:1010
+#: network/netconnect.pm:1015
#, fuzzy, c-format
msgid "Choose an ndiswrapper driver"
msgstr "Səbəbsiz bir sürücü seçilir"
-#: network/netconnect.pm:1012
+#: network/netconnect.pm:1017
#, c-format
msgid "Use the ndiswrapper driver %s"
msgstr ""
-#: network/netconnect.pm:1012
+#: network/netconnect.pm:1017
#, fuzzy, c-format
msgid "Install a new driver"
msgstr "Sistemin qurulumu"
-#: network/netconnect.pm:1024
+#: network/netconnect.pm:1029
#, c-format
msgid "Select a device:"
msgstr ""
-#: network/netconnect.pm:1053
+#: network/netconnect.pm:1058
#, c-format
msgid "Please enter the wireless parameters for this card:"
msgstr ""
-#: network/netconnect.pm:1056 standalone/drakconnect:404
+#: network/netconnect.pm:1061 standalone/drakconnect:404
#: standalone/drakroam:52
#, c-format
msgid "Operating Mode"
msgstr "İdrə Modu"
-#: network/netconnect.pm:1057
+#: network/netconnect.pm:1062
#, c-format
msgid "Ad-hoc"
msgstr "Ad-hoc"
-#: network/netconnect.pm:1057
+#: network/netconnect.pm:1062
#, c-format
msgid "Managed"
msgstr "İdarə edilən"
-#: network/netconnect.pm:1057
+#: network/netconnect.pm:1062
#, c-format
msgid "Master"
msgstr "Əsas"
-#: network/netconnect.pm:1057
+#: network/netconnect.pm:1062
#, c-format
msgid "Repeater"
msgstr "Təkrarlayıcı"
-#: network/netconnect.pm:1057
+#: network/netconnect.pm:1062
#, c-format
msgid "Secondary"
msgstr "İkinci"
-#: network/netconnect.pm:1057
+#: network/netconnect.pm:1062
#, c-format
msgid "Auto"
msgstr "Avtomatik"
-#: network/netconnect.pm:1060 standalone/drakconnect:405
+#: network/netconnect.pm:1065 standalone/drakconnect:405
#: standalone/drakroam:115
#, c-format
msgid "Network name (ESSID)"
msgstr "Şəbəkə adı (ESSID)"
-#: network/netconnect.pm:1061 standalone/drakroam:116
+#: network/netconnect.pm:1066 standalone/drakroam:116
#, c-format
msgid "Encryption mode"
msgstr ""
-#: network/netconnect.pm:1066
+#: network/netconnect.pm:1071
#, c-format
msgid "Allow access point roaming"
msgstr ""
-#: network/netconnect.pm:1068 standalone/drakconnect:406
+#: network/netconnect.pm:1073 standalone/drakconnect:406
#, c-format
msgid "Network ID"
msgstr "Şəbəkə ID-si"
-#: network/netconnect.pm:1069 standalone/drakconnect:407
+#: network/netconnect.pm:1074 standalone/drakconnect:407
#, c-format
msgid "Operating frequency"
msgstr "İşləmə tezliyi"
-#: network/netconnect.pm:1070 standalone/drakconnect:408
+#: network/netconnect.pm:1075 standalone/drakconnect:408
#, c-format
msgid "Sensitivity threshold"
msgstr "Həssaslıq aralığı"
-#: network/netconnect.pm:1071 standalone/drakconnect:409
+#: network/netconnect.pm:1076 standalone/drakconnect:409
#, c-format
msgid "Bitrate (in b/s)"
msgstr "Vuruş sıxlığı (v/s olaraq)"
-#: network/netconnect.pm:1072 standalone/drakconnect:420
+#: network/netconnect.pm:1077 standalone/drakconnect:420
#, c-format
msgid "RTS/CTS"
msgstr "RTS/CTS"
-#: network/netconnect.pm:1073
+#: network/netconnect.pm:1078
#, c-format
msgid ""
"RTS/CTS adds a handshake before each packet transmission to make sure that "
@@ -10991,17 +10991,17 @@ msgid ""
"or off."
msgstr ""
-#: network/netconnect.pm:1080 standalone/drakconnect:421
+#: network/netconnect.pm:1085 standalone/drakconnect:421
#, c-format
msgid "Fragmentation"
msgstr "Fraqmentasiya"
-#: network/netconnect.pm:1081 standalone/drakconnect:422
+#: network/netconnect.pm:1086 standalone/drakconnect:422
#, c-format
msgid "iwconfig command extra arguments"
msgstr "iwconfig əmri əlavə arqumentləri"
-#: network/netconnect.pm:1082
+#: network/netconnect.pm:1087
#, c-format
msgid ""
"Here, one can configure some extra wireless parameters such as:\n"
@@ -11012,12 +11012,12 @@ msgid ""
msgstr ""
#. -PO: split the "xyz command extra argument" translated string into two lines if it's bigger than the english one
-#: network/netconnect.pm:1089 standalone/drakconnect:423
+#: network/netconnect.pm:1094 standalone/drakconnect:423
#, c-format
msgid "iwspy command extra arguments"
msgstr "iwspy əmri əlavə arqumentləri"
-#: network/netconnect.pm:1090
+#: network/netconnect.pm:1095
#, c-format
msgid ""
"iwspy is used to set a list of addresses in a wireless network\n"
@@ -11029,12 +11029,12 @@ msgid ""
"See iwpspy(8) man page for further information."
msgstr ""
-#: network/netconnect.pm:1099 standalone/drakconnect:424
+#: network/netconnect.pm:1104 standalone/drakconnect:424
#, c-format
msgid "iwpriv command extra arguments"
msgstr "iwpriv əmri əlavə arqumentləri"
-#: network/netconnect.pm:1100
+#: network/netconnect.pm:1105
#, c-format
msgid ""
"iwpriv enable to set up optionals (private) parameters of a wireless "
@@ -11052,7 +11052,7 @@ msgid ""
"See iwpriv(8) man page for further information."
msgstr ""
-#: network/netconnect.pm:1115
+#: network/netconnect.pm:1120
#, c-format
msgid ""
"Freq should have the suffix k, M or G (for example, \"2.46G\" for 2.46 GHz "
@@ -11061,7 +11061,7 @@ msgstr ""
"Tezliyin yanına k, M ya da G şəkilçisi qoyulmalıdır (misal üçün, 2.46 GHz "
"tezlik üçün \"2.46G\" ), ya da lazım olan qədər '0' (sıfır) əlavə edin."
-#: network/netconnect.pm:1119
+#: network/netconnect.pm:1124
#, c-format
msgid ""
"Rate should have the suffix k, M or G (for example, \"11M\" for 11M), or add "
@@ -11070,37 +11070,37 @@ msgstr ""
"Sıxlığın yanına k, M ya da G şəkilçisi qoyulmalıdır (misal üçün, 11M üçün "
"\"11M\" ), ya da lazım olan qədər '0' (sıfır) əlavə edin."
-#: network/netconnect.pm:1162
+#: network/netconnect.pm:1167
#, c-format
msgid "DVB configuration"
msgstr ""
-#: network/netconnect.pm:1163
+#: network/netconnect.pm:1168
#, c-format
msgid "DVB Adapter"
msgstr ""
-#: network/netconnect.pm:1180
+#: network/netconnect.pm:1185
#, c-format
msgid "DVB adapter settings"
msgstr ""
-#: network/netconnect.pm:1183
+#: network/netconnect.pm:1188
#, c-format
msgid "Adapter card"
msgstr ""
-#: network/netconnect.pm:1184
+#: network/netconnect.pm:1189
#, c-format
msgid "Net demux"
msgstr ""
-#: network/netconnect.pm:1185
+#: network/netconnect.pm:1190
#, c-format
msgid "PID"
msgstr "PID"
-#: network/netconnect.pm:1213
+#: network/netconnect.pm:1218
#, c-format
msgid ""
"Please enter your host name.\n"
@@ -11112,67 +11112,67 @@ msgstr ""
"Məsələn``kompüteradı.sahəadı.com''.\n"
"Əgər şəbəkə keçidi istifadə edirsinizsə bunun da IP nömrəsini girməlisiniz."
-#: network/netconnect.pm:1218
+#: network/netconnect.pm:1223
#, c-format
msgid "Last but not least you can also type in your DNS server IP addresses."
msgstr ""
-#: network/netconnect.pm:1220 standalone/drakconnect:991
+#: network/netconnect.pm:1225 standalone/drakconnect:991
#, c-format
msgid "Host name (optional)"
msgstr "Qovşaq adı (arzuya görə)"
-#: network/netconnect.pm:1220 standalone/drakhosts:197
+#: network/netconnect.pm:1225 standalone/drakhosts:197
#, c-format
msgid "Host name"
msgstr "Ev sahibi adı"
-#: network/netconnect.pm:1222
+#: network/netconnect.pm:1227
#, c-format
msgid "DNS server 1"
msgstr "DNS vericisi 1"
-#: network/netconnect.pm:1223
+#: network/netconnect.pm:1228
#, c-format
msgid "DNS server 2"
msgstr "DNS vericisi 2"
-#: network/netconnect.pm:1224
+#: network/netconnect.pm:1229
#, c-format
msgid "DNS server 3"
msgstr "DNS vericisi 3"
-#: network/netconnect.pm:1225
+#: network/netconnect.pm:1230
#, c-format
msgid "Search domain"
msgstr "Axtarış domeni"
-#: network/netconnect.pm:1226
+#: network/netconnect.pm:1231
#, c-format
msgid "By default search domain will be set from the fully-qualified host name"
msgstr ""
-#: network/netconnect.pm:1227
+#: network/netconnect.pm:1232
#, c-format
msgid "Gateway (e.g. %s)"
msgstr "Şəbəkə Keçidi (mis. %s)"
-#: network/netconnect.pm:1229
+#: network/netconnect.pm:1234
#, c-format
msgid "Gateway device"
msgstr "Şəbəkə keçidi avadanlığı"
-#: network/netconnect.pm:1238
+#: network/netconnect.pm:1243
#, c-format
msgid "DNS server address should be in format 1.2.3.4"
msgstr "DNS vericisi ünvanı 1.2.3.4 şəklində olmalıdır"
-#: network/netconnect.pm:1243 standalone/drakconnect:685
+#: network/netconnect.pm:1248 standalone/drakconnect:685
#, c-format
msgid "Gateway address should be in format 1.2.3.4"
msgstr "Şəbəkə keçişi ünvanı 1.2.3.4 şəklində olmalıdır"
-#: network/netconnect.pm:1256
+#: network/netconnect.pm:1261
#, c-format
msgid ""
"If desired, enter a Zeroconf hostname.\n"
@@ -11181,67 +11181,67 @@ msgid ""
"It is not necessary on most networks."
msgstr ""
-#: network/netconnect.pm:1260
+#: network/netconnect.pm:1265
#, c-format
msgid "Zeroconf Host name"
msgstr "Zeroconf Qovşaq adı"
-#: network/netconnect.pm:1263
+#: network/netconnect.pm:1268
#, c-format
msgid "Zeroconf host name must not contain a ."
msgstr "Zeroconf qovşaq adı . (nöqtə) daxil edə bilməz"
-#: network/netconnect.pm:1273
+#: network/netconnect.pm:1278
#, fuzzy, c-format
msgid "Do you want to allow users to start the connection?"
msgstr "Bağlantınızı açılışda başlatmaq istəyirsiniz?"
-#: network/netconnect.pm:1286
+#: network/netconnect.pm:1291
#, c-format
msgid "Do you want to start the connection at boot?"
msgstr "Bağlantınızı açılışda başlatmaq istəyirsiniz?"
-#: network/netconnect.pm:1302
+#: network/netconnect.pm:1307
#, fuzzy, c-format
msgid "Automatically at boot"
msgstr "Açılışda başlat"
-#: network/netconnect.pm:1304
+#: network/netconnect.pm:1309
#, c-format
msgid "By using Net Applet in the system tray"
msgstr ""
-#: network/netconnect.pm:1306
+#: network/netconnect.pm:1311
#, c-format
msgid "Manually (the interface would still be activated at boot)"
msgstr ""
-#: network/netconnect.pm:1315
+#: network/netconnect.pm:1320
#, fuzzy, c-format
msgid "How do you want to dial this connection?"
msgstr "Bağlantınızı açılışda başlatmaq istəyirsiniz?"
-#: network/netconnect.pm:1328
+#: network/netconnect.pm:1333
#, c-format
msgid "Do you want to try to connect to the Internet now?"
msgstr "İndi internetə bağlanmağı sınamaq istəyirsiniz?"
-#: network/netconnect.pm:1336 standalone/drakconnect:1023
+#: network/netconnect.pm:1341 standalone/drakconnect:1023
#, c-format
msgid "Testing your connection..."
msgstr "Bağlantınız sınanır..."
-#: network/netconnect.pm:1361
+#: network/netconnect.pm:1366
#, c-format
msgid "The system is now connected to the Internet."
msgstr "Sistem indi İnternetə bağlıdır."
-#: network/netconnect.pm:1362
+#: network/netconnect.pm:1367
#, c-format
msgid "For security reasons, it will be disconnected now."
msgstr "Təhlükəsizlik səbəbi ilə, indi bağlantı qopacaqdır."
-#: network/netconnect.pm:1363
+#: network/netconnect.pm:1368
#, c-format
msgid ""
"The system does not seem to be connected to the Internet.\n"
@@ -11250,7 +11250,7 @@ msgstr ""
"Sisteminiz İnternetə bağlı görünmür.\n"
"Bağlantınızı yenidən quraşdırın."
-#: network/netconnect.pm:1378
+#: network/netconnect.pm:1383
#, c-format
msgid ""
"Congratulations, the network and Internet configuration is finished.\n"
@@ -11259,7 +11259,7 @@ msgstr ""
"Təbrik edirik, internet və şəbəkə quraşdırılması bitdi.\n"
"\n"
-#: network/netconnect.pm:1381
+#: network/netconnect.pm:1386
#, c-format
msgid ""
"After this is done, we recommend that you restart your X environment to "
@@ -11268,7 +11268,7 @@ msgstr ""
"Bu edildikdən sonra Xdən çıxmağınızı tövsiyyə edirik, yoxsa\n"
"verici adı xəsarətləri meydana gələ bilər."
-#: network/netconnect.pm:1382
+#: network/netconnect.pm:1387
#, c-format
msgid ""
"Problems occurred during configuration.\n"
@@ -11279,28 +11279,28 @@ msgstr ""
"net_monitor ya da mcc vasitəsiylə bağlantınızı sınayın. Əgər "
"bağlantınızyoxdursa, quraşdırmanı yenidən başladın."
-#: network/netconnect.pm:1393
+#: network/netconnect.pm:1398
#, c-format
msgid "(detected on port %s)"
msgstr "(%s qapısında tapıldı)"
#. -PO: here, "(detected)" string will be appended to eg "ADSL connection"
-#: network/netconnect.pm:1395
+#: network/netconnect.pm:1400
#, c-format
msgid "(detected %s)"
msgstr "(%s tapıldı)"
-#: network/netconnect.pm:1395
+#: network/netconnect.pm:1400
#, c-format
msgid "(detected)"
msgstr "(tapıldı)"
-#: network/netconnect.pm:1396
+#: network/netconnect.pm:1401
#, c-format
msgid "Network Configuration"
msgstr "Şəbəkə Quraşdırılması"
-#: network/netconnect.pm:1397
+#: network/netconnect.pm:1402
#, c-format
msgid ""
"Because you are doing a network installation, your network is already "
@@ -11312,12 +11312,12 @@ msgstr ""
"Qurğuları saxlamaq üçün Oldu'ya, İnternet və Şəbəkə qurğularınızı yenidən "
"quraşdırmaq üçün isə Ləğv et'ə basın.\n"
-#: network/netconnect.pm:1400
+#: network/netconnect.pm:1405
#, c-format
msgid "The network needs to be restarted. Do you want to restart it?"
msgstr "Şəbəkə yenidən başladılmalıdır. Yenidən başlatmaq istəyirsiniz?"
-#: network/netconnect.pm:1401
+#: network/netconnect.pm:1406
#, c-format
msgid ""
"A problem occurred while restarting the network: \n"
@@ -11328,7 +11328,7 @@ msgstr ""
"\n"
"%s"
-#: network/netconnect.pm:1402
+#: network/netconnect.pm:1407
#, c-format
msgid ""
"We are now going to configure the %s connection.\n"
@@ -11341,12 +11341,12 @@ msgstr ""
"\n"
"Davam etmək üçün \"%s\" düyməsinə basın."
-#: network/netconnect.pm:1403
+#: network/netconnect.pm:1408
#, c-format
msgid "Configuration is complete, do you want to apply settings?"
msgstr "Quraşdırma qurtardı, dəyişiklikləri tətbiq etmək istəyirsiniz ?"
-#: network/netconnect.pm:1404
+#: network/netconnect.pm:1409
#, c-format
msgid ""
"You have configured multiple ways to connect to the Internet.\n"
@@ -11357,12 +11357,12 @@ msgstr ""
"İstifadə etmək istədiyinizi seçin.\n"
"\n"
-#: network/netconnect.pm:1405
+#: network/netconnect.pm:1410
#, c-format
msgid "Internet connection"
msgstr "İnternet bağlantısı"
-#: network/netconnect.pm:1422
+#: network/netconnect.pm:1427
#, c-format
msgid ""
"An unexpected error has happened:\n"
diff --git a/perl-install/share/po/be.po b/perl-install/share/po/be.po
index bf9a921e7..2a6eb43e2 100644
--- a/perl-install/share/po/be.po
+++ b/perl-install/share/po/be.po